One of the things I've always loved and dreaded about technology is the speed at which it constantly evolves. As a technologist there's nothing as exciting as up-skilling and learning something new. As a business owner it's bloody stressful. Me, the business owner, has to make sure that the client gets the product that they need. Me, the technologist geek, just wants to lock myself in a room and play with the tech on pretty useless applications just for the heck of it. The geek is always fighting with the suit in my head.
If you're at a point in your life where you're considering a possible career change into web/software development then one of the key questions you need to ask yourself is "How comfortable am I with change?". If change excites you then you're off to a great start within the IT sector. Of course there's more to it than that, but a strong comfort level with change is pretty essential. You might be an expert today, but you can quickly find yourself back to novice level tomorrow as some new technology becomes essential for your company to survive and thrive.
When I first started out I was programming ZX Spectrum BASIC on a 16KB machine. I was 12 and this really was a magical machine. My programs depended on GOTO and IF/THEN statements and a top down, line by line flat structure comprising of thousands of lines of code.
GOTO statements were critical and deemed a good thing. BASIC was a massive step up from it's predecessor, machine code, which was a jumble of machine code acronyms comprising of flags, registers, pushes and pulls. BASIC turned all that into, well, basic English, or something more closely resembling English, and that coupled with home accessible machines like the ZX Spectrum and Commodore opened up the world of programming to the masses.
The flat code nature of BASIC changed radically when things went procedural. Languages like PASCAL and C introduced the concepts of functions and sub routines. BASIC changed too to reflect these new constructs. GOTO statements now the mark of the devil. This was a colossal shift in thinking at the time and fundamentally changed the way we thought about implementing software solutions.
By the time I hit College C++ was all the rage.
C++ took everything up another step. Procedural programming was now being replaced by Object Orientated programming. This was a massive step forward again in the whole evolution of programming. Functions and Subroutines were being huddled together into objects along with data members. An object would represent some entity, for example a customer object. The idea being to encapsulate everything pertinent about an entity into one chunk of code that was portable and could interoperate with other independent objects to get the job done. Objects could become children of other objects inheriting the parents functions and traits and expanding on them. Looking at a fully functional Object Orientated solution and comparing it to the BASIC of ore, was like comparing apples to naval fluff, and this all happened in less than a decade.
Programming languages weren't the only thing that were changing. Hardware was changing at a ferocious rate. The mainframe systems of old, were being replaced by clusters desktop PC’s connected to servers running new fangled operating systems. Wars erupted between the likes of Microsoft,Apple and IBM. I remember having arguments with colleagues over whether the future was in massive mainframes or PC's. Whether the new graphical based operating systems would take over from the console driven systems. Dumb terminals versus Client Server was all the buzz. Would the new world of windows replace the age old reliability of console based applications? Change was everywhere. IT evolution was moving at a pace of a rocket.
Initially when I worked as an IT Analyst Programmer for IBM back in the early 90's the focus was on delivering graphical based systems to banks around the world to replace their console systems. Designing and building teller systems for banks and that type of thing. It was fascinating to watch the mainframe programmers adapt to the new ways of thinking and embracing the new languages and concepts or dying, (a bit dramatic but you know what I mean).
Client/Server was becoming everything. All things to all people. C++ was still hanging around but it was being challenged by 3GL, or third Generation Language development tools. Basically these tools were going to make programmers jobs much much easier. They introduced graphical development tools to the development paradigm. Start by drawing the screens and then wire them up. At one point I remember the thought was that these 3GL tools would basically take the whole programming element out of developing software. People, anyone, would just be able to draw screens and use nice visual tools to get them to do the required work. It sounded good in principle but never really happened. We're still writing code!
Just as everyone was getting comfortable with all the transitions that were going on, along comes the World Wide Web.
This was a serious game changer. .
The first web project I would have worked on was for an online bank in Ireland, the first such site in the country actually. It was a raging success of a project, won various awards at the time, and from that point forward I nailed my colours to the World Wide Web post so to speak.
But change never slowed, it just accelerated. The web grew like a monster with a thousand heads. Web browser wars ensued. HTML was the new black. The programming paradigm was shifting again. The graphical user interface was now essential but instead of thick clients, control was starting to shift back to the server. Writing a program now consisted of writing thin clients in HTML and having the heavy lifting logic and database stuff happening back at the server hosted on the internet. You could write the front end in one scripting language (HTML/Javascript/CSS) and have the back-end developed in another language, Visual Basic, C#, php, Java, etc.
Mobile phones came into play as someone realised that they could be used to send text messages. Text messages exploded onto the scene. Soon after the web came to the mobile phone through protocols like WAP, another technology that needed learning. Windows upped the game by introducing their own smart phones, (Yes, Windows actually had smart phones before Apple!). I still actually use an old HTC windows phone as a backup phone to a backup phone from a gazillion years ago.
When the iPhone made it to the stage, the world jumped on the bandwagon and mobile phones became a serious web player. Apple introduced the concept of apps and the App Store which fundamentally changed the way people and companies viewed software applications. This also introduced another whole new programming technology to the industry.
Google of course had to participate in the mobile revolution, and introduced Android to counter the iPhone phenomenon, with it's own app store and it's own programming platform.
And that brings us to this point in time. Now when you go to develop a solution for a client, there are so many things to consider. So many options for so many platforms. With great choice comes great headaches!! Clients want and need their solutions to run on everything (for free if possible please), and they want it yesterday of course, as is their right. They have their own issues which we as technologists are trying to fix after all. Most important whatever we do develop for them we have to make sure it can survive in the sea of change for the coming few years.
It's funny now, to take the time and look back over the past 30 years of my own personal journey through technology, from programming as a 12 year old wannabe hacker to a forty something IT consultant running a business, and see just a fraction of the change that I've been lucky enough to live through. I don't really think there's any other career in the world that embraces change as much as IT does. It's relentless, and due to commercial realities, from time to time I let the company fall behind a bit on the technology front. I wake up on a day and realise that the world has pushed on and I have to make the company take a breather and bring internal programming standards and products up to speed and embrace the next wave of change. Change or die!