Write code for humans first, computers second

When first learning to develop software, it’s natural to focus on getting your code to work as your first priority. As development is an incremental process, between multiple changes and attempts to get your code working, it’s natural that your first working version of your code is probably, to put it bluntly, a mess.

As you progress in your career, you realize the importance of developing code that is easy to read and understand, because at the end of the day, any software developed or maintained by a team has to be read and understood by other developers, not just the original developer. If no-one else on your team and understand your code then it’s unmaintainable and that poses a long term risk; if it breaks who is going to be able to fix it?

I commonly see posts online by new developers who are first starting out questioning the point and importance of spending time to refactor code, ensuring code is clear and readable, in essence, all attributes of maintainable code. The first time you come across code that you struggle to understand and you’re faced with making updates or fixing an issue, you’ll quickly realize the importance of developing code that is easy for other humans to understand.

This is not a new concept, it’s summarized clearly by the famous quote from Donald Knuth:

“Programs are meant to be read by humans and only incidentally for computers to execute.”

There is no fast track to gaining experience in Software Development

It’s a common mistake in our industry that people when first starting out believe they can spend [insert any short number of days here, like 30, 60, 100] days learning a programming language and then they’ll be an expert, easily get a job and hit the ground running. The reality is that software development is not something that you can learn over night, it take time, and it takes practice (with regular feedback).

You can learn the basics of programming and a specific language in a few weeks, but to take those basics and use that knowledge to build anything larger than a simple app or contribute within a development team, you’ll rapidly discover how much you actually don’t know.

A career in software development is a continual learning process. As you work with a specific toolset in a specific functional area, you’ll continually come across new things that you haven’t seen before, you’ll see what works and what doesn’t work. You’ll gain experience as you go and become more comfortable applying your skills and experience to solve problems you’ve seen before, and also become more comfortable solving new problems as what you’ve seen before often helps understand a new problem and find an appropriate solution quicker.

When you start a new project or a new job, you’ll often find this whole process repeats, especially if you’re starting with a new framework or toolset that you haven’t used before. And this repeats throughout your career.

It takes time to gain experience, and unfortunately there is no quick or easy shortcut other than hands-on experience, practice, and continual learning.

Getting started in software development? Make sure you learn and start using version control early

Version control is an important part of software development, all commercial software development projects use some form of version control, these days it’s likely to be git but there are other alternatives. Even if you are working on your own small personal projects, get into the habit of committing your code changes frequently and pushing to a remote repo.

Why would you bother doing this even for personal projects?

  • it gets you used to using a tool like git, before using it on a larger project
  • you can checkout any previous commit if something breaks and you need to roll back changes
  • if you’re pushing to a remote repo you also have a remote backup

The Fascination with Pizza in Tech

I’m not talking about quantities of pizza consumed, neither Amazon’s now commonly known two-pizza rule as the ideal team size. Rather how pizza has played a common part of many firsts and iconic moments in software and internet history:

The first online sale on the internet in 1994 was reportedly a pizza sold by PizzaHut via their PizzaNet webpage, which interestingly is still up and live on their website (although no longer functional):

Solaris 2 had a demo app developed with the NeWS toolkit called PizzaTool, that was well known if you ever worked with Solaris.

CyberSlice, an online pizza ordering company formed in 1996 which facilitated online pizza ordering for other pizza restaurants even if they didn’t have an internet connection, the system automated phone calls to restaurants to place orders on behalf of customers. The system was built with NeXT WebObjects, and Steve Jobs demo’d the first online order using the system live at a press conference.

Know of any more? Leave a comment!