Category Archives: Software Construction

Topic 10 – Software Construction

Why do I need to learn about software construction?

Knowing how to write code does not mean that you know how to create real-world software. In real world, you will need to know how to manage your code, how to read the existing code, how to write code following standard styles, how to ensure that your code is working, how to automate your code building and deployment, how to handle error in your applications, how to optimize your code for speed, how to write secure code, how to avoid code duplication, how to create readable code, how to create code faster, etc. That's why you need to learn about software construction.

What can I do after finishing learning software construction?

You will know how to create a real world application.

Hmm! Is it really useful?

If you have a doubt about its usefulness then you can delay learning it until you are tasked to create a software system and you complete a half of it and are stuck there because when you add one more feature you will get tons of bugs due to the new code. After you finish fixing 1 bug, you get 3 other bugs due to the modified code that fixes the bug.
Another scenario is that when it takes another person 6 months to read and understand the code that you wrote in 3 months in order to fix a bug or to add a new feature.

Alright! What should I do now?

Software construction requires a lot of reading. In order to get familiar with software construction you will need to read at least below books.

Please get this "Steve McConnell (2004). Code Complete: A Practical Handbook of Software Construction" book and read it first.

After that please read this "Jon Loeliger and Matthew McCullough (2012). Version Control with Git: Powerful Tools and Techniques for Collaborative Software Development" book.
Alternatively, you can read  this "Ben Collins-Sussman et al. (2011). Version Control with Subversion" book.

After that please read this "Continuous Integration: Improving Software Quality and Reducing Risk" book.

After that please read this "Kent Beck (2002). Test Driven Development: By Example" book. This is an important book in this topic. Please read this book carefully.

After that please read this "Martin Fowler (1999). Refactoring: Improving the Design of Existing Code" book. This book is very important for software construction. Please read it carefully.

After that please read this "Diomidis Spinellis (2003). Code Reading: The Open Source Perspective" book.

After that please read this "Michael C. Feathers (2004). Working Effectively with Legacy Code" book.

After that please read this "Suhas Chatekar (2015). Learning NHibernate 4" book.

After that please read this "Matt Perdeck (2010). ASP.NET Site Performance Secrets" book.
After finishing the books please click Topic 11 - Software Testing to continue.