Skip to content

Latest commit

 

History

History
23 lines (12 loc) · 2.15 KB

software-development-principles.md

File metadata and controls

23 lines (12 loc) · 2.15 KB

Software Development Principles

Software development principles are something you will continuously improve on for your entire career as an engineer.

Why it's important?

Everything we are doing with respect to code quality is to make the system easy to change. There are typically 3 types of changes in a system: you add something (a feature), you remove something (dead code) or you replace something (refactor, update).

The idea of clean code is that it will keep the system easy and quick to change by making sure that the code is written in a way that is easy to understand, isolated so the developer doesn't break multiple components if a bug is introduced and split into intuitive parts. For most projects execution performance isn't the main goal.

How do we achieve it?

By reading books and practicing. In this chapter we will focus on the first part.

Keep in mind that most of the books mentioned here aren't a one time read. You want to reread them periodically, say every couple of years and you will see that each time you come to different conclusions and even though the words are the same the meaning behind them has changed.

If you are in the beginning of your career, let's say under 1.5 years of experience consider reading Code Complete. It is, frankly, too long of a book if you have been in the game for longer, but it has really clear explanations and covers a very wide variety of source code level topics.

The Pragmatic Programmer is a great book with lots of practical advice. It's also great for starting to build your mindset.

Clean Code is another classic that builds both mindset and practical tips. The author, Robert C. Martin has a whole series of books. I recommend all of them.

Design Patterns are ways to achieve the SOLID principles, so any good book on either subject will cover both of them. They aren't a silver bullet, in IT nothing is, but they are something that will give you a much needed structure. A lot of people fall into the trap of elaborately trying to reinvent the wheel. Don't be one of them - learn and use the verified solutions and once you gain enough experience you will be able to innovate where it makes sense.