What languages does it take to be a great developer?
Today’s list of programming languages is about a mile long – each associated with a myriad of tools and platforms with various levels of adoption. The languages landscape has changed significantly, which is a blessing and a curse.
There was a time when it was easy to decipher how many and what languages a developer needs to know and you could easily get away with only knowing one or two. In today’s dynamic and data-driven web climates, it can be difficult to keep up as the change of pace continues to accelerate. So how many languages does a developer really need in this day and age to succeed? What programming background do companies look for in prospective candidates?
What’s needed to be a good developer?
That being said, it’s important to look at a developer’s career differently than a typical job on the market. Traditionally, prospective employees are evaluated by years of experience; however, in the developer world, someone with twenty years’ experience in a specific language could be viewed as far less valuable than a developer with fewer years of experience but with a broader understanding of more languages. The latter is more adaptable to today’s climate of rapid growth and change.
The educational pearl “The Structure and Interpretation of the Computer Science Curriculum” suggests first-year students should learn the use of two language types throughout their first and second courses: the first course should teach a simple functional language (for which they recommend Scheme as a good basis that beginners can handle); the second should progress to a complex object-oriented language (suggesting an industrially fashionable language such as C# or Java).
This method bases itself on the idea of learning languages from a landscape of different fundamental categories, as opposed to knowing several languages within a single category that are all very much alike. Once these two types of languages have been mastered, learning new ones becomes somewhat easier, because a lot of the concepts will be familiar – at least at a high level. But being great with languages is only the beginning.
What’s needed to be a great developer?
Having the knowledge of several languages pertaining to different solution types provides a solid foundation for a developer to build a promising and profitable career. But to be a great developer goes far beyond a numbered list of languages on your resume. Being a great developer involves a level of understanding about not only the language you’re working in, but the goals of your company or project. That high level thinking can then help you ask, “Should I use a new language? Would it help the company? And would my colleagues adopt it?”
Be sure to consider all the facets that need to be included and all the issues that need to be fixed in your tools, and don’t forget to account for unpredictable things that will undoubtedly happen. Existing languages may already suit all your needs – and that’s great – yet increasingly often, projects and teams are created embedded DSLs in order to provide what is in effect a tailored, specialised “mini-language” within an existing one.
You’ll also want to be proactive with your team. Think about the tools you collectively need to make sure the organisation is an analytically insightful and smooth-running success. You need to understand other developers and almost see them mentally as “clients” – know the breadth of how developers think and how they build for multiple platforms, so you can help make tools that make their and your lives easier.
Being a great developer entails thinking about the problem and goals first, then how you can use the right language to craft the best possible solution. At Jut, we took this to the extreme by creating a language specifically for stream processing – Juttle.
Now go forth and conquer
What this boils down to is that it’s not a matter of knowing a set number of languages in order to be a great developer. Technology evolves in a matter of weeks and by the time you become an expert in a particular technology, it could already be considered obsolete.
There will continue to be a constant influx of new languages, but once you’re equipped with the basics, great developers will think of new languages as a means to an end – to do their jobs better and make their company better, and build great products along the way.