One of the most popular blog posts in 2014 was Developer inequality and the technical debt crisis with Jonathan Edwards presenting a rose tinted view of the good old days of archaic languages, moaning about the dark age of the web, and claiming it is responsible for a technical debt crisis.
This was the spirit of languages like COBOL, Visual Basic, and HyperCard. Elegant tools for a more civilized age. Before the dark times… before the web.
How many people, whether they be professionals or amateurs, really want to go back to this?:
These primitive tools still exist in both old and newer incarnations. It’s just as easy if not even easier to create a basic calculator, Celsius to Fahrenheit converter or other simple app in modern VB.NET or C# as it was back in the 90’s. But in these “dark times” of the web, these programs are not only available for free, they only take two or three seconds to find using your favorite search engine.
For a long time non developers have found they can create simple programs themselves in Microsoft Office with VBA. However what has always been the case is as a program becomes more and more complex, it requires more structure and more knowledge about good principles and practices in order to adequately manage that complexity. It has always been relatively easy for anybody to create simple applications and significantly harder to build large applications and this is something that I don’t believe will ever change.
It will also always be the case that all programs start of very small and continue to grow. Unfortunately, non developers often don’t realize how large their programs are going to get, and when the time comes that they need to get a professional in to help, the program is in such as bad state that it’s in need of a full rewrite. Now that is a real technical debt crisis!
Old programs in old languages such as COBOL led us to the Y2K bug, and continue to be a huge maintenance burden for thousands of companies who weren’t savvy enough to gradually modernize them before they turned into white elephants.
Jonathan states “it takes a skilled programmer with years of experience just to build simple applications on today’s web” however websites are now easier to build than ever. Blogging platforms such as WordPress allow any beginner to create a site within minutes and there are more and more widgets allowing drag and drop functionality without the need for any coding knowledge whatsoever on the part of the author.
As an illustration, compare the size of the good parts with the book that covers both the good and bad parts:
In a great talk by Yehuda Katz at RailsConf 2014, he discusses the Paradox of Choice. In essence we all love having choice, but we don’t like having to choose, especially if it is a very difficult choice. Having to make a lot of difficult decisions can really sap our energy levels. Yehuda talks about the common mentality of wanting to feel special and use special tools and how it has impeded the progress towards better shared tools.
The LAW of leaky abstractions. Any time somebody couches an observation about software development as a LAW, you know something fishy is going on.
Shared abstractions are a necessary and essential part of progress for our industry. But what we need to avoid is having a big pile of hacks. In order to fully identify the useful abstractions from the less useful ones requires many users carefully evaluating over a period of time.
Eventually the community realizes that we hardly ever need to worry about the layer below anymore. The top layer of abstraction is the area of experimentation. New abstractions need time to mature before any one can be accepted as a standard.
While there is a need to maintain some amount choice, too much choice isn’t just off-putting for beginners, it wastes a lot time for professional developers as well. Instead of having to spend time and money researching and evaluating different frameworks against our project requirements, we should be in a position where we know enough to get started coding right away.
Update 30th August 2015:
I’ve just seen the talk
He says creating connected client experiences is not just about saving some money, but about company survival. Many companies delivery old website experiences look so primitive compared with Apps like Facebook that customers are moving away from using them.
– Easy (see here for my personal take on this one)
– Well known
Based on this Geoff argues
I think this argument explains a lot of the changes Microsoft have been making for ASP.NET 5. The tables have turned and we are now seeing traditional server technology having to play catch up. The whole direction of Microsoft has changed to show that their technology is a good choice for cross platform development – something it never cared too much about until recently.
This year I have been finding that the typical way that ASP.NET MVC is used to render HTML doesn’t deliver a good enough user experience and have been using it to render JSON more often. I’m also using Web API controllers instead of MVC ones just to ditch a little of the heavyweight clunkiness of ASP.NET MVC (MVC 6 can’t come fast enough for me).
One area where I think there needs to be a lot more work in is security. It’s really difficult to write a fully secure sophisticated web application even with the help of tools such as Auth0.
Other things that I find very far from enterprise quality are the number datatype and date object which remain just as awful in ES 2015. I would not want to based any financial application or a worldwide GPS system (which I work on) entirely on a language that cannot correctly add 0.1 and 0.2 together, evaluates new Date(0,0,0).toDateString() as a valid date of “Sun Dec 31 1899”, and automatically jumps forward and backward and hour for datetimes between daylight saving times.
I’ve since learned that the Big Number library is very useful for doing accurate calculations. The same author has also written Decimal.JS, which contains a number of trigometric functions.
For working with date times, the most well known library is Moment.js.
I love these highly focused libraries, and I wish they would make it into the language itself.
Because of this I believe it’s very important to keep up to date on its developments, even though many developers (at least in the London area) are currently ditching it in favour of libraries such as React.
Geoff works on Meteor JS and wants to grow this into the future platform. Since this talk was given, Meteor has actually gone on to receive more Github stars than Ruby on Rails. This doesn’t mean much, but does show that the idea behind it is a popular one.
There are interesting times ahead of us.
I love the screen shot of chrome where you search for conversion tools. In fact, Chrome lets you do calculations (2 * 3 = 6)… And conversions right in the address bar.
Pingback: Analysis of some great Tweets | Zombie Code Kill
Pingback: Building Web Applications with Node JS and Express | Zombie Code Kill