There’s always a market for great developers, but landing a dream job at an innovative company with good tech and top-end comp demands more than a stint at coding bootcamp or even a CS degree. Successful engineers are lifelong learners, curious tinkerers and creative problem solvers, fascinated not only with their own areas of expertise but the world at large.
Of course, those qualities aren’t exactly actionable. So what, specifically, delineates an elite developer from the rest of the crowd? Here are a few tips to help stay ahead of the curve.
1. Don’t market yourself as a one-trick pony
Long gone are the days job candidates could impress prospective employers by selling themselves as a “C# developer” or “Java specialist.” Today’s tech landscape requires flexibility, and for developers, that means staying language agnostic. Sure, everyone has preferences and expertise in certain areas over others, but the key is to frame those particulars as strengths rather than limitations.
Employers want engineers open to learning new skills, and ones that are adept at doing so. Having a breadth of quality work on GitHub is a great way to demonstrate this.
2. Understand the fundamentals
Learning a programming language is not the same as learning how to program. The ability to identify problems and visualize elegant solutions is at the heart of what it means to be a great developer. An algorithm is essentially a logic problem and no matter how complex the solution, a developer should be able to diagram it on a whiteboard and explain it in plain English to the intern. There’ll be plenty of time to master frameworks, languages and other tools, but any problem should first be able to be solved in the abstract.
3. Learning a framework is great; learning the underlying language is better
Frameworks come and go, even ones as popular as Ruby on Rails. And while Rails will probably be a go-to for the vast majority of large-scale web apps, sometimes a simpler, more lightweight framework like Sinatra or Volt can save time while delivering more than sufficient functionality. By taking the effort to learn Ruby or any underlying language, developers have a much easier time pivoting between frameworks.
4. Branch out across tiers
It’s debatable whether it’s still possible to be an effective full-stack developer. But the rise of DevOps culture and the increasing ubiquity of Platform as a Service (PaaS) solutions like Heroku and Amazon’s Elastic Beanstalk have greatly narrowed the divide between the client and server side. Tasks like provisioning new server capacity are rarely handled by specialists anymore since they can be largely automated through cloud services. It’s definitely a good idea to become familiar with a few.
At the same time, PaaS isn’t an excuse for not having a basic grasp of the OS kernel. Just because something is automated, doesn’t mean it can’t break. And when it does, someone better have the skills to identify the issue and correct it.
5. Recognize where technology is going
Choosing an area of expertise is like placing a bet on the future of technology. Becoming a mainframe developer 15 years ago would have been shortsighted, just as becoming a system administrator today will likely lead to a dead-end career.
Think critically about where tech is going. Platform-specific languages like Swift are hot at the moment, but as apps become increasingly web-based, Swift will probably be relegated to areas like mobile game development, while everything else shifts to HTML5 and other cross-platform languages.