Programming in 2017

I started programming in the mid 1980s. We had a Spectrum 128k+2 at home, and I used a BBC Micro B (followed by the BBC Master) at school. I coded in BASIC both at home and school. It was very simple back then.

In the 1990s, whilst studying for my degree, I learned C and C++. The internet was only just becoming more widely used – the library at the college had access, and that was pretty much the only place that did. During my placement in 1995/1996, the office had internet access on dial-up! I still used C++ for college work, and a bespoke program for work.

After graduating, I got my first job in an office and had my first exposure to a proper IT Department. Everyone was using Microsoft Windows, and the developers were coding in VB6. I picked it up quite quickly. The internet was still mostly using HTML and CSS, and probably a little Javascript. We used Microsoft Front Page as a code editor to develop in ASP (now called Classic ASP), or a simple text editor to write the HTML and CSS.

During the early part of the 21st Century, things started to change. Javascript was becoming more widely used, and Microsoft had released ASP.NET, part of the .Net Framework, which developers were slowly moving towards. Other developers started using other languages on other platforms. I too started learning PHP, and moved towards the Mac.

Over recent years Javascript has taken off in a big way. More and more sites use them, not as an add-on to perform supplementary tasks, but as the main site driver. It seems not a week goes by without someone releasing a new Javascript framework, and all the cool kids jump on it! Now Javascript is an integral part of a web site, which cannot be ignored or escaped from.

Javascript has also made it onto the desktop. A couple of new frameworks, Node/Electron and React, have been created to enable developers to bring a web like experience to the desktop. The software they create looks really good, and, for the most part, run really well (e.g. Slack, VS Code, Microsoft Teams etc), even if they do use up a lot of memory. Nobody seems to care though.

What’s the problem? Well, when I first started writing code for the internet, there was a definite structure, and it was fairly straightforward to find the code you need if you wanted to amend something. Now, with a lot of code in Javascript, and Microsoft developers adopting MVC frameworks and goodness-knows-what-else, it has become more of task to find any code you need. A key development has been the “separation of concerns”, where code is split into various functions to perform a particular task, but those functions can be spread across multiple files and projects, which not only makes them harder to find but also harder to amend as it has knock on effects elsewhere. Added to that, when a non-techie asks “Can this thing be changed?” or “How does this work?”, it can take hours just to trawl through the code, some Javascript, some C#, and still not come up with an easy answer. Because some of our sites are so complex, I have had to, on two occasions, respond to a client with “It cannot be done” for a task that should be really simple and only one or two lines of code. The reason it can’t be done is, as the code I would need to amend is split over numerous files and projects, there is not one place to add it where it would work. Everywhere I added the simple few lines of code, it would break, including in the “correct” places. Even senior developers where I work, who prefer the more complex structure to our projects, had to concede that it couldn’t be done without a major re-write (taking at least one month, which the client didn’t want to pay for)!

And that’s where we’re at. We’ve made web sites so complicated, where simple fixes take a long time, and it takes a while for new developers to pick up the methodologies they need to get the job done. Apparantely, there’s a shortage of web developers, and looking at job requirements it’s easy to see why! The level of experience is massive. Even if training is offered, it can take years to get to a level of basic understanding, just to amend a simple site.

There will be a lot of developers who will not agree with me. They’ll try and point out the advantages of creating complex sites, using tools and frameworks for no good reason apart from to be trendy, and by using these frameworks that slow sites down they think by adding a loading bar will help! There should be a separation of concerns, so code is placed in separate projects, to make it more managable (it doesn’t!), and easier to update (it isn’t!). They will say that I shouldn’t be a web developer because I don’t like the latest framework and don’t (want to) understand how they work. Maybe I should stick to the desktop or learn app development. (By the way, a previous job I left has still not been filled 18 months later! It’s still being advertised. And my current employer couldn’t fill a position during the same time that they withdrew the job ad!)

Maybe they’re right, or maybe they’re not! What if we could develop the same web sites without all the Javascript add-ons and fancy pants frameworks, have the sites run quickly (or quicker!), and be structured so the next developer doesn’t need a years training just to figure out how it works? What if we could “keep it simple” (a mantra lost on most developers)? What if we could attract more people to become developers because it wouldn’t be seen as something that only some people understand? (Or maybe it’s all deliberate so coding is only done by the privileged few?!)

What now for me? Well, I’m deciding on what to do at this moment. What project should I concentrate on (I have several ideas), should it be web or desktop, or something in-between? I have a demo website (adrianjohnson.me – though the address might change in future) which loads quite quickly despite being simple, and I’ve almost done a desktop application in C#/WPF that I might release. I’ll tell you one thing though, whatever I code next will not be filled with unnecessary thingys and wotsits that cool hipsters dream up for everyone to drool over. I’ll make sure it can be picked up by the next developer and it’ll be kept simple, stupid!

Adrian