
Ask HN: What does a C++ fullstack mean to you? - rvalue
Recently I was contacted by a recruiter on LinkedIn who asked if I was open to a C++ job.<p>These are his words &quot;I wanted to send a quick message to see if you or anyone you know might be interested in a Direct Hire full stack C++ job&quot;<p>Doesn&#x27;t  fullstack mean having experience in different domains like frontend, backend, machine learning, data mining, mobile dev, operations etc. ?
======
rpeden
Clearly, it means you write database logic using C++ extended stored
procedures [1], business logic in C++ middleware using something like CppCMS
[2], and then write all your front end code in C++ and deploy it to the
browser using Emscripten [3]

Realistically, though, it's probably just a misinformed/careless/hopeless
recruiter. Most likely misinformed, or inadequately informed. The recruiter's
client probably has something specific in mind when if the asked for a 'full
stack' C++ developer.

Since you'll find C++ running in everything from embedded devices to phones to
cars to airplanes to mainframes, there are so many 'stacks' that one could be
referring to when talking about 'full stack'. Usually, full stack developer is
used to describe someone who does both front and back end web development.
While you _could_ be a full stack dev who writes C++ on the back end of a web
app and JS on the front end, it's not a very common combination.

[1] [http://www.codeproject.com/Articles/8571/Writing-Extended-
St...](http://www.codeproject.com/Articles/8571/Writing-Extended-Stored-
Procedures-in-C) [2]
[http://cppcms.com/wikipp/en/page/main](http://cppcms.com/wikipp/en/page/main)
[3]
[https://github.com/kripken/emscripten](https://github.com/kripken/emscripten)

~~~
rvalue
I agree, the recruiter clearly did not have the right idea or did not present
it well.

Here is the full extent of the "Desired" requirements from the message which
are usually supplemented by minimum requirements.

    
    
      * Expert experience in Linux OS
      * Experience in embedded system design, bring-up, debugging, analysis and performance tuning.
      * An understanding of the design issues and tradeoffs at the hardware/software boundary in real-time, high-performance systems
      * Expert C/C++ programming and problem solving skills.
      * Python and Java experience desired but not required.
      * Database (SQL) experience desired but not required.
      * Multithreaded Linux systems programming experience
      * Strong troubleshooting skills on hardware, Linux configuration, peripheral device and network configuration
      * Knowledge of embedded programming environment using open source tools.
      * Expert skills in debugging, troubleshooting, and system optimization
      * Well-versed in Unit Test Creation and working with continuous Integration environments (Jenkins)
      * Experience with, knowledge of and discipline in standard System Development Lifecycle practices including translation of business requirements into a System Design document, Source Code Version Control (Subversion, Git, etc.), and maintenance.
      * Experience working in an Agile environment (Scrum, Lean or XP)
      * Experience with Test-Driven Development desired but noe required.
      * Experience conducting and participating in Code Review sessions
      * Excellent problem solving skills and strong verbal/written communication skills
    

I searched for these on Google and found multiple posts with almost exact
match.

This begs the question, are majority of the job positions out there an over
exaggeration of the requirements?

Should one apply to job postings even if they do not possess all the required
skills?

~~~
MaulingMonkey
> This begs the question, are majority of the job positions out there an over
> exaggeration of the requirements?

I read "desired" requirements as "here's the magic pony that could immediately
fill any void with no ramp up time in our org" \- and is likely out of their
price range ;). It's not even that they're exaggerating per se, it's just that
everyone wants everything. Doesn't mean they won't be happy with someone who
only knows half the stuff - or less.

> Should one apply to job postings even if they do not possess all the
> required skills?

Worst case scenario, they'll simply say no.

So... sure, why not? Even if their list of requirements really _is_ a hard
list of hard requirements for that position, it's quite possible that's not
the only position they're hiring for. And even if it's normally a hard list,
if they happen to be short a couple devs, they may care a lot more about not
slipping further behind schedule than finding multiple perfect within-budget
matches. Most are reasonable enough and realize "perfect is the enemy of good
enough", so to speak.

Now, personally, I prefer to be up front about any skill gaps - this way I
don't waste my time nor theirs if I'm not enough of a fit. I'm sure one could
debate how wise this is, but it's worked out okay for me so far - maybe works
out as something similar to a humblebrag? Meh.

For example, I'd point out my linux experience is moderate at best, and stale
by a few years - unless you're counting "adb shell"ing into Android phones, or
using the command line to script builds for iOS on OS X. I've only written a
few hundred LOC of python, and maybe a few KLOC of Java and refactoring Java -
all Android. And the only SQL I know is "give me parameterized queries or give
me death". I didn't even remember to add password salt or password hash
version fields into my last whiteboard schema, IIRC!

------
wayn3
You don't know C++ full stack? Who's on the outside now.

You are witnessing the inception of a meme.

honestly, this means to me that the recruiter doesn't know what he's talking
about.

------
MaulingMonkey
It could mean they're expecting someone to write C++ for their client and
server, work with a database, do fuzzing and other security testing, have some
sysadmin experience, the works.

It could mean installing wordpress plugins, and someone overheard someone else
mentioning they were thinking about doing a new project in C++ and decided to
list that in the job posting in case it comes in handy.

It's too vague to mean anything to me.

You could ask the recruiter what they mean. You could go with a vague
noncommital "Depends on the job/what you mean by full stack - but sure." You
could do both. You could do neither, and avoid going through recruiters.

~~~
rvalue
+1 to that

------
SamReidHughes
It surely means you have experience using C++ to make web browsers, JITted
JavaScript implementations, web servers, database engines, and PhotoShop.

------
liquidcool
I've discovered a high percentage of recruiters think "full stack" is a thing
on its own, and if you ask them which stack they don't know what you mean.
"Um... the full one? I also hear a lot about stack overflow, maybe that's what
they want. Also, pancakes... I'll have to get back to you."

------
koder2016
For him "full stack" means "good". E.g. which smartphone do you want? A pink
one! It's that kind of IQ and erudition level.

------
brnoenfield
"I want someone who can do everything."

------
joeld42
My guess would be it means server-side work that involved c++.

------
polarcrilex
Found the job posting, "Sr Engineer - Embedded Software in Santa Barbara, CA
at Arthrex".

Here's the full text:

JOB DESCRIPTION

Requisition ID: 24241

Title: Sr Engineer - Embedded Software

Division: Arthrex California Tech

Location: ACT Santa Barbara, CA

We at Arthrex are looking for an amazing Embedded Application Developer with a
solid background in modern embedded application development to join our
growing team. We are looking for someone who is self-motivated and who strives
for greatness in all aspects of embedded development from low level systems
all the way to front-end development. You will be joining a talented group of
software developers at a global medical device company and deliver products
and tools that help surgeons and their staffs provide great surgical outcomes
for their patients. This is an opportunity to make an immediate and lasting
impact in all phases of the application development lifecycle.

Candidates must take extreme pride in delivering software that provides great
value, is scalable, and easy to maintain. Applications are typically written
for Linux in C/C++, but we do also use some Python and Java (specifically
Android) for our User Interface. We are big proponents of open source
technologies and other technologies that we are currently using include
SQLite, Redis and JSON. An ideal candidate will feel comfortable contributing
to all aspects of our stack. We work closely with all members of the larger
team including Operations, Mobile Developers, UI/UX, QA and project management
teams.

About You:

Passionate about software development, specifically web technologies and web
services Motivated, loves to learn, and thrives in a dynamic environment Has a
track record of building applications and bringing them to production Wants to
be part of a high performing team that makes a difference Some Details:

Likes to take an active role in all stages of the application development:
conceptualize, design, build, test and release Excellent C/C++ programming
language skills with Python experience a plus Strong experience with multi-
threaded application design Knowledge of embedded programming environment with
open source tools Strong Linux operating system skills Java programming for
Android would be great, but not required Comfortable using Git Experience with
Agile development methodologies About Us

Arthrex is a global medical device company and a leader in new product
development and medical education in orthopedics. As the software development
team, we create innovative products to help support the company in education
and research opportunities for our customers.

Main Objective:

Responsible for full life cycle development of Class I and II medical devices,
which includes architectural design, interface design, analysis and
simulation, prototyping, design assurance testing, development through
production release, and product maintenance. Recognized as technical leader
and resource.

Essential Duties and Responsibilities:

Lead software architect and specification developer to ensure robust,
sustainable and scalable design approaches that meet design intent. Lead the
design & development of various subsystems of complex multi-process
architecture. Effectively identify & mitigate potential risks during course of
projects Define & develop reliable, efficient & reusable software components
in C/C++ for Linux targets Identify key system performance bottlenecks,
propose effective and scalable strategies to address them, and incorporate
these strategies into a programming environment, with emphasis on run-time
software layers including drivers, middleware, and APIs. Architect, develop
and maintain defined software interfaces with hardware components and
firmware. Design optimization through modeling, simulation and analysis.
Experience with agile methods as they relate to software development and SCM
practices. Input and direction to other members of the engineering staff to
assist them in their assignments and provide them with learning experience.
Support the development team to ensure the team exceeds expectations &
delivers high quality solutions on schedule. Coordination with in-house and
contract developers in distributed development environment. Provide expert
consultation in one or more areas of design, development, and implementation
of technical products or systems. Recommend alterations to development and
design to improve quality of products and/or procedures. Support development
of budgets and timelines for projects. Key technical contributor to
multifunctional new product project teams through project technical
feasibility analysis, initiation, planning, execution, and termination,
adhering closely to project timeline and budget. Support design history file
deliverables for assigned projects, adhering to design control procedures.
Provide Regulatory department technical support for assigned projects as
needed. Support Marketing and Product Management with technical information to
be used for training and marketing of assigned products. Support surgeon and
distributor customers by training and/or educating on technical aspects of
assigned products as needed. Report progress and status of assigned projects
on a timely basis. Some required domestic travel to attend trade shows and
visit established accounts as well as prospective accounts. International
travel may be required. Incidental Duties:

The above statements describe the general nature and level of work being
performed in this job. They are not intended to be an exhaustive list of all
duties, and indeed additional responsibilities may be assigned, as required,
by management.

Education and Experience:

Minimum of a Bachelor of Science Degree in Computer Science or a related
technical discipline required; MS preferred.

Minimum of 7 years of relevant product development experience is required.

Knowledge and Skill Requirements/Specialized Courses and/or Training:

Expert experience in Linux OS Experience in embedded system design, bring-up,
debugging, analysis and performance tuning. An understanding of the design
issues and tradeoffs at the hardware/software boundary in real-time, high-
performance systems Expert C/C++ programming and problem solving skills.
Python and Java experience desired but not required. Database (SQL) experience
desired but not required. Multithreaded Linux systems programming experience
Strong troubleshooting skills on hardware, Linux configuration, peripheral
device and network configuration Knowledge of embedded programming environment
using open source tools. Expert skills in debugging, troubleshooting, and
system optimization Well-versed in Unit Test Creation and working with
continuous Integration environments (Jenkins) Experience with, knowledge of
and discipline in standard System Development Lifecycle practices including
translation of business requirements into a System Design document, Source
Code Version Control (Subversion, Git, etc.), and maintenance. Experience
working in an Agile environment (Scrum, Lean or XP) Experience with Test-
Driven Development desired but noe required. Experience conducting and
participating in Code Review sessions Excellent problem solving skills and
strong verbal/written communication skills Machine, Tools, and/or Equipment
Skills:

Knowledge of surgical equipment and instrumentation, hardware deguggers,
software development environments and degugging tools, static code analysis,
network protocols and hardware interfaces..

Bench top testing and troubleshooting with typical lab equipment.

Reasoning Ability:

Ability to define problems, collect data, establish facts, and draw valid
conclusions. Ability to interpret an extensive variety of technical
instructions in mathematical or diagram form and deal with several abstract
and concrete variables.

Mathematical Skills

Ability to comprehend and apply mathematical principles to the degree required
to perform the job based upon job requirements.

Language and Communication Skills:

Ability to comprehend and apply language skills to the degree required to
perform the job based upon the job requirements listed above. Ability to
verbally communicate ideas and issues effectively to other team members and
management. Ability to write and record data and information as required by
procedures.

All qualified applicants will receive consideration for employment without
regard to race, color, religion, sex, sexual orientation, gender identity,
national origin, disability or protected veteran status.

