As a developer, have you ever written down all of the frameworks, languages, and methodologies you’ve learned by way of experience and schooling? What you may come to realize by doing so is that the long list you’ve just written, while showing the impressive breadth of knowledge you hold, will potentially mean little to you in a measly 12 months. That’s not to say that what you know now won’t be useful for future learnings, but the way you code now will undoubtedly be different once new technologies are born and adopted. In that way, developers are like brain surgeons, constantly learning new ways to perform procedures that build upon their foundational knowledge. The only difference is brain surgeons don’t usually code, and developers typically shy away from performing life-threatening, invasive surgical operations.
Truly, the goal of a developer should not be to master a few languages, but rather to stay up-to-date on new technologies and use the fundamentals of engineering to integrate many languages and technologies together to create a useful and unique end product. More so, a good developer needs to be forward looking, even thinking of ways to perform a function that may not exist.
Keeping the Pace With Hardware
On the basis of Moore’s Law alone, computer-based technology grows at an astounding rate. Assuming the role of the programmer is to produce quality software for the latest hardware, said software should be growing at the same rate, if not greater. Frameworks & Languages evolve, in general, for two reasons: to satisfy a need or to improve upon an existing solution. When what seems like a ‘need’ presents itself, the developer should be deterministic in their decision to adopt or build based on a set of factors unique to their situation. In order for this to be possible, it is important for the developer to stay up-to-date on what frameworks and languages exist and the capabilities of each.
Oftentimes with open-source, the ‘best’ libraries are those with the largest and most active community. Take Cold Fusion and a trivial, modern integration with Google for OAuth for example. A Google search for Cold Fusion integration with Google software(OAuth, Maps, etc.) may return 925,000 hits, but that’s dramatically less than the same search for integrating with Ruby on Rails(6.8 million hits).
Benefitting from Diversified Experience
When it comes to building modern software, a developer with 20 years invested into a single language is probably not the right man for the job. However, that isn’t to say a developer with 6 months of experience in 5 different languages is the man. As a developer, there’s a fine line between spreading yourself too thin and over-investing in what will most likely be obsolete in the near future. Over the years, the priorities of software development have shifted to include UI/UX/Usability in addition to overall functionality and performance as the key factors in determining the quality of the software. Having come from a niche market, the transition to mainstream has forced software to become usable and enjoyable by everyone. The audience and user-base is no longer limited to those in the industry where the technology was originally developed, but it now includes the general public.
Each time we learn a new framework or language, we learn why it was built, and why we’re using it instead of the tried and true solution we trusted last week. This results in improved efficiency, more readable and maintainable code, better attention to quality assurance and improved deployment strategies. The adoption of new libraries and frameworks (as long as the quality is there), allows for the developer to focus on project-specific requirements, such as the user experience, and to do so in a much more productive manner.
Coding With An Open Mind
For a developer, choosing the right technology for a project isn’t easy. The stakes are high, there’s a seemingly endless array of requirements and everyone has an opinion about the “best” solution. An experienced developer should have the capacity to lead with an open mind, while carefully considering the technology they’ve worked with in the past to select the best option. A lot of developers might opt to use “what they know best” or the latest library trending on Hacker News. While “what the developer knows best” may be a factor in deciding which tech to use, it shouldn’t be the only one. A great developer should never be married to a particular language, framework, library or methodology until they have made an unbiased analysis of the project in question. Making this analysis is another post entirely, but having an appetite for knowledge and ceaselessly searching out new developments and improvements can go a long way in making the process easier.