news.volyx.in

Laws of Software Engineering (lawsofsoftwareengineering.com)

1172 points by milanm081 · 85 days ago · 529 comments on HN

Article summary

The article presents a collection of principles and patterns that shape software systems, teams, and decisions, known as the Laws of Software Engineering. These laws cover various aspects of software development, including design, testing, and team management. The collection includes 56 laws, each with a short explanation, and is intended to provide a quick reference for software engineers. The laws are grouped into categories and can be accessed through a browsable site.

Main themes

  • Software Engineering Principles
  • System Design
  • Team Management
  • Testing and Optimization
  • Complexity and Abstraction

What commenters say

  • The Laws of Software Engineering are a useful collection of principles, but some laws may be overstated or misused in real-world applications.
  • Iterative development is generally superior to overly deliberate and careful development, as it allows for faster adaptation to changing requirements and unexpected problems.
  • Encapsulating complexity in components can effectively eliminate it, making it easier to work with complex systems, but this approach may not always be effective.
  • Some commenters argue that the term 'laws' is misleading, as these principles are not absolute or universally applicable, but rather guiding principles for software engineers.
  • The importance of simplicity and readability in code is emphasized, with some arguing that simpler code is often faster and more maintainable, while others argue that optimization is sometimes necessary.
  • There is a tradeoff between simplicity, correctness, and performance, and finding the right balance is crucial in software development.
  • Some commenters suggest that the Laws of Software Engineering should be supplemented with other principles and patterns, such as those related to human factors and user experience.
  • The role of abstraction in software engineering is debated, with some arguing that it is essential for managing complexity, while others see it as a potential source of problems.