Following a similar approach to Sun Tzu conveying his advice in The Art of War, this book captures a compelling set of best practices for how coders, developers, programmers, and software engineers should write code to ensure a higher chance of success.
The key to success is understanding how to code and deploy a software application that meets the requirements of the client and is coded well enough to be robust but not over-engineered. The principles of understanding your enemy, i.e. bugs and defect plays a part in the education of the reader, so they can be aware of…
Some cracking suggestions to start your bookshelf
Having built up several shelves in my bookcase with technical books over the years as I was sorting them out I thought it would be interesting to arrange them by job role and task. I had several books discussing scrum and thought these few books would be a good starter for anyone new to the role or looking to become a scrum master.
I came up with these three as they are more heavily worn than the others and are very different from each other so have specific purposes.
When asked the difficult question of “how long will the project take?” we have to go through several stages. Each stage transforms the question into a different domain that we can solve, and then the final result can be transformed into the units of time and cost the originator wants to know. Our methodology and toolset have evolved to solve several of these areas neatly but there is a gap at the end which is where engineers and project managers come to blows.
So why doesn’t someone look at fixing this?
Let's start with the basic set of steps that…
Living documentation is a term used to describe strong coupling between software implementation, design, and its representational documentation. This is often achieved using a variety of parts from a toolkit to automate the parsing and conversion of information from one format to another so it can be rendered as a diagram.
The question is:
how easy it is it to do in practice?
So I decided to find out by doing an experiment to reverse engineer a database (rather than code) to understand the complexities and issues.
To draw an entity relationship diagram (ERD) showing the schema of a SQL…
The database schema, architectural rationale, and requirements are all key elements of software documentation but what tools are available to make this easier? Living documentation leverages markdown, parsing, scanning, and dynamic creation of diagrams but what is applicable for the data storage parts of the software?
There are several approaches for documentation that depend on the direction of travel, either forwards or in reverse.
Good software is often described as following SOLID principles and those principles are:
So if we applied these principles to a software developer what would they look like?
Some common issues that quietly creep up on the team and become accepted practice
This one is easy to slip into, especially with remote working. People don’t join the video call at the scheduled time so the meeting start is delayed, after a few days the team simply starts without everyone. This becomes more common and no one follows up, and it isn’t mentioned in retrospectives.
Suggestions: get group buy in to improve things, discuss at retrospectives, have a way to declare if you will be late or not attending, check if team mates are missing in case they have…
Halfway between good intentions and lost direction are Nimble principles
Having recently spoken to lots of companies that say they are doing Agile, and having worked at similar places myself, it is clear not everyone is doing the same sort of “Agile”. Now, the strong-willed and driven evangelists call this fake agile, and look down on it with disdain but I don’t think that’s fair. It certainly doesn’t encourage businesses and people in those situations to want to improve and move on. It may be the case that where they are is in fact the best place for that business…
Having built up a large book collection I challenged myself to what three books I would recommend to an aspiring or new manager in software engineering.
I came up with these three as they are well-known texts, I often refer to them, and can learn something new or thought-provoking each time I read them: