Author: Bryan Hansen

Early on in my development career I came across a lot of developers who would try and learn multiple languages; at the time, this was typically Java and .Net. I would often ask people as to why they were doing this and usually got a response of, “Well, you never know which language is going to be around so I am going to hedge my bets.”

In the rapidly changing world of software development, it is always confusing as to what you should be learning, what you know well enough, and what you shouldn’t tell people that you know how to do. Although admittedly the last one can be a balance of longevity with security.
So what should you learn?

Fast forward from the early Java and .Net days to today where I have had milk last longer than some JavaScript frameworks. Knowing which technologies to know can be a complex decision, but here are some recommendations based off of various tools and technologies that we see while consulting with different businesses.

First, pick a language. Don’t be the jack-of-all-trades-master-of-none, choose a solid foundation for which to build upon. Java, .Net, Ruby, are all great choices and this is by no means a comprehensive list, but don’t choose something trendy that won’t be here in 2 months. You can also look at a language that supports a specific industry that you want to follow. Python is a great example of a tool that is often used in Dev-ops or QA environments and will continue to be in the industry for years to come. Whichever language you choose though, learn it deep and broad before moving onto other boutique tools.

Second, learn the end-to-end pieces. People will often times gravitate towards one side of development, the front-end, back-end, services, QA, etc…, but know enough of the other parts to be fluent. You may not want to be a DBA, but understand the different JOINS in SQL. Likewise, the UI may just not be your thing, but understand what “this” is in JavaScript.

Third, don’t neglect architecture and design. Concepts like Design Patterns and Architecture are a great way to gain knowledge that will span any language and help with your communication to other developers. When teaching courses on Patterns, I will have developers comment that, “I know the concepts, but didn’t know that it had a name.” Knowing the name can, in some situations, be as important as knowing the concepts. Patterns are a means of communication amongst developers and a great way to explain a concept in any language without having to really know that language.

Fourth, once you have a foundation set, then pick up boutique tools or languages to accent your skills. This is a topic that recently surprised a lot of developers. Currently Angular is a very popular front-end framework and some developers were wanting to just focus on that. When Google announced that they were going to stray very far from the original design for the 2.0 release, this somewhat leveled the playing field for people who were trying to only know and work with it. This is where choosing a solid foundation is important.

Lastly, seek feedback from your peers and get involved with your development community. This will help you to become more self-aware about how well you know the tools that you are working with and whether or not it is time for you to start looking into some of the new sexy boutique tools that are out there. New frameworks are always fun to see what they have maybe done better than previous ones, but often times they can reinvent the wheel and still struggle with the same or other problems that have previously been solved.

Author: Bryan Hansen