What tech stack was I working with in May 2003?

Clearing out some stuff in the home office I came across this CD-ROM of tech tools, products and libraries that I was using at work at this time:

  • JBoss – the open source Java EE app server of choice at this time
  • Xerces – Java XML Parsing library (DOM)
  • Amazon WS Kit – not sure what this was, maybe an SDK for AWS?
  • Apache – HTTP web server
  • Caucho Resin – no longer around – if I remember right this was an optimized Servlet runtime
  • EJ Tech Profiler – I think this was a competitor to JProfiler?
  • Homesite – HTML editor
  • IBM WS Kit – SDK for Java XML webservices
  • IntelliJ – still around today. At the time I don’t think it was as popular as Eclipse or Netbeans, but is probably the best. Java IDE around today

Interesting look back at Java versions in use at the time:

  • Java JDK 1.4 (at the time, also called Java 2 after JDK version 1.2, abbreviated as J2SE)
  • Java EE 1.2 and 1.3 – abbreviated to J2EE – the days when J2EE was actually called J2EE before dropping the 2 and just becoming Java EE after Java EE 5 was released in 2006)

The majority of software is not frontend code running websites

The frontend code running in your browser for the web page that you’re looking at right now is immediately visible, so it’s easy to understand why new developers are overly focused on becoming a mobile app or web developer. The go-to skills every new developer wants to learn today are HTML, CSS and JavaScript (plus any frontend specific framework/library like React, Vue or Angular).

We’re lucky in our industry that the majority of tools a developer needs to build a website are freely available right there on your computer already. With a web browser and only a text editor (although realistically you should be using an IDE, but even many IDEs are also free) you can write HTML, CSS and JavaScript and test it in your browser. For free. As long as you can afford even a cheap laptop, there are no other commercial products or tools you need to purchase to get started. It’s no wonder in recent years we’ve been seeing a ‘Gold Rush’ with so many new developers rushing in to get a start in the industry. As with any other Gold Rush in history though, just because others before you have ‘made it rich’ doesn’t mean that you’ll also be successful.

It’s common to see new prospective new developers discussing online and sharing advice on how they are building a website to show in interviews as a portfolio project. Given the ubiquitous nature of websites and the fact that it’s relatively cheap and easy to get started with website development, it’s really no surprise that this is where new developers are focusing their skill development and job searches.

The thing that gets overlooked though, is that the large majority of software developed today is not for websites, and most large software systems don’t even use HTML or CSS (since they don’t have a web frontend). it’s also likely most large systems are not built with JavaScript (although NodeJS is being used more widely for backend processing). If you pause to take a look around you, unless you are standing in the middle of a field, you’re likely surrounded by electronic devices that are dependent on software control systems, almost every electronic device in your home has some sort of system that controls it’s features: TVs, clothes washers/dryers, microwave ovens, regular overs

If you have a car , it has an engine control system that runs 100M lines of code, likely developed in C or C++, systems that have no visible frontend or user interface. Screen based entertainment systems, sat nav, and digital dial displays (replacing analog speedometer and tachometer dials) only add additional systems on top of this with additional millions of lines of code.

It’s easy to see why HTML/CSS/JavaScript gets the attention and focus that is does because of the tools are mostly free (other than the cost of a laptop) and the highly visible nature of the websites we use every day. In terms of volume of code developed for the devices that surround us in our every day lives, websites and frontend tech are still only a fraction of what we interact with in the electronic devices we use every day.

Use every situation as an opportunity to learn

Tip for the day:

Software development is a career of continual learning. There’s always something new to learn, and always someone to learn from. Use every situation you find yourself in as a new opportunity to learn. Everything you learn now will at some point be useful to you at some point in the future, even if it’s not immediately obvious right now.

Investing in your skills development – how do you choose where to invest? (part 2).

I’ve written before about the importance of keeping your skills up to date, and this is a followup to a previous post, answering the question ‘how do you decide where you should spend your time?’

You can never keep up with everything, every new programming language, every new tech stack, every new trend; you need to understand and acknowledge that first.

Next, decide what matters to you, and where you want to spend your (limited) time keeping up to date. This is different for everyone, but it could be any combination of:

– keeping up to date with the tech you’re currently working with (all or parts of)

– keeping (or getting) up to date with ‘something else’ that maybe next on your horizon

– keeping an eye on upcoming and emerging tech trends. Trends come and go over time, some last longer than others. You can’t jump on every new thing that comes up, so you need to make your own decisions on whether something is likely to be part of your future or not. In other words, would it be worth investing your time in this trend or not?

The last point is hard when starting out because you have no past experience to compare against, but spending some time reading the chatter online will give you a rough feeling of whether something is increasing in popularity or not.

As with everything, you need to sensibly assess tech trends in order to work out what is pure hype and will never go anywhere, vs things where there’s some substance and is likely to evolve into something you should get more familiar with.