top | item 12868607

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

11 points| rvalue | 9 years ago | reply

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

14 comments

order
[+] rpeden|9 years ago|reply
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

[+] rvalue|9 years ago|reply
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?

[+] wayn3|9 years ago|reply
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|9 years ago|reply
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.

[+] SamReidHughes|9 years ago|reply
It surely means you have experience using C++ to make web browsers, JITted JavaScript implementations, web servers, database engines, and PhotoShop.
[+] liquidcool|9 years ago|reply
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|9 years ago|reply
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.
[+] joeld42|9 years ago|reply
My guess would be it means server-side work that involved c++.
[+] polarcrilex|9 years ago|reply
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.