In today’s landscape of “ease of use”, what with platforms like Unity and others that make development even easier to get into, you often run into developers who fit into a template. Many are exceptionally skilled in the nitty-gritty aspects of coding but lack in people skills. Having to coax a developer into thinking in a user-centric way when all their career life has been spent working alone can be detrimental to the project and the team in general.
Now it begs the question, “what does it take to be a great developer?” as development get easier to the point where non-tech-savvy people can build plenty of things without touching a single line of code. The answer is to rise above the “IT Crowd” with a few tweaks in mentality.
The Polarized Industry
It’s all easier said than done, of course. Employers urge developers toward the human side of development, while impeccable knowledge of the full technology stack is indispensable.
The DevOps culture highlights the importance of the latter, since understanding more than the files you’re creating is just as important as turning in work on time. And the anthropological side is discussed at length from books such as the The Passionate Programmer. Employers will be hard-pressed to find a developer who is strong in both aspects so working towards proficiency in both can surely give you an edge.
Emphasis on Communication
Humans will always benefit from your work, and everything is communication in this industry. While a great understanding of the technical side is advantageous, practice always trumps theory. Understanding the real world is just as important as knowing your way around a language or infrastructure. When you think about it, you will notice the disparity between developers who can slog through code and those who can create truly meaningful software.
It isn’t always the fault of the bookish developer, because many come from solitary work environments, having been kept away from users and their real-world requirements. There are also some who are stuck with decade-old tech because it’s what their company uses. This lends to an inflexible career path that will inevitably lead to unhappiness and inability to produce stellar results.
People are People
A great developer knows not only the code but the business they work in as well. They know the operational requirements and business rules, because being ignorant of it will result in code that does not fix a single problem.
There is no single profession that does not require human interaction, so it should logically follow that the ability to understand and communicate with others makes you an asset. Focusing solely on the lines in front of you while being apathetic of what you can’t see or hear is dangerous. On the other hand, sitting with a programmer who internalizes the business is what employers look for. A developer who knows how end users interact with the DB and how it may evolve is a gem in a haystack and, put simply, will be the one who gets the right things done.
A bookish developer may turn in beautiful lines of complex code full of workarounds, but one who gives a simple, elegant fix is much more valuable.
Humanity got to the Information Age by adapting quickly, which is why you should never stop learning. Continuously up your game by learning new skills and never slowing down. Learning new things quickly is mandatory for programmers, at least for those who aspire towards greatness, and it allows for implementing new features on an existing product, or just for returning with amazing results for a new project. A great developer will take on a project solely for the new things they learn from it, and the resulting knowledge is much more valuable than what a 20-minute tutorial can provide.
Know From the Ground Up
Creating great software is only one side of the story, and knowing exactly what you need to fix problems will make you a well-rounded developer who will always be on anyone’s shortlist. If you work with Java, understand how the Java Runtime Environment works. For Ruby, then knowing how the Ruby Interpreter works is essential. Study the source code for the corresponding run-time environment so you can fix problems from the ground up instead of relying on trial and error for the whole troubleshooting process.
In the end, even if you manage to land a position for a project, your weaknesses will show in how you approach problems. A stellar developer writes meaningful code that solves a problem, works well with others, and conquers obstacles with deep knowledge of the tools he uses.