Tuesday, October 13, 2015

What Language Should I Learn?

As a technical recruiter I often am asked about what language is in demand among employers in the marketplace. The answer to this straight-forward question is complex and worth discussion.

The short answer is "lots of them." The long answer starts with an understanding of trends in technology and how business is "consuming' technical services. To do that, I'll unpack the question beyond "what language" into a handful of categories that hit both core knowledge and trends in today's technology landscape.

Application Development

If you plan on developing applications you need to know an object oriented language. Software is not built in a vacuum so you need to understand design patterns, composition, inheritance, and delegation principles, polymorphism, class and object development and so much more. Some Computer Science programs still teach C++, but at this point C++ has more academic than enterprise value. Java & C# are the most prevalent "low level" OO languages in the marketplace today. I say "today" because Python, Swift, PHP, Objective-C, and even JavaScript support OO design & development principles.

Bottom line? Learn object oriented design & development principles and it will be easier to explore different languages and platforms

Mobile First Development

Earlier this year the number of "mobile only" internet users surpassed the number of "desktop only" users. We are not connecting to the internet via a desktop / laptop anymore. We've had smart phones and tablets for nearly a decade now, but mobile is reaching well beyond our phones. Watches, televisions, and a whole host of other "internet enabled" devices (including our homes, cars, and appliances) are hitting the market at an astounding rate.

Developers MUST learn mobile first development strategies and the core HTML5 / CSS3 /JavaScript tools that make this possible. Today angular.js, node.js, Bootstrap, LESS, SASS, and a host of other technologies are in the marketplace.

If you're familiar with the Gartner Hype Cycle you know there's a never-ending cycle to supplement (if not outright replace) these tools. Keep an eye on what Google, Amazon, Twitter, and other technology leaders are doing in this space.

Bottom Line? You need to know how to develop applications using a mobile first strategy, and you need to stay on top of the technology & tools that enable mobile first development.

Service Oriented Development

Why re-invent the wheel over and over? Service Oriented Architecture allows developers to take advantage of systems and data that is already in place. Developers need to be versed in web services and service oriented architecture within the ecosystem of an individual company.

In addition, developers need to follow IaaS and PaaS trends (ahh, the "cloud.") Amazon has a complete development platform where processing power and storage can be turned on and off with the flip of a switch. Microsoft has Azure, Google has their cloud. More and more enterprises will be moving to these platforms as processing power becomes cheaper and human capital to run the infrastructure and platforms becomes more expensive.

Bottom Line? Traditional means of developing and delivering software are changing dramatically & software developers need to be on top of it.

Data Development

Data is the lifeblood of business. Decisions are based on "the numbers." The technical team is expected to store & retrieve, manipulate & move, scrub & clean, slice & dice, and present data to the user via desktop apps, browser, Excel & Access, phone/tablet, and coming soon to a refrigerator (you know some mucky-muck C level guy is going to look at that screen and wonder how they can get the day's sales forecast delivered to the Viking double door.)

Traditional RDBMS platforms (SQL Server, Oracle, MySQL, PostgreSQL, etc...) aren't going anywhere - it's especially important for everyone developing software to understand basic relational data structure. However, today's technology has opened a floodgate of tools business has embraced to leverage their data. There's a plethora of EDW / Business Intelligence tools (OBIEE, MSBI, Informatica, SAPBI, etc...) and the currently very hot "BIG DATA" / NoSQL movements (Mongo, Hadoop, Gemstone, HBase, etc...) What language should you learn? SQL. What else do you need to know? Depends on where you want to specialize. It would take a lifetime to become an expert in all areas of data development. Find something you enjoy and specialize.

Two bottom lines here.

One: Software developers need to know how to get at the data they need which means they need to know how to write SQL triggers & packages, complex queries, and maybe even some stored procedures.

Two: If you're going to eat, sleep, and breathe in the data you need to focus your attention on a piece of the puzzle - when your employer has petabytes of data you can't do it all.

Simple question. Complex answer, so complex one post can't cover it all (ERP for example.)

Bottom Line? Languages are important to understand, but understanding trends in technology is how you will move your career forward.