The demand for programmers worldwide is huge and I don’t anticipate changing soon. When the demand for developers in a market is higher than the supply, the wages go up. This is the normal cycle in a market economy. What is disturbing although is that the education units (academies and other facilities) are producing more and more programmers in shorter periods of time. I don’t have a problem with this but think over it again. Do you expect a doctor to get his qualification in 6 months or a year?
I’m interviewing programmers for 10 years now and see their preparation cycles get shorter and shorter. Even university education tends to lower the standards for the sake of producing more programmers. I feel with the new programmers today because for 20 years we were growing with the technology and it didn’t feel so overwhelming to us.
Did I mention above anything about innovation? Or it is more like fast food chewed up for you from somebody else?
You are right, I don’t necessarily associate innovation with using library A or B. Don’t get me wrong, the teams which created library A or B introduced the innovation, anybody else using these is only a follower.
I think there are multiple reasons for playing a role in this. I can’t say which has a bigger impact and if this list is complete. Let’s start with:
Everybody has the world in her/his pocket and wants to stay on top of everything. Your phone squeaks and peeps every other minute and you have to lookup who liked what or commented on monkey eating a banana but soooo sweet…
As a direct result of the increased usage of social media, the ability to concentrate on a complex problem reduced significantly. Even the best monk will quit his meditation if her/his pocket vibrates constantly. I have had smart developers who didn’t raise up to their potential because of constantly looking into their phone screens. One who had admin privileges in our Active Directory installed a script that will pop up every 50 minutes to remind you of having a break. Do you see the irony in this? Occasionally (when nobody of your friends changed their statuses for only so long) you are focused on a task and just then the reminder will pop up and end your state of concentration. We like to be seen as artists working on complex mathematical problems but behave like we are doing repetitive tasks like washing the dishes in the kitchen.
When I started my business in 2010 the CVs’ average for a position was 80. It was difficult but not impossible to find candidates with potential. Nowadays it is significantly more difficult for us to recruit the right candidate.
The experience comes often with patience. A good software design requires a lot of patience. This aspect is not addressed very well in the agile processes of today. I personally don’t think they are mutually exclusive but often the visual results for the Product Owners (PO) are more important than a sincere fact evaluation and what-if analysis. And here comes again the thorough understanding of the technology in use. How you as a developer will have the stamina to challenge the PO and the team with a request for a design change? Are you willing to confront the management with delivery delays for months because you see a potential design flaw? This design flows ALWAYS bite you in one way or another. Usually uncovering them at the beginning is less expensive than later to say nothing if they are avoided altogether. But somebody must recognize the code smells and be able to articulate potential fixes.
I believe in the fail-fast principle. But let’s compare apples with apples:
We are building a big apartment building with tons of apartments in it. In real life, the civil and structural engineering phases will happen before we start building. There is more involved here than the columns, trusses, beams, and footers that get installed in the building to ensure its stability. It’s also about providing pathways through the building to route all the various systems and to plan for future expansion of the building. Do you believe that the fail-fast approach will work here and why the state imposes high standards in this area? But there are human lives involved, you will say, and we are building software only. Really? Do you recall Boing 737 Max?
Following this chain of arguments, I think we can safely say that every big software project can be divided in at least two stages (to stay in the above terminology): Infrastructure and apartments. We can use agile principles like fail fast, swarm on a problem, sprint with multiple teams BUT for the apartments. Every bath can have different tiles, you name it.
Let’s come back to our thesis to innovate or not in the context of available developers. I personally don’t believe that a company consciously dislikes innovations. I’m making the point that innovation is much more than using existing tools and frameworks.
The only constant in IT is changing. I have seen so many libraries come and go that I’m certain to say that in 10 years we will deal with different libraries than today.
In the last 15 years, I have changed my mindset so far to question almost everything in the existing IT landscape. Imagine Tesla following the hype at the time, which kind of vehicle would have been manufactured? You are right, a combustion engine car.
In my opinion, not every hype today is worth following. Create one framework from scratch and you will understand all the others fast. Your thinking and understanding will change but it will pay off a thousand times during your career. Your financial returns will be much bigger because you are one of the few designed and created something new.
We are hiring young or experienced programmers who are willing to go the extra mile and create new technologies. Sometimes you are dealing with abstract concepts, other times you investigate and implement standards. All this is often frustrating but there are also glories times when you feel like the master of the universe.
If you feel like it is something for you, then we want you! Please provide your CV at firstname.lastname@example.org!