Posts

Showing posts with the label productivity

Notes about Extreme Programming Explained

I've wanted to read Extreme Programming Explained for quite some time, but I couldn't get my hands on the first edition from 1999, which is written in a less politically correct style than the second edition from 2004. I finally managed to get it, so I'm now writing notes for myself as I read it. Foreword The foreword by Erich Gamma starts off with a witty irony, suggesting that a software methodology based on putting programming front and center surely can't work. What caught my attention was that even back in 1999, Gamma was working in a distributed team that exchanged specifications, tests, bug reports, and everything else in the form of code. Preface For some people, Extreme Programming (XP) is just common sense. So why the word “extreme” in the name? Kent Beck took several proven programming practices and pushed them to the extreme: Code reviews are good → Pair programming Testing is good → Unit testing (by programmers), functional testing (by customers) Design →...

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...