top-software-engineering-articles icon indicating copy to clipboard operation
top-software-engineering-articles copied to clipboard

Collection of top articles about great software engineering practices.

Top Software Engineering Articles

Software engineering

  • Designing something S.O.L.I.D - The SOLID principles are fundamental to explaining a part of what clean code is, but sometimes explaining what SOLID means is a task in itself.

  • Write code that is easy to delete, not easy to extend. - Every line of code written comes at a price: maintenance. To avoid paying for a lot of code, we build reusable software. The problem with code re-use is that it gets in the way of changing your mind later on.

  • The hardest problem in computer science - …is, of course, naming. Not just naming variables or new technologies. Oh no. We can’t even agree on names for basic concepts.

  • Goodbye, Object Oriented Programming - Well, OO sure promised a lot in the early days. And these promises are still being made to naive programmers sitting in classrooms, reading blogs and taking online courses. It’s taken me years to realize how OO lied to me. I too was wide-eyed and inexperienced and trusting.

  • Use Your Type System; Write Less Code - how types can influence readability and good design. He also gives a practical example of the concept of "Behaviour Attractor"

  • REST APIs must be hypertext-driven - rules before calling your creation a REST API

  • The Software Developer’s Library: A Treasure Trove of Books for People Who Love Code - A treasure trove of books for people who love code. Curated by Eric Elliott.

  • The Tools of a Blind Programmer - Software Craftsmanship to the nth degree. Read this and think how much do you master your tools?

  • The Core 6 Refactorings - The most important set to learn are the Core 6 Refactorings, plus 3 critical utility functions. These 9 operations will allow you to do the most important part of working with indebted code: read by refactoring. Fluency in these 9 is all you need.

  • I'm a good engineer but I suck at building stuff - When I try to build something new, I find myself instantly criticizing my technique, to the point of paralysis. [...] obsessing, like Catt said, over my own construct, rather than on the thing my code does.

  • How to Write a Git Commit Message - The seven rules of a great Git commit message.

  • COHESION - THE CORNERSTONE OF SOFTWARE DESIGN - Cohesion is one of the most important concepts in software design. Cohesion is at the core of the vast majority of good design principles and patterns out there, guiding separation of concerns and maintainability. The term cohesion (alongside coupling) was first introduced by Larry Constantine in the late 60s as part of Structured Design and later published in more details by W. Stevens, G. Myers, and L. Constantine in 1974. Due to the growing complexity and cost of software back in the 60s, 70s, and 80s, loads of studies and research around software design and maintainability were done. Although we can still find some of these papers and research online today, they were done in a pre-Internet era and most of the work done during that period is either lost or not easily available.

  • Normalization of deviance in software: how broken practices become standard

  • Refactoring Large Software Systems - Refactoring a software system means to refurbish it internally without interfering with its external properties. In his famous book Martin Fowler defines refactoring as follows

  • Scrum is dead: Breaking down the new open development method

  • Lessons Learned in Software Development Here is the list of heuristics and rules of thumb for software development.

  • What Makes a Good Programmer? What makes a good programmer? It’s an interesting question to ask yourself. It makes you reflect on the craft of software development. It is also a good question to ask your colleagues. It can trigger some interesting discussions on how you work together. Here are five skills I think are crucial to have in order to be a good programmer.