I believe it’s the best times ever for software developers.
Software developers never had more influence than today. Look at companies like Apple, Facebook, Google, Amazon, Microsoft, SAP and others, to name just a few, that have made it into the top ranks of fortune 500 companies within the past few years largely based on software assets directly or indirectly. Starting as startups and outgrowing many other industry players by sheer speed and total market capitalization. All based to a large extent on the work and intellect of software developers.
At the same time, it has never been easier and cheaper for a software developer to get her hands at an abundance of hardware power for a bargain price and software components for free:
- Cloud computing with hourly or resource based hardware subscription prices make upfront investments into expensive computer infrastructure unnecessary
- There are few problems where there wouldn’t be a number of Open Source software components available on the Internet free of charge to be thrown at the problem you’re trying to solve. The tools necessary, you get for free as well.
- You are not familiar with any technology used? No problem: There’s tons of information on the Internet, readily accessible if you have a rough idea what to “google” for. And if you are tired of reading, how about all the video tutorials on YouTube?
- You need to market your product? It has never been easier and cheaper to get your message out to millions of people via social media.
- Last but not least, the Apple Store or Google Play allow you to easily distribute your product to millions of potential users — and they even do the invoicing for you.
Back then when I started developing software myself, things were quite different. You had to invest in hardware upfront, software libraries and frameworks were rather the exception than the rule, the Internet did not exist and what you needed to learn you were teaching yourself out of books that you got in University libraries and bookstores if you were lucky.
I can still remember that during my first “professional” software project — I was freelance student programmer at SAP in 1988 — I was coding a graphical windowing system on my own as part of some graphical org chart rendering and manipulation product that connected to an R/2 Human Resource backend system initially and later to an R/3.
These graphical windowing systems were state-of-the-art on the computers I knew from home, a Commodore Amiga or the famous Atari 512, but if it came to Personal Computers in the office environment, the DOS console was still predominant. As Microsoft Windows was still not something to be assumed commonly available at customer sites, I had to come up with my own solution. So I coded a windowing library, mouse drivers, clipping algorithms, UI control libraries, printer driver code etc. What a stupid idea from today’s perspective, but back then? OK, perhaps it was even stupid back then… But nobody kept me from doing it 😉 The more concerning thing though is the following: How often do we make the same decision today? Re-invent rather then reuse? That’s why I believe Open Source is the way to go in many many cases.
“Back then” as a developer, you were basically working in a single programming language that only changed every few years. I started as a student in seventh grade with Basic on a Commodore VC20 that a friend of mine had invested into. Only to figure out quickly that the really cool and fast stuff needs to be done in 6502 assembler/machine code. I can still remember one family vacation as a highschool student when I was writing a hundred pages of assembler program “freestyle” with paper and pen at the beach in the shade to later on type it in when I was back home — LOL.
Later I switched to Pascal, Modula II, Java and C/C++ if it came to “serious” programming languages. It was only when I ported the ABAP kernel on all the SAP supported Operating System platforms from C to C++ compilation — I wanted to embed an XML parser I had written in C++ into it — that I blew up the kernel’s binary to a size of more than 100MB due to the C++ debug information required oll of a sudden. That was when someone wise pressed the emergency button and decided to promote me away from development into management to make sure I don’t create further trouble ;-).
While in a way the fundamental principles and truths about software engineering and computer science have basically not changed over time, I believe that formerly as a software developer you were much more busy doing the nitty-gitty detail, from the ground up, fixing one screw after the other individually kind of development work and today as a software developer you are much more busy with “orchestrating” how you put powerful libraries, components and frameworks together. It’s like getting from building a car in a handcrafted manner to industrial mass production of cars from pre-fabricated components. The impact you can create as a single software developer, as a team or a software company, is by factors bigger than a few years ago.
What hasn’t changed though, is the enormous fun and satisfaction that comes out of the creative work that software development meant back then and still means today. “Look, mom! Look what I have created!!!”
Hey, how come I feel so old all of a sudden???? 😉