Background
"Software is eating the world" This is the most expressive statement I have ever read which describes the current craziness and hastiness in the software industry. Starting from IoT, self-driving cars, AI/ML, cryptocurrencies, automation to continuous innovation from startups and industry giants, and any buzzword that you have heard.
Under the stress of this nasty wave, a pressing question always pops-up to all technology field workers: 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 little bit critical and set some criteria before deciding on investing time on it? Or should I just drop the whole technical track and seek a managerial one with less learning hassle?
In this articles series, I will try to answer some of these tough questions. However, I need everyone to contribute to and discuss this critical topic. I will start the series by sharing an experience I had that I believe will help on framing our minds and clarifying the current status quo on how fast the IT market is going. Afterward, we can deduce some lessons out of it to prepare the path to our future articles.
Recalling
Some time ago, we got a project from a client who needed to modernize their IT to newer technology that is more supported in the market and which the engineers are willing to learn. Their critical system was based on a mainframe, yes, the big ugly computer which you probably only seen in computer architecture textbooks during undergrad studies!
I met the system owner who seemed to be quite experienced with the Mainframe ins and outs, and of course, way older than me. I collected the requirements, ended the meeting and thanked him for his help. However, that stumbled something in my head …
When I returned home, I started to think: Ummm… How would the technology world look like after 30 or 40 years? Is it possible that I will just be stuck to a particular technology and continue using it until I get to the pension? Is it possible that the current technologies I work with which has ample market demand will be a statue in the technology museum? Should I just keep reading and reading forever? It would be impossible for me to compete with all "cool kids" knowing the latest and greatest in the field and have more energy and time than I do, hmmm, it does not look good!
I started recalling in 2002 when I learned Visual Basic 6.0 after one year and a half, Microsoft released Visual Basic .NET and I knew that I must learn it over again! I remembered my graduation project when we planned to use OpenCV for specific image processing task (because I had some experience on it at that time), I checked the documentation and, BOOM new versions were released! Oh, I have to update my knowledge! You cannot rely on 2+ years knowledge my friend!
To make things even worse; Once before, I implemented some reports using PowerBI, just a couple of months later I got some requests to do some changes on them – Simple it will take few minutes since I already know it! So, I went to start menu, launch PowerBI and ooooops! It is requesting an update, I updated it, few features were changed and added, and I have to learn them to the required changes correctly! What on earth?! PowerBI has a monthly release cycle, I had to set up a monthly reminder to read their blog.
The conclusion I would like to convey reach here is that: Technology is not changing on constant velocity, it is changing on accelerated velocity! These tiny technology cycles can put you on a pension very quickly if you do not keep up with them!
Reflection
Why it is going SO FAST ?! Well, the variety of different platforms which developers can target such as mobiles, wearables, and tablets have put extra demands on technologists as businesses are trying to be more pervasive. Moreover, our user experience expectations became really high, we no longer tolerate slow apps, unresponsive pages, the static layout which is on the other side pushing performant JavaScript frameworks such as NodeJS, Angular, and ReactJS and causing them what is called JavaScript Fatigue. On the relevant side, the recent development in telecommunication/electronics field made both mobiles and internet cheaper which created ample supply of internet-enabled terminals. Therefore, many companies implemented distributed/cloud computing philosophies possibly backed by a functional programming language to meet the enormous demand, this has also added an extra burden on developers to build distributed computing and security competences. Even more, economic cycles and market competition are pushing firms to automate everything to save costs, reduce labor and respond to client demands quickly which gave the raise to DevOps skill. Inevitably, big companies such as Microsoft started shortening their certifications validity from two years to a single year. The extended-release cycles of 1 year or 6 months are no-longer affordable; it is the market pressure and business agility that is pushing the software industry to behave so.
Enough hard news :). Let us analyze and think what this means in practice and what impact does it have on businesses and employment opportunities.
Lessons Learned
For developers:
- Effective and smart learning techniques and strategies are required. By effective learning techniques, I mean methods that will help you to identify hot markets, hot technologies, trends, learning how to focus on what matters, learning things quickly and so. The learning topics is a big topic and deserve a fully dense article on its own.
- Specialization became more valuable, as the platforms are becoming more sophisticated and " Jack of all trades" is no longer acceptable for many companies since mastering a particular track is a non-trivial time and effort investment (well, this is subject to debate!)
- The software engineering field is becoming a well-paid field, in particular for renowned experts since it is not easy to become a well-versed engineer.
- Soft-skills such as negotiation skills, requirements engineering, time planning, public speaking are timeless valuable skills that will boost career opportunities.
- Domain knowledge is always valuable, it worth it to spend time understanding the business rules, domain language and concepts on a specific business area you are working in such as health, HR, banking, etc. The domain knowledge deprecates slowly which makes its ROI high, it will help you to easily communicate with the business people and be " close to their hearts!".
- Facing imposter syndrome is normal (feeling that you are incompetent), however, be aware of Dunning Kruger effect (feeling that you are superior). I'd just refer you to this cool article by Ardalis for more details.
For managers:
- The managers need to be less aggressive on deadlines, unexpected deliveries, and issues. The technology is really becoming volatile and irregular, the most senior developer in your team will doubt his knowledge.
- I know that 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 would say: "I know that the new changes of technologies are just new features and syntactical improvements, in the end, it is just classes, components, servers, integration, and protocols. I do not really need to know the nitty details or learn something more, I will just build on what I know and focus on improving my managerial skills." Well, I would say Yes and No. Yes, at the fact that it is true you should not focus on details. And No on that you are planning to only reuse your previous knowledge. Unfortunately, no my friend, it is not enough because the software philosophy itself started to change. Things such as reactive programming, serverless functions, and GraphQL emerged and has an entirely different perspective from previous programming approaches. You need to have exposure to recent technology trends and directions to properly keep up.
For companies:
- Do not be shortsighted, investment in recent and modern technologies could be cumbersome on the beginning, but they will be very rewarding in forms of higher support, better UX and productivity. More importantly, in talent retention, as top-performers are always worried about their careers and prefer working with new tech stacks.
- The companies started to adopt " Hire for attitude and train for skills." Academic research has found that attitude is extremely difficult to change while technical skills are easy to each to the right person. The interviews focus shifted more to validate understanding of general concepts, quick learning ability, problem-solving skills and critical thinking – traits which are considered timeless in nature.
Enough for today, in the upcoming articles I will share some tips and techniques on how to learn and to keep yourself updated, stay tuned do not forget to subscribe to the newsletter to get the LASTEST and GREATEST to make your code smart and your career smarter (https://www.smartercode.io)!