Posts

Notes about Kent Beck's substack

These are my notes from the Kent Beck's substack pages.  Thinkies All Thinkies are just random Beck's ideas which came with a disclaimer - evaluate them yourself. They just as well might be bad ideas. Thinkie:  Win/Win  - well-known. Try to make a decision that is good for everybody. Thinkie:  Survivable?  - when you cannot make a decision, think about its reversibility. If you can survive the negative outcome, act in cheapest, fastest way that could generate value. Otherwise mitigate risk. Thinkie: Your Position - conversation got stuck on resolution, but otherwise seems promising. Try to summarize other party's position in a way they would agree with. Thinkie: My Perspective - when you have trouble communicating with someone, tell them to look at the problem from your perspective. Sounds quite opposite to the usual advice, but it can help sometimes. Thinkie: Easy Bit - when stuck on a hard problem, pick an easiest thing which helps and do that. It might uns...

Notes about Modern Software Engineering

Notes to my future self about David Farley's book Modern Software Engineering. IMHO the book was quite boring, and presented just a few new ideas. Chapter 1 - Introduction We need to become  experts in learning and  experts in  managing complexity . The scientific method we learned at school: Characterize - make an observation about the current state. Hypothesize - create a theory explaining the observation. Predict - make a prediction based on hypothesis. Experiment - test the prediction. When we implement many small experiments this way, we will limit our jumping to wrong conclusions and do a better job. Software engineering is the application of an empirical, scientific approach to finding efficient, economic solutions to practical problems in software. To become experts in learning , we need the following techniques: Iteration, Feedback, Incrementalism, Experimentation, Empiricism . To become experts in managing complexity we need: Modularity, Cohesion, Separati...

Notes about Tidy First?

This is a short new book by Kent Beck, having almost 100 pages #surprising . Most of the chapters are one or two pages long. Foreword I liked an old quote by Benjamin Brewster in Foreword, saying: In theory, there is no difference between theory and practice, while in practice, there is. According to Larry Constantine, who wrote the Foreword and who coined Cohesion and Coupling, Cohesion and Coupling are how our brains deal with complicated systems. Using relationships between pieces of code. Nice and tidy. That's the theory. Preface Beck calls his design "Empirical". Why? The most debates in software design are about microservices, how big repositories should be, events versus explicit calls, objects versus imperative code. These "What" debates hide more fundamental disagreement in software design. What Beck misses in the debates is "When". We have two extremes from the "When" perspective: Speculative design - we know what we will want to d...

Notes about Growing Object-Oriented Software, Guided by Tests

These are my notes about the the book of London school of thought regarding TDD. Both Martin Fowler in his essay and Kent Beck in the Foreword say they practice TDD differently. Therefore I was expecting what I thought was mockist style of testing, with too-small unit tests coupled too much to the implementation, based on what I saw in some companies in Prague (Czechia). I was very surprised with the quality of tips the authors provided. I don't like the first part of the title of the book, a farming metaphor of programming, because if overextended, it would seem like we are out of control of growing the software. I do like the subtitle, being "guided by the tests". The authors make a point of " listening to the tests " and responding to hints of the tests about the design of the production code as well. Chapter 1 - What Is the Point of Test-Driven Development? We know building the software is a learning process and we know there will be changes. What we need i...