Most developers are familiar with Marc Andreesen’s now famous declaration that “software is eating the world.”
Reflecting on my journey with software development since I was a child, I can confidently say that no statement has captured the progression of my career like this one has. It describes the current craziness and hastiness in the software industry perfectly. In a future where automation represents the path toward continuous innovation, what started with software has ballooned to encompass IoT, self-driving cars, cryptocurrencies, AI and machine learning — which some might say is now “eating software.”
Each new generation of technology workers must wonder: What should I do about it? Should I just jump on any technology boat I see and go with the flow? Should I be a bit more critical and set some criteria before deciding on investing time in a new direction? Or should I just drop the whole technical track and seek a managerial one instead of constantly reinventing myself?
6 Ways Software Developers Can Gain an Edge in the Industry
- Become a specialist in your field.
- Understand adjacent technologies.
- Know the business.
- Work on your soft skills.
- Become aware of the gaps in your knowledge.
- Learn continuously.
I’ll unpack each of these in detail. But first, let me tell you a story about an experience I had that framed the way I think about how rapidly the IT profession is changing.
Tech’s Accelerating Velocity
Some time ago, in my capacity as an IT consultant helping clients with digitalization using Microsoft technologies, we got a project from a client who needed to modernize their IT. The goal was to move to a newer technology that had become better supported in the market, and the engineers were willing to learn. Their critical system was based on a mainframe — yes, the big ugly computer which you’ve probably only seen in computer architecture textbooks during undergrad studies.
I met the system owner. He seemed to be quite experienced with the ins and outs of the mainframe, and, not surprisingly, he was significantly older than I was. I collected the requirements, ended the meeting and thanked him for his help. However, that meeting shook loose something inside my head.
When I returned home, I started to wonder:
- What will the technology world look like after 30 or 40 years?
- Is it likely that I can simply embed in a particular technology discipline and continue working in it until I get to retirement age?
- Is it possible that the current technologies I work with — which have ample demand in the market today — will just be exhibits in a museum tomorrow?
- Should I keep studying and studying forever? Surely it would be impossible for me to compete with each new crop of “cool kids,” who know the latest and greatest trends in the field and have more energy and time than I do.
It did not look good! I recalled how, in 2002, Microsoft released Visual Basic .NET (just a year and a half after I had learned Visual Basic 6.0), and I knew that I had to learn it over again. I remembered that, during my graduation project, we planned to use OpenCV (a computer vision library) for a specific image-processing task because that’s what we had some experience with. But when I checked the documentation — boom — new versions had been released! I had to update my knowledge. You cannot rely on just two years of training, my friend.
The stakes got higher from there. Early in my career, I implemented some reports using PowerBI. Just a couple of months later, I got some requests to make some changes to them. Simple, I thought. It will take a few minutes since I already know it. I went to the start menu, launched PowerBI and — oops! — it requested an update. Once that was done, I noticed a few features had been updated or added, and I needed to invest time into learning (and relearning) them correctly. PowerBI has a monthly release cycle, so I had to set up a monthly reminder to keep up to date with their blog.
What I learned is this: Technology is not changing on constant velocity, it is changing on accelerated velocity. These technology cycles can put you on a pension very quickly if you do not keep up with them.
Harder, Better, Faster, Stronger
Why is it all moving so fast? Well, the variety of different platforms developers can target — such as mobiles, wearables and tablets — have put extra demands on technologists as businesses are trying to be more pervasive.
One major reason for this exhaustion is that, over the past few decades, computers have become exponentially smaller, more omnipresent and more interconnected. Therefore, many companies implemented distributed cloud-computing philosophies (backed by a functional programming language) to meet the enormous demand. This, in turn, has added an extra burden on developers to build distributed computing and security competencies.
Economic cycles and market competition are pushing firms to automate everything to save costs, reduce labor and respond to client demands quickly — which has given rise to the discipline of DevOps. Inevitably, big companies like Microsoft started shortening the validity of some of their certifications from two years to one. The extended release cycles of one year or six months are no longer affordable; the forces of market pressure and business agility are pushing the software industry to behave like this.
Let’s think about what this means in practice — and what impact it has on our ability to find employment in software engineering.
Lessons for Developers
Pick a field: Specialization has become more valuable as platforms are becoming more sophisticated. Being a “jack of all trades” is no longer acceptable for many companies since mastering a particular track requires a non-trivial investment of time and effort.
Understand all facets of that field: Software engineering is offering better salaries, particularly for experts since it is not easy to become a well-rounded engineer. Therefore, while you are young and specializing, focus on picking up enough knowledge to thoroughly understand what is adjacent to your technology. For example, backend developers need to have a strong awareness of cloud, DevOps and SDLC.
Know the business: Domain knowledge is always valuable, and it’s worth your time to learn how the specific industry you’re working in navigates protocols, languages and concepts such as health, HR, banking, etc. This type of domain knowledge depreciates slowly, which makes its ROI high, and it will help you communicate more easily with business leaders — and remain top-of-mind when they’re thinking about who’s a valuable member of the organization.
Work on your soft skills: Skills such as negotiation, requirements engineering, time management and public speaking are timeless valuable skills that will boost career opportunities.
Become self-aware: Imposter syndrome (feeling that you are incompetent) is normal. We all feel it. Use it as a motivation to improve and grow. That being said, be equally aware of the Dunning-Kruger effect (feeling that you are superior) — especially when you understand a subject superficially. Be humble and understand there are always gaps in your knowledge.
Learn continuously: Smart, effective learning techniques and strategies are required. By that, I mean methods that will help you to identify hot markets, hot technologies, trends that will help you focus on what matters.
Lessons for Managers
Managers need to be less aggressive on deadlines, unexpected deliveries and other setbacks. As technology becomes more volatile and irregular, even the most senior developer in your team will doubt his knowledge.
Many managers who were technical for a long time are quite confident that they can fully understand and follow technical conversations based on their previous understanding. A typical manager might say: “Changes to technologies are just new features and syntactical improvements. In the end, they’re just classes, components, servers, integration and protocols. so I don’t really need to know the granular details or learn something new. I will just build on what I know and focus on improving my managerial skills.”
To that I would say: Yes, it is true that you should not focus on every minute detail. But no, you cannot plan to simply reuse your previous knowledge. Unfortunately, my friend, it is not enough because software philosophy itself has started to change. Things such as reactive programming, serverless functions, and GraphQL have emerged with entirely different perspectives from previous programming approaches. You need to have exposure to recent technology trends and directions to properly keep up.
Lessons for Companies
Do not be shortsighted. Investment in modern technologies could be cumbersome in the beginning, but it will result in better support, sleeker UX and more efficient productivity. More importantly, you’ll retain your talent, as top-performers are always worried about their careers and prefer working with new tech stacks.
Companies must “hire for attitude and train for skills.” As the Harvard Business Review found, attitude is extremely difficult to change — while technical skills are easy to teach to the right person. Interview focuses have shifted more to validate understanding of general concepts, quick learning ability, problem-solving skills and critical thinking — traits that are considered timeless in nature.
Continuous Learning Is Part of the Job
What I’ve discussed might seem frightening. Software is undergoing an unprecedented change — we’ve never experienced anything like it before. Technologies come and go at the speed of light, expectations are raised and reading never ends. But we have to look at the full half of the glass: This growth encompasses an outstanding career and business opportunities for smart professionals who know how to properly capitalize on them. It’s part of your job to read, improve and ride the tides.