Building the Elephant

Reflections on starting projects with super-computers, and slowly turning them into heavy, slow, lethargic elephants

Jonathan Beckett
Jan 18 · 4 min read
Image for post
Image for post

While working on a software development project some time ago, I was consumed by a stack of different products and technologies — among them a collection of Windows server installations, the .NET framework, SharePoint, SQL Server, IIS, C#, WebParts, JavaScript, and a lot of either compiled or interpreted source code. While drawing nearer to a “working solution”, I began to notice the performance of the colossus we had been working on — or rather the lack of performance.

When LAMP ruled the world

It brought to mind my experiences working on open source web projects perhaps twenty years ago with PHP and MySQL — the simplicity, speed and flexibility of the LAMP platform was persuasive. It’s been a few years now since I’ve had the chance to work with PHP, and I have to admit I miss it at times.

Javascript everywhere

Node.JS has of course appeared and swept all before it, but I can’t help feeling a certain level of discomfort about it. If you’re unfamiliar, the promise is that you will be able to write both server-side and client-side code in JavaScript — thereby reducing the skillset, and hopefully improving stability and reliability through not having to integrate disparate platforms.

Here’s the thing though — there’s already a magical layer between the server and the client called HTTP. It was invented such that the server and client could be entirely foreign of one another. It’s why the web exploded in the first place.

Not really compiled

Writing server-side code in JavaScript might be an attractive proposition for those that only known JavaScript, but it never gets away from the fact that it’s an interpreted language. While JavaScript compilers have appeared and improved enormously in recent years, we end up in the crazy situation of needing to know exactly how to write code to “suit” the compiler. The difference in performance between code patterns that the compilers like and dislike is stark.

Looking back

When I left college (20+ years ago!), C++ was a new language, and OS2 was promising a world that would never happen. I had learned to program in Pascal, knew a little C, a bit of assembler — and had been taught from day one that great developers wrote clean, fast, elegant code. It came as quite a shock when I entered the world of professional software development and discovered that commercial pressures almost always ensured software was never quite as good as it might be.

There is of course a disconnect between solutions and products — while solutions tend to face death by a thousand cuts to fit a schedule or a budget, products can evolve. Interestingly, in recent years products have become services through the adoption of “software as a service”, and subscription based licenses.

Open-source remains a guiding light

Parallel to my early career, the open-source movement grew like a weed, and it was no accident that I eventually became involved — writing an early blogging script, and a content management system. They were engineered from the ground up for speed, minimal footprint, utility, maintainability, clarity, and elegance. I suppose in many ways they were a reaction to the colossal Win32 API, DLL hell, ActiveX, the “almost ANSI SQL compatible” Jet database engine, and the various other car-crash complexity nightmares of the commercial world at the time.

Open source wasn’t perfect — it still isn’t — but it was a better approach than anything that had come before, and unlocked the door towards selling services instead of products.

The .NET Framework is better than many give credit

While it might sound like I’m continually bashing commercial products, it’s worth pointing out that the .NET framework, and C# to a lesser extent are one hell of an achievement. So is Visual Studio. Granted, they steal ideas from many other software development languages (chiefly Java), but there is a clarity of thought and depth of implementation present that is incredibly impressive.

Most developers admit that Microsoft has always made some of the best software development tools available. They played the long game early on — providing the best tools to build applications for their platform, and it worked — Windows took over the (desktop) world.

Just as an aside, I tend to think Microsoft missed an enormous trick by not letting us compile .NET code directly to machine code. The .NET Framework compiles intermediate language and caches it — why not let developers do it upfront too ?

It’s a shame

It seems a shame to have fantastic hardware thundering away in a server room somewhere, and then lay an operating system on top of it that restricts all access to the hardware, code execution frameworks that compile and cache on demand, innumerable libraries to extend capabilities, followed by numerous client-side frameworks to standarise coding practices.

I have to keep reminding myself that we no longer have to worry about memory management, file handles, pointers, stacks, address space, garbage collection, and the various other demons that haunted software developers for decades.

Building the elephant

I suppose it just feels like some days we start each project with a super-computer humming away in a server farm, and we slowly turn it into an elephant… a really heavy, slow, lethargic elephant.

Originally published at https://jonbeckett.com on January 18, 2021.

The Startup

Medium's largest active publication, followed by +773K people. Follow to join our community.

Jonathan Beckett

Written by

Software and web developer, husband, father, cat wrangler, writer, runner, coffee drinker, retro video games player. Pizza solves most things.

The Startup

Medium's largest active publication, followed by +773K people. Follow to join our community.

Jonathan Beckett

Written by

Software and web developer, husband, father, cat wrangler, writer, runner, coffee drinker, retro video games player. Pizza solves most things.

The Startup

Medium's largest active publication, followed by +773K people. Follow to join our community.

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store