5 Technologies that a Programmer Should Learn in 2020
Ken Tabor | July 2020
It's mid 2020 and I wonder what technologies I should start learning, continue learning, and stop learning. My career as a programmer is defined by a lifetime of learning. I need to keep current with trends so that I can perform at the high level I want, and my company needs.
Some of this article is a reflection of an article I wrote in 2019 considering new technology to learn.
Consider these a recommendation from my personal point-of-view as a programmer on the Sabre Developer Relations team. Maybe some of this tech is already on your radar, and maybe some of it is new and worthy of your attention.
There's only so much time in the day for new work, but be sure to continue investing in your career. It's always worth figuring out what's new to keep options open as the industry evolves.
My 2019 Scorecard
I named 10 technologies a programmer should learn in 2019. How did I do with my studies? I'll briefly grade myself on how well I learned them, and if I'll continue practicing with them.
My personal achievement grade will be simply "below" or "meets" expectations based on my own measure of success. For example, do I know enough to build something other people could use.
Recommendation will mark my interest in continuing to look at it:
Stop - I've discovered enough for now and will revisit when the time is right.
Adopt - I've discovered enough to know it's become a daily-use tool.
Continue - I need to keep discovering its capabilities.
In summary I learned about half of the technologies I wanted to get to. That's not bad. I won't tell myself that wasn't good because I learned a lot! Encourage yourself and celebrate even the small successes!
Technologies that a Programmer Should Learn in 2020
I've found more things that I want to learn. Even while I was studying new subjects popped up as I consumed Twitter, LinkedIn, blogs, conference videos, and local professional groups.
Some of these might be practical enough to adopt, and some might deserve a casual familiarity.
At this point in my career it's important for me to know a few things really well so that I can code with them. It's equally important to have a little knowledge about a lot of things to sense what's available.
#1: SwiftUI - A New Way of Programming Screens
Apple released a new framework for building app user interfaces called SwiftUI. It exists on iOS and macOS which means you'll learn it once and have a good chance of making cross-platform experiences.
I've seen a lot of attempts at making screen development a visual, drag-and-drop, GUI-based process. I think the dream was enabling designers to quickly take their screen layouts from pixels to code. It seems like no one ever quite got this right.
Keeping designers in design tools and keeping code in developer tools is a satisfying and reliable separation of concerns.
From my perspective SwiftUI offers the immediacy of design-oriented preview tools while harnessing the power of programming logic and the potential for code reuse.
Machine Learning appears useful, intriguing, and difficult. A lot of it is time consuming, intensive, iterative work including:
- Featuring the right data.
- Studying the difference between algorithms.
- Training models.
- Reviewing test results.
- Tuning parameters.
What if some of that effort could be automated away from humans? Would that make ML easier for software developers to integrate into their applications? Many top platform providers say "yes" and are offering services referred to as "AutoML."
Machine Learning is an increasing popular technology to solve complicated, valuable business problems. If you want to give ML a try you might find one of these services offers an easier path to gaining expertise:
#3. Talking to Humans
Sometimes software developers ask me what I think they ought to learn next. Usually they've mastered frontend web, backend cloud tech, or some other piece of the development puzzle. I feel as though they want me to mention a hot new language or esoteric framework that I've just heard about.
Generally, I'll tell them to learn how to better talk with humans.
Usually this comes as a surprise. It took me a long time to understand that software apps are tools. Before I build a tool I should first figure out how someone is going to hold it. Talking to people gives me confidence that I'm going to build the right thing that people want to use.
My teammates are also humans. Better talking with them helps me convince them why new tech is useful. It enables me to be more comfortable demoing completed work. It helps me think through a complicated issue to clearly write about it in an article, essay, or report.
"The single biggest problem in communication is the illusion that it has taken place."
George Bernard Shaw
#4. Visual Studio Code
Computer programmers are writers. We create and update lines of code. The tools we use to author code must have special abilities to meet our professional needs. A good programmer's editor enhances the ability to write higher-quality code while offering time-saving automation.
I've used many code editors throughout my career and Microsoft's free Visual Studio Code has become one of my favorites. Especially when it comes to writing code for the web platform.
I should learn my code editor well enough that using it is an entirely intuitive way of behaving. It means becoming more efficient, and if I'm lucky, working might even be more enjoyable.
Putting in the time to learn hotkeys, configurations, and installing extensions means I'm mastering a daily-use tool that makes my professional life easier.
#5. No Code/Low Code
Sometimes a colleague pitches a business opportunity and wonders if I can help. My first answer is usually, "Let's build a website!"
What if testing a new idea is better done by delivering just a landing site, or a few pages of static text and photos? What if we only need to trigger an office process to forward some information when something gets sent somewhere?
There is an entire category of productivity tools to quickly build websites and assemble business workflows. It's often as simple as connecting together lightweight services wrapping popular services. Automating tasks like this doesn't require programming skills, but they can help, and being tech savvy is always a win.
It's funny telling programmers to think of programming less, but technology is changing, and the role of software developers might be evolving too. Have a look at these tools and see if they're useful for you:
Feed Your Curiosity
We find curiosity to be a top quality of excellent teammates at Sabre. Exploring new ideas always helps us grow.
Find some time to learn something new and stretch your mind in new ways. Freshen up the routine by remaking something you know using a different technology. Get a feel for how writing code in a new programming language challenges your expectations.