Ask HN: What does a C++ fullstack mean to you?

11 points by rvalue ↗ HN
Recently I was contacted by a recruiter on LinkedIn who asked if I was open to a C++ job.

These are his words "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"

Doesn't fullstack mean having experience in different domains like frontend, backend, machine learning, data mining, mobile dev, operations etc. ?

16 comments

[ 9.5 ms ] story [ 73.8 ms ] thread
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.

It surely means you have experience using C++ to make web browsers, JITted JavaScript implementations, web servers, database engines, and PhotoShop.
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.
My guess would be it means server-side work that involved c++.
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... [2] http://cppcms.com/wikipp/en/page/main [3] https://github.com/kripken/emscripten

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?

> 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!

job ads are wish lists. if you show up ticking all minimum requirements and preferred qualifications, they first thing they'll wonder about is whether you're not blatantly overqualified.

its always expected that you "grow into" the requirements somewhat.

You'd be surprised (or maybe not ;-) how often a hiring mgr copies and pastes from some other job description he saw somewhere else.
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.

(comment deleted)
(comment deleted)
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...

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."