2

Modern Software Engineering [Book Notes]

 2 years ago
source link: https://dev.to/jorgetovar621/modern-software-engineering-book-notes-5fdn
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Notes

What's Software Engineering

TL;DR: A scientific approach to creating Software. Full of information on how to master learning and handle complexity in our field.

Modern Software Engineering Book

  • Software Engineering applies a scientific approach to finding solutions to problems.

  • Engineering is stuff that works!

  • Software development is the process of discovering and learning, so we need to become experts at learning and handling complexity.

  • Software Engineering practices must allow us to build software faster and better. If not , it is just a waste of time.

  • Software is not a Production problem (physical things with a high cost of replication). Then we need to use different tools for the job such as testability, experiments, continuous delivery remember that our real focus is learning and discovery.

  • Our Aim as software engineers is to create systems with high Stability and High Throughput (Measuring Performance)

Stability = Change Failure Rate + Recover Failure Time
High Throughput = Lead time + Frequency of Deployment

Optimize for Learning

Learning is a fundamental factor in our job as professionals, also key in the discovery process of our systems.

  • Iterative
  • Incremental
  • Empiricism
  • Feedback
  • Experimental

The main idea is to focus on small steps gathering feedback and adjust.

  • Work in a way that allows us to make mistakes
  • Explore the problem and make experiments controlling the variables
  • We need to learn from previous experiences

Optimize for handling complexity

Edsger Dijkstra said
The art of programming is the art of handling complexity

  • Cohesion
  • Coupling
  • Separation of concerns
  • Modularity
  • Information hiding and abstraction

The main idea is focus, keep things simple.
Remember that Simple != Easy

Tools to support engineering in Software

  • Testability
  • Deployability
  • Controlling the variables
  • Continuous delivery

One of the main takeaways for me in this chapter was tackling problems from:
Business Vision, Goals > Technical Architecture > Process > Organizational Structure

instead of

Organization Structure> Business Vision, Goals > Technical Architecture > Processes

Conclusion: this book provides valuable insights about Software Engineering and the practices that allow us to work on a Scientific approach.

Dave Farley Youtube
Dave Farley Twitter


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK