A common question asked by adults who’ve decided they want to switch careers to software engineering is, “Which coding language maximizes my employment potential?”
It’s the wrong question.
What kind of work do you want to do?
One way to get a sense of coding languages that may be useful to learn is to search job postings of popular tech companies. Often these job descriptions include flexible requirements related to lists of the “usual suspects” programming languages. Here’s a 2017 job posting “bullet point requirement” for a software engineering position at Facebook: “Solid software development skills with experience building software developed in (at least one) Python, PHP, C/C++, Ruby, C# or Java.” So the key for students of coding is to master one of the “usual suspects” to get your foot in the door.
Just write quality code
Most managers don’t look for specific languages when hiring entry-level people. They look for candidates with general coding and problem-solving skills demonstrated in any language. Deep expertise in, say, Objective C++ or Java is for senior roles or consulting gigs of certain kinds, where only an expert at a specific language or platform will be able to get things to work.
Otherwise, it doesn’t matter what language(s) you’ve coded in. Compared to human languages, where a fluent English speaker could be utterly unable to communicate with a fluent Mandarin speaker, programming languages don’t have a steep learning curve at all. They’re more alike than different, and not as complicated as non-programmers think. You’ll figure it out on the job, and there are message boards like Stack Overflow where you can ask questions without constantly interrupting your coworkers.
Davin Bentti, VP of Technology at MedTech Exchange, says he doesn’t much care what languages a programmer already knows or not: “The main thing I look for is the ability to write quality code.”
Learn more than one language
Coding earnestly in two or three languages will make you more hirable. Not by giving you twice as many jobs to apply for, but by extending your knowledge and experience beyond a single, small zone of comfort. By learning what’s local, and what’s universal. It’s like taking a year abroad.
“Fanaticism about any one platform or tool is almost always a red flag,” says programmer and polymath Jeremy Bornstein, a former Apple engineer who crafted a fictional humanoid language for author Neal Stephenson’s science-fiction novel Anathem. “They don’t see the gaps in the toolset, so they erroneously believe it to be much more useful than it actually is.”
Often you have to use what you have to use. But MIT computer science professor Hal Abelson, who literally wrote the book on learning to code, teaches students to ask themselves what language is best for the task in front of them, and what special-use languages they might invent themselves to best serve their engineering needs.
Invent your own languages
Inventing a language for a specific task can be less work than using an existing one.
While at Hackbright, Gulnarra Mirzakarimova (a graduate of the program now based in Los Angeles) invented a coding language, Unicorn, for her final Hackbright project.
Coding a new language can also save time and impress your boss! One contributor to this post replaced 2,000 lines of C, which created a product’s built-in menus, with a minimal 25-line configuration file in a very simple language created using Lex and YACC. At build time, the pre-compiler converted the latest config file to thousands of lines of bug-free object-oriented C, popping two dozen control widgets into the interface. When the team’s manager reviewed the custom Lex/YACC code, he was far more impressed than if the C code had been hand-tweaked every time the product’s marketing team changed their minds.
“The important issue is what is worth programming, and what are the main organizational ideas in programs,” Abelson says. “Not the detailed syntax of one programming language or another.”