I enjoy the process of developing software, which includes many various activities. But learning and teaching new software are the two activities I enjoy the most. During my 30-year career I’ve been working as an independent contractor, taught countless training classes, prepared and read hundred of resumes, co-founded a couple of startups. You might be thinking that now a grouchy old programmer will start complaining that young software developers don’t know how to program? Don’t be. It’s all the way around.
The skills required today for getting a Software Developer job are different than in the nineties. I’m not even talking about programming languages that were popular then and now. The mere number of different languages, tools, frameworks, and platforms that must be present on a resume today is piling up. It’s more difficult to become a competitive software developer in the USA today than it was 20 years ago.
Back then, to get a job you’d need to know a programming language to develop UI and SQL for data persistence. Knowing stored procedures for a popular RDBMS like Oracle, Sybase, or MS SQL Server would help. This is it. The resume having Visual Basic plus MS SQL Server or PowerBuilder and Oracle would easily get you a job. Of course, you’d need to know them well. If you knew Unix shell programming (OMG!), you’d be getting several job offers in a heart beat.
Mid nineties. Do you know how to handle a Click Event on a button in Visual Basic and how to write an SQL statement that would find duplicates in a database table? You’re hired!
In the second part of the nineties people who knew how to spell COBOL and CICS – would be getting multiple offers because of that Y2K FUD.
The year 2000. The world survived the Y2K craze. Legions of musicians, cab drivers and civil engineers became software developers, and most of them were able to retain their well paying jobs. You know Java and EJB? Really? How much do you want to make an hour? $100. You got it.
Knowing HTML or JavaScript was not an asset – easy peasy and not serious.
The year 2014. Unless you have ten different technologies on your resume, do not even submit it to us. Got 9? Are you just out of college or something?
If you want to stay in business of software development, you need to continue studying. Non stop. Lots of different tools, frameworks, languages. I’ll give you an example. Take a look at the program of our 10-week online training “Modern Web Development for Java Developers”. It’s a very intensive training with lots of self studying. Just check the time lines of the first two lessons. It’s a lot to master even for programmers who already have working knowledge of Java.
Here’s a fragment from an email I’ve received from an programmer with 20 years experience who enrolled in one of there trainings:
“I signed up for your Web Development for Java developers course. Looking at the outline. Should attendees do some preparations like install any software and play with it? The other day I went to an HTML5 meetup and was shocked – for more than an hour people were downloading and installing some software – Git, Node JS, Karma, Grunt, Bower. I got overwhelmed and left.”
I feel your pain, buddy. I really do. Got to stay in good shape to compete with the young generation. These kids were born with smart phones in their hands and Facebook in their brains. They easily multi-task. They absorb new materials like sponges. You got years of industry experience behind your belt? This is nice, but they need people who feel comfortable programming for the Bring-Your-Own-Device world. It’s time to replace your Windows XP desktop with several modern devices and get back to school. Otherwise become a manager. Well, you need to get back to school in this case too.
Next year I will 30… 30 years developing applications!
Going further back, in the 80s was enough to know one language to get a Job: Cobol, Basic, xBase or even Fortran.
What a nice time…
Indeed there are plenty of frameworks and tools but the core concepts haven’t change much. SQL has slowly evolved, JavaScript too. If you know Java, C# is not so different. If learn a FP language, you’ll be comfortable with other FP too. Even understanding RDBMS best practices allows you to succeed in the NoSQL world. Having a base foundation, built on understanding the core principles of development will always prevail.
I know, foundation and principles prevail. But from the practical point of view, getting up to speed and maintaining the speed requires more efforts today than 20 years ago. The IT world is more dynamic now event in enterprises that used to afford a slow motion in the past.
It’s tougher for junior developers nowadays as they need to learn both the “good stuff from the past” and the ever evolving new techs. But nowadays it’s also easier to learn, having so many up-to-date tutorials, blog aggregators; basically the Internet. We got more Agile now, so it’s time to adopt an Agile learning process too.
My advice for all developers (juniors and seniors) is to “stay in shape” and constantly “update” the knowledge base. It takes a lot of passion to be a successful developer.
I think that it is rather harmful trend for the whole industry. Figuratively speaking, the golden antique era of technology is over. Now we are in the middle ages and feudal disunity. Instead of thinking and focusing on the best practices, we are constantly inventing more and more square wheels.
And the worst times begin when abstraction comes into stage. When we’re not just taking for granted poorly working piece of software named “X”, but making new software “Y” based on “X-as-a-black-box”. And “Z” based on “Y-as-a-black-box”. Why not? Modern hardware allows this, and that’s why people choose the least resistant way. As a result, today’s software engineering looks like huge and obese monster. Skype became completely unusable, “Uh…a…rgh” instead of speech. New google maps are broken. Apple’s developers site is unacceptably slow and periodically disfunct. Recent Android SDK is too buggy. Smartphones drain battery for less than a day. Adobe Acrobat was a masterpiece of software in the past, and now it is more like crap piece.
The history is like pendulum, and I think that the next trend will be about careful engineering and quality of products instead of quantity of technologies.