There’s a raging debate in the Developer community about what new skills to learn and hone. The debate differs whether you are a Junior Developer just starting in the field or a Senior Programmer trying to keep your skills sharp. The debate grows more complex when you think about all the tools and frameworks available and how quickly they’re being improved. You may be plagued by questions like:
- Should I learn .NET or .NET Core?
- Should my focus be on a specific area of the backend or front end or should I go full stack?
- What about mobile versus web development? Which is more important?
Ask any Developer about the best new skills to learn and they’ll likely have a strong opinion about which direction your studies should lead you. But there is individual opinion, there’s market-driven data, and there’s a whole Internet full of ideas about what Developers should hone their talents on. Sorting this out is going to take some thought and study to determine which areas you should focus on learning.
Top New Skills for the Baby Programmer
Let’s start with Junior Developers, those babies or apprentices of the programming world.
Ask a healthcare student in their first year of medical school what specialty they’re considering and they’ll probably give you a blank stare. The same is true in law school, where it’s likely that the first-year student is more focused on not flunking out over which area of the field they’ll focus their career on.
The Junior Programmer is just as likely to be overwhelmed by the variety of frameworks and languages available in the technology field. The choices grow more complex when you realize that new versions of these tools are coming out all the time.
If the Junior Programmer is going into a structured two-year or four-year program in the computer sciences, the curriculum usually allows a wide-ranging taste of everything from SQL on the backend, APIs and middleware, to HTML and CSS on the front, along with the accompanying theory and concepts. As part of this formalized process, you’ll start to learn which areas of the field you have more of an affinity to.
Bootcamps are the same way, however, the Junior Programmer usually has to make some upfront decisions regarding which language they’ll start with. These programs are shorter so what you learn is more fleeting than what you’d learn in college.
Most structured classes now focus on learning while doing. The longer degreed curriculum usually offers internships while shorter bootcamps typically provide a concrete project to get your feet wet and help build a portfolio before the program ends.
Most of these programs teach basic programming languages like:
The biggest question we hear, especially from those trying to learn on their own, is where should the Junior Developer start? This is important because breaking into the field is hard. HackerRank polled 71,281 Developers earlier this year and came up with the current most popular languages. They include (in order):
Believe or not, taking your first steps toward a career as a Software Developer is easier if you have experience. This means if you’re choosing a bootcamp, working on a BA, or trying to teach yourself on freeCodeCamp, you should look for opportunities to practice and develop your resume-worthy skills. For example:
- If you’ve been playing around building iOS or Android apps, launch them on the Apple App or Google Play stores
- Share your code by building a portfolio site
- Freelance on sites like Upwork
- Contribute to an open source project
- Participate in a local hackathon
Beyond the basic coding skills, you should try to pick up some web design or UX experience with tools like Photoshop. This could make you more attractive to companies like advertising agencies. Also, make sure you understand version control in Git/GitHub. Tackle cross-browser compatibility and responsive web design as the icing on the cake. (The cake is the core language, or languages, that you know.)
This is all well and good for the babies, but what about the Programmer with 10,000 hours or more already under their belt? Is there something they should do to keep their skills sharp?
Top New Skills for the Seasoned Programmer
Have you heard the one about the COBOL Developer who makes $250,000 a year?
COBOL was one of the original programming languages developed in the 1950s. This more than 50-year-old tool is still used today on mainframe computers in enterprise organizations and government agencies. Despite the language being hopelessly old school, some Developers still know COBOL and make big money each year maintaining systems that most modern Developers would consider highly archaic.
But this is a cautionary tale. As our aging COBOL Developers are kicking the bucket or just retiring, most of these legacy mainframes are migrating to newer platforms and being rewritten in modern languages. So the skills of COBOL Programmers, while in demand today, are rapidly running short on time.
Here’s another scenario to consider: What happens to a Developer that spends 15 years at a company maintaining the company’s legacy applications? The answer is that they may look up from their computer one day and find that the world has passed them by.
IT modernization is now called “digital transformation,” and if you’re not part of it, you will be left behind. For companies, this means bringing IT from the basement server room into the cloud, with continuous deployments under Agile methodology. For the seasoned Programmer, this means they must know some of the most popular languages, as well as how to integrate innovation into their digital skills.
If you have no idea what any of this means, we have one question: Do you know COBOL?
Teasing aside, by definition, software engineering means that you should constantly be in a state of digital transformation. For the individual Developer, this requires staying fresh and learning new things. But what new things aren’t fads or wastes of time? The list of hot programming languages stays the same whether you’re a Junior or Senior Developer. Here’s what HackerNoon says you should know (in order):
- Python, with popular frameworks Django and Flask, is the best option for creating a REST API. It’s also popular for creating machine-learning algorithms, which are increasingly working their way into every part of the development process. You’ll need TensorFlow or Scikit-learn to build the libraries behind machine learning.
- The C Languages, including C, C++, or C#, are all used today to build software applications. C is the oldest of the three languages, but it is still widely used for operating systems, hardware drivers, and kernel-level software. C++ came second, and it brought object-oriented programming into the old C language, making it more efficient and just as fast. C# is the latest improvement in this triad. Developed by a team at Microsoft, C# executes on a virtual computer and translates it into machine code. It’s part of modern .NET frameworks and used extensively for server and client application development.
- Java is very popular today for creating applications, developing web services, and building games, and you’ll even find it in financial and banking systems. It’s a popular language to learn and spread widely across the web.
Beyond these skills, HackerNoon points out that the need for experience with APIs like REST is just as important for keeping your stack modern as understanding the basics of software testing—even encryption and blockchain. Discerning which skills to sharpen and which to discard takes a bit of vision for any Developer. ZDNet already has their predictions for 2020 out and they say these are the hot jobs for next year:
- Computer Vision Engineers who work on the algorithms that allow computers to see and recognize objects. These Programmers will work on artificial intelligence (AI) and virtual reality (VR), two areas poised for growth in the coming years.
- Machine-Learning Engineers will work on the algorithms that enable everything from our Alexa apps to Watson or other AI applications.
- Network Analysts will become more important as we work to further integrate our connectivity with internet of things (IoT) applications.
- Security Analysts will join all of the other cybersecurity professionals that are currently in great demand. As cyberattacks grow more sophisticated, those with the ability to discern and detect the threats will be just as important as those that mitigate threats.
- Cloud Engineers are hot simply because the migration to virtual computing is marching irrevocably forward. Even the most stodgy holdouts have migrated their data or are planning to.
- DevOps will grow even more mainstream as organizations shift toward the goal of continuous deployment. DevOps is geared to bring everything together next year, coordinating siloed departments and streamlining operational efficiencies.
But most Senior Developers will take this advice with a grain of salt. Why? Because these are all mere opinions and educated guesswork about what you’ll need to know in the future.
One thing to keep in mind, though, is that if you haven’t interviewed for a job recently, processes may have changed a little. Many organizations now require a coding test as part of the application process. It’s a rude awakening to Senior Developers who can build a functioning web app, lead a team, or talk to a client, but can’t solve a constructed puzzle from a third-party site. Senior Programmers are talking about this as the sad reality of today’s job market. The conclusion is that you can’t judge another Programmer’s skill level in a short interview, but today’s job application process requires it. So companies come up with coding puzzles as a way to screen for competent coders.
If you’re a Senior Programmer interested in brushing up on modern-day skills, consider practicing at least one Kata or coding challenge each week. Here are our top five sites to help you prepare for today’s interview process:
Can We Talk About Soft Skills?
Some Developers lack the skills necessary to communicate with other human beings. If you’re one of those people we lovingly call “computer curmudgeons,” it’s time to learn the soft skills. Modern software engineering isn’t done in a vacuum. The days of solving coding problems in the security of your cubicle with no human contact are almost over. Today’s agile processes require Programmers to engage, interact, and make neat things. It’s the collaboration that solves the problem as much as the individual Programmer. That’s why practicing active listening and patience is as important as your creative approach to problem solving.
Learning to be open-minded about your approach to solving problems is crucial for any Developer. This may be harder when you’ve put in years of service in your field, but humbling yourself enough to listen to your Junior Programmer colleague may remind you of the basic rule of thumb in the computer sciences, which is that we’re all figuring this out as we go along.
If you’re figuring out your next step in the Developer field, contact Artisan Talent. We can help you assess your current skills and then figure out what’s necessary to take the next steps in your career.