I got my very first PC in the late 80s. It was a ZX-Spectrum, with a processor running at a whopping 3.5 MHz.
Despite costing an arm and a leg, this PC came with neither a hard-drive nor a screen. All you got was a plastic, weird-smelling case and a built-in keyboard with randomly sticking keys.
Yet I didn’t care about these minor annoyances because of a wonderful new feature:
You could tell this computer what to do by typing in instructions!
I started tinkering with the ZX. There was no Internet back then, and Google wouldn’t launch for another two decades. So, I could only rely on the printed documentation that shipped with the computer.
I got my first meaningful program up and running in about a month or so. It solved a second-order polynomial equation ax2 + bx + c = 0 for x. Not a big deal, but I was extremely proud of it.
Of course, the code would vanish once I unplugged the computer because I couldn’t afford a digital cassette recorder.
Fast forward to 2005.
I’m sitting on a plane to Germany. I’ve been assigned to boost a software system’s performance that powers thousands of medical devices across the world. This improvement would cut down the time patients had to spend in MR and CT machines by half.
It’s quite a significant achievement, but it’s been a long journey getting here. And it all started with that simple quadratic equation solver I had written 25 years earlier.
Now, what does it take to write complex software systems? You might think it’s similar to developing smaller apps, but it just takes a bit longer.
That couldn’t be farther from the truth!
Building professional software involves a lot more than just knowing a programming language. First, we need to understand what the client actually wants. Although that sounds pretty obvious, it’s not as straightforward as you may think.
More often than not, clients just think they know what they want. We need to clarify their goals and the requirements before writing even a single line of production code. Otherwise, time and money are utterly wasted, and the project is doomed to failure.
Now, we can start coding, right? Not so fast!
You wouldn’t start building a house by laying brick upon brick. It would definitely help if you had a plan. Similarly, software development is not exclusively about coding. We first need a design. And unlike with building houses, the client may change their mind frequently. You better be prepared for that.
I distilled everything I know about modern software in my UML and Object-Oriented Design Foundations course. Click here to get it at a friendly price or use this direct link: https://www.udemy.com/course/uml-and-object-oriented-design-foundations/?couponCode=UML-2020SEP
If you have any questions, please message me and let me know how I can help.