In-demand software developers are highly sought after, and employers compete for talent with attractive compensation packages (they pay a lot!) and exciting work environments with flexible work schedules. As you’re vying to be at-bat for a hot tech company, “tricking your way” into a job offer might sound like a good idea, but it’s one of the worst things you could possibly do. Falsely advertising your skill level to get a job will only guarantee that you’ll be unhappy and unable to live up to expectations.
So how do you become an in-demand developer with your actual skill set? The answer might surprise you: what employers are looking for is likely very different from what you’re expecting!
Technology evolves quickly!
Sometimes, learning to code can feel like an echo chamber where everyone talks about how powerful the latest and greatest thing is. A minute ago it was AngularJS. Today, Angular is old news and ReactJS is the new “in” technology.
You can rest assured that in no time, React will be out of vogue and there will be some other hot technology.
Regardless, it can feel like you were trying to learn how to ride a horse a week before the car was invented.
Chasing the flavor of the week is a futile task, it’s not uncommon to learn a technology only to find it’s no longer “the cool thing” anymore. Luckily for us, employers are generally less interested in your knowledge about a specific tool – but rather a more important, higher-level skill.
Being an adaptable programmer.
Adaptable programmers might not know every single one of the latest technologies, but what they do know is more important: how to break a problem’s solution down into a series of steps that can be completed by a computer program, and translate that into commands that the computer can understand.
Employers are investing in entry-level programmers for the long haul, and they are hoping new hires will stay with the company for a year or longer. Only having one tool in your toolbox might be acceptable today, but what about a year from now when things are different?
Rather than learn the coolest new buzzword – in-demand programmers play the game a little differently, in order to maximize for adaptability.
What all in-demand programmers know
All in-demand programmers are familiar with the fundamentals of programming. Things that have lasted the tests of time. These things will likely stay true regardless of the changes in the programming ecosystem.
The programming language C, which is still used today, was created over 40 years ago, and resembles plenty of the newer, more modern programming languages too. And plenty of things that programmers learned 40 years ago are still true and will continue to be true… forever.
These timeless lessons are what in-demand developers know. Since technology evolves so quickly, hiring someone who is a whiz at the current fad is a lot less valuable than hiring someone who is adaptable, who is capable of working in a variety of environments. Just like building skyscrapers, it’s the foundation of underlying skills that allows you to build up to impressive heights as a programmer.
This is what interviewers really care about. Is there a strong foundation in place, and will you be able to quickly learn whatever is thrown at you?
Let’s break down the skills you should acquire to become the coveted adaptable programmer and to be able to solve any problems the world throws at you.
Skill programming in a raw programming language
Many technologies you can learn (think: Rails, jQuery, Angular, ReactJS, etc.) will provide a certain way to solve many of the problems you’ll face in web development. For 90% of the problems you’ll face, you’ll be able to find an elegant solution that is easy to solve using a framework; problems that can be solved with something like 1 line of code.
These tools are awesome, and make our lives as developers SO MUCH easier.
You can think of these tools like stencils that are used to draw a picture. If you have a stencil for a cat, you can probably draw a picture of a cat quickly and easily any time you need to.
The remaining problems (the other 10%) are ones that these tools don’t provide a built-in solution for. Although these problems are generally only a small percentage of the problems you’ll face, you’ll often have to write dozens, or even hundreds of lines of code to do the tasks, and the framework won’t be able to help you much. As a result, this will generally be where most of your time is spent – because the other problems are just so easy to solve.
Think of it like needing to draw a picture of a duck-horse hybrid, for which a stencil does not exist.
Being able to use a certain framework is valuable, but being a “programmer,” who is able to take any problem and solve it without the use of a cookie-cutter solution is what is actually in demand.
The rule of thumb for hiring managers is:
Once you’ve learned one framework, you’ll likely pick up all other frameworks pretty quickly.
But what is more interesting is that you can solve the harder problems – the ones for which there are no cookie-cutter solutions. Or in other words, you are a programmer.
The only way to pick up these programming skills is to solve problems with plain programming language. In general, many developers will call this a skill in “algorithms.”
This means that while you’re learning to code, you should spend a good deal of time solving coding challenges that stretch your programming knowledge (harder challenges), not just the problems that are easiest to solve. After learning how to break down complicated problems (and convert the pieces into steps that computer programs are able to execute), you’ll learn to be an adaptable programmer.
And in general, learning your first programming language will be the hardest, because you’ll not only need to learn the language, you’ll also need to learn the logic of breaking problems down to be solvable by computers. Once you’re strong in one programming language, picking up other programming languages is quite easy.
That’s why in the interview process, you’ll be presented with problems for which there is no cookie-cutter solution, and you’ll have to craft your own solution. Many times the interviewer won’t even care what programming language you use – even if they don’t use that programming language at the company.
Data structures are used all the time when writing complicated programs. The term “Data Structure” generally refers to “the way a computer program can organize a bunch of stuff.”
There are a handful of data structures that are used all the time by computer programs. Mastering how to use them is critical in gaining as a growing programmer. Here’s a list of some of the data structures you’ll be expected to understand in the technical interview.
- Hash Tables (aka Dictionaries)
- Linked Lists
- Priority Queues
You should know what the most commonly used data structures are, how to use them, and when you would want to use each of them. Not only will knowing these terms allow you to properly communicate like a developer, but these are the right tools to use for many problems.
These concepts are so important and useful, and they transcend all fads – regardless of what the flavor of the week is, it will be important to know these data structures and how to use them.
Big Oh Notation
Big Oh notation is something that is taught in traditional Computer Science degrees, and that comes up all the time on technical interviews (really like 4 out of 5 interviews). Big Oh notation is a theoretical way to compare how fast one algorithm will run in comparison to other algorithms.
Not only should you expect to have to solve an arbitrary coding challenge with a dry-erase marker on a whiteboard, but you also need to be able to analyze your code and explain how efficient it is in comparison to other algorithms. That’s what Big Oh notation will allow you to do.
After you analyze the code you’ve written, the next step is usually “can you make this code more efficient?”
Knowing this fuzzy theoretical stuff is incredibly important for when you write a computer program, and find that it runs too slow and you need to make it faster. There is a science (computer science!) that you can apply to programs to understand why they’re slow, and how to make them faster.
That’s why hiring managers will consistently make sure you know about this in the technical interview.
(Despite being a bit theoretical, it’s pretty easy to learn – it’s actually kind of silly how important it is in the technical interview.)
Interviewing is Really Like a Dance
Sometimes, you’ll be asked questions that the hiring manager expects you’ve been asked before, simply because the same handful of technical questions are asked all the time. Really, what they’re testing is if you’ve been interviewed enough times to know ‘the game.’
These are questions like “why are manhole covers round?”, the silly XOR trick, and even the FizzBuzz problem. After a while, it can feel like you’re going on autopilot in the technical interview. But Jeff Atwood points out an astonishing fact:
A surprisingly large fraction of applicants, even those with master’s degrees and PhDs in computer science, fail during interviews when asked to carry out basic programming tasks.
Filtering out unqualified candidates is hard work for teams hiring software engineers when the same handful of tactics is used across the board.
There are certain other skills that are important to learn as well on the quest to becoming an in-demand developer. Companies compete to hire those who have:
- Experience working on a development team, and especially the interpersonal skills required to build software with other people
- Soft skills
- “Culture fit”
…and a number of other criteria as well. But competent programmers who are adaptable to changes in the environment will always be in-demand, because this type of developer remains skilled in spite of trends big and small in the programming landscape.
Using the cool new trend isn’t always a bad idea…
You should choose the technologies you want to use based on the problems they solve and because you don’t want to program without them – not because it’s the only thing you know how to use.
You shouldn’t choose the technology you want to learn based on things like number of Google search results or average starting salary, or because you think it will make you a more ‘in-demand programmer.’
An adaptable programmer is capable of accepting any open programming position regardless of the language or frameworks used. As such, this means the job market is many times larger than it is for someone who is only open to a small percentage of the positions out there.
When you’re learning to code, it certainly makes sense to spend time learning to use the practical tools that you’ll be using on the job – but make sure not to neglect learning the timeless skills. Learning the things that don’t change and truly mastering a programming language and problem solving will make you a developer who will always be in demand.
Learn more about the interview from three of our alumni who shared their advice for landing your first position as a web developer.