Software Development 101

Lessons learned and shared wisdom from a career software developer

Jonathan Beckett
Jan 14 · 6 min read
Image for post
Image for post

Understand requirements

Most software is written in response to a real-world requirement. It’s easy to read proposed requirements and interpret them in terms of existing knowledge. While working through potential solutions, it’s worth taking a step back — to do some discovery work around the capabilities needed in the solution and to make sure your proposals satisfy the requirements.

Plan ahead

I’m often reminded of a saying I once heard — “measure twice, cut once”. Don’t start coding a vastly complex solution until you have broken down what each element of the solution will need to do, how well it will need to perform, how it will integrate with other elements, and so on. Draw entity diagrams, talk the design through with your peers and get second opinions. Defend your choices, but also take advantage of the skills and experience of others.

Code with style

If you have never worked in a team with other developers, I cannot emphasise enough how important it is to write clean, tidy code. There are very few excuses with modern development environments, which bristle with features to assist in code-layout and presentation. The internet is also full of open source projects that can be reviewed.

Comment, comment, comment

Commenting your code should be a given — you’re probably going to need to look at it again in six months — maybe several years from now. Guide the reader through more complex functions — preceding anything complex with a simple sentence explaining what’s going on. Don’t force the reader to interpret your source code.

Keep it simple

The most common reason to complicate code is to chase performance — so weigh the need for it against more elegant code that works well enough. This is a double-edged sword — while the purists will always want to write the most performant code, it has to be weighed against the time required to understand and manage the code going forwards — the fastest solutions are often less obvious, and more difficult to maintain.

Do not re-invent the wheel

It pays to know the programming language you are using — put some work into learning what toys are in the box. As an example, both JavaScript and C# have evolved tremendously in recent years — allowing for more succinct coding patterns. Where previously it might have been somewhat complex to perform functions such as walking through filtered and sorted collections of objects, language improvements have made such tasks trivial.

Document everything

For anything but the smallest projects, it pays to have documentation — both to record your thinking during design and development, and for others to refer to when coming into a project. One of the huge fallacies associated with agile development is that the developers can just start coding, and figure things out as they go — this almost always leads to disaster.

Pay your code tax

Nobody is perfect — you will realise there were better ways of doing things half-way through the development of a project. If in doubt, always re-design or re-write code rather than patch it.

Push commits for a reason

During development, most developers check their code into a source code repository at the end of every day. This is fine — it safeguards your work, and the commits tell the story of how the project was built.

Stay humble

No matter how clever you think you are, others will think of better ways of doing things. No matter how fast you think you are, others will be faster. Here’s the thing — it’s not a competition.

Finally, it’s not about you

Software development is never really about how good you are at programming (although it helps a lot) — it’s more about understanding requirements, communicating well, having a great work ethic, being relatively pedantic, and above all being thorough.

The Startup

Medium's largest active publication, followed by +775K 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 +775K 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 +775K 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