Mark van Venrooij

Mark van Venrooij's blog

Category: Book reviews (page 1 of 2)

Review: The clean coder

Cover of the clean coder

The clean coder

Last week I finished reading The clean coder written by @unclebobmartin. The book’s subtitle: “A Code of Conduct for Professional Programmers”, summarizes the book quite good.

Throughout the book @unclebobmartin tells about his own experiences during his career. Also he illustrates the points he wants to make with excellent example discussions between (project) managers and developers. These example stories are quite entertaining and make the book easy to read.

The first few chapters discuss how a professional developer behaves as a person. It’s all about managing expectations & making sure that you’re in the right state to do your job. After that some practices that improve the quality of your work are introduced. Examples practices are TDD, testing in general and estimation. The last chapters discuss how to behave in a team. A embarrassing paragraph in these chapters is called “Degrees of failure”. In that part @unclebobmartin basically explains how the education system fails to educate software developers.

It’s a nice book to read and has nice suggestions how software developers can improve their work and become craftsmen. However many of these tips are not new to me. They can be found in the enormous blob of blogs about agile / lean / etc. development. Only the estimation chapter gave me some real new information. Because the book is written in @unclebobmartin’s distinctive style I still recommend the book. The pragmatic programmer is a different league though.

Review: The pragmatic programmer

The Pragmatic programmer

The Pragmatic programmer

Finally I had time to read the pragmatic programmer: From journeyman to master. I wish I prioritized differently. The book is written by @PragmaticAndy & @pragdave. This is the second book written by Andy Hunt I’ve read. Read my blog posts about that book. The pragmatic programmer is ranked 2nd in “Top Ten Most Influential Programming Books of All Time”. I don’t know if that is true but I think every software developer should read this book.

First of all the book is easy to read. It sometimes reads like a novel. In the book many topics are covered. From using a VCS via architectural principles to practical advice how to handle problem solving. Throughout the book you find 70 tips. These tips are also collected in a quick reference guide in the back of the book. Some of the tips:

3. Provide options, Don’t make lame excuses
Instead of excuses, provide options. Don’t say it can’t be done; explain what can be done.

8. Invest regularly in your knowledge portfolio
Make learning a habit.

20. Keep your knowledge in plain text
Plain text won’t become obsolte. It helps leverage your work and simplifies debugging and testing.

55. Don’t think outside the box – Find the box
When faced with an impossible problem, identify the real constraints. Ask yourself: “Does it have to be done this way? Does it have to be done at all?”

In the book there are many analogies used. These make the advice easier to remember. I won’t forget broken windows theory and Cooking stone soup. The book is pretty old. It has been published in 1999, but for me it is still accurate. Yes there are some things when you notice that the book is that old. CORBA is named and EJB is marked as a good example for configuration over integration. As a developer working in the Java world using Spring, Hibernate and all the other frameworks. I agree that configuration has his place. However many times I’ve been in configuration hell. For me this mantra has evolved to be convention over configuration, mostly popularized by Ruby on Rails.

Overall the book overall covers many practices and tips that are still useful. Some of them you know already, some might be new. I gained the most insight in the plain text chapter. The combination of plain text with version control is fantastic. I would strongly recommend reading this book.

Review: HTML5 and CSS3

Kaft van het boek

HTML5 and CSS3: Develop with Tomorrow’s Standards Today

Zoals ik in mijn vorige blog al zei zijn wij net terug van vakantie. Ik ben ‘s morgens altijd vroeg wakker, zo ook op vakantie. Terwijl mijn partner nog slaapt lees ik altijd van alles. Op vakantie waren dit drie dingen:  read later lijst in instapaper (zie ook de tweets op de dag dat ik terug kwam),  het boek de Berlijnse trilogie van Philip Kerr (een aanrader voor mensen die van een beetje cynische detectives houden) en het boek HTML5 and CSS3: Develop with Tomorrow’s Standards Today. Deze post is een review van het laatste boek.

Het boek is bevat 4 delen. Deel 1 is eigenlijk één hoofdstuk met een kort overzicht van  HTML5 en CSS3. Meer een vooruitblik van wat er komen gaat. Deel 2 heeft als titel improving interfaces. Hierin komen de nieuwe HTML tags en CSS3 uitgebreid aan bod. Deel 3 bespreekt de audio en video tags met de daarbij behorende problemen. Deel 4 heeft als titel beyond HTML5 en gaat over de client-side data API, geo-locatie API, web-sockets enz. Dit zijn API’s die officieel niet (meer) tot HTML5 en css3 behoren maar er wel aan relelateerd zijn. Het boek is heel prettig te lezen. De tekst wordt geïllustreerd met veel code voorbeelden. Verder is er ook uitgebreid aandacht voor alternatieve oplossingen voor oudere browsers (bijv. ie6 😉 ).

Al met al een nuttig boek voor iemand die niet alle informatie zelf wil verzamelen via verschillende online artikelen/blogs. Voor mij heeft het boek vooral aangetoond dat (delen van) HTML5 en CSS3nu al gebruikt kunnen worden. Dus wacht niet langer en gebruik de nieuwe standaarden nu!

Growing object-oriented software guided by tests (A.K.A. Goos)

Growing Object-Oriented Software, Guided by Tests

Growing Object-Oriented Software, Guided by Tests

Dit is een review van het boek: Growing object-oriented software guided by tests geschreven door Nat pryce en Steve Freeman. Een aantal maanden geleden heb ik al een eerste blog geschreven over een klein detail van dit boek. Voordat ik het boek ging lezen had ik al enige kennis van TDD, maar deze kennis wilde ik graag uitbreiden.

Het boek

Het boek beschijft een manier om met behulp van TDD OO software te ontwikkelen. Binnen het boek wordt hevig gebruik gemaakt van Mock objecten om de ondeliggende code te testen. Ook wordt er gebruik gemaakt van geautomatiseerde acceptance tests. Deze variant van TDD die ook wel de “London school” wordt genoemd is (mede) bedacht door de schrijvers van het boek.

Het boek heeft 5 delen. Deel 1 is een introductie van TDD is en waarom het te gebruiken. Deel 2 beschrijft het TDD proces dat gebruikt wordt in detail. Deel 3 is een groot voorbeeld waar de theorie in de praktijk wordt gebracht. Deel 4 legt uit hoe je kunt zorgen dat je tests onderhoudbaar worden/blijven en tot slot behandelt deel 5 nog een aantal advanced topics.

Deel 1 en 2

Door het lezen van deel 1 en 2 krijg je een goed idee hoe het proces wordt aangepakt als je deze methodiek volgt. Belangrijke concepten:

Het laatste hoofdstuk van deel 2 is interessant omdat daar een aantal redenen wordt gegeven om nieuwe objecten en value types te introduceren. Waarschijnlijk zijn deze wel bekend, maar de opsomming zorgt voor extra houvast.

Redenen om value types te introduceren:

  • breaking out: te complex object vraagt om opsplitsing
  • budding off: een nieuw type om een Domain concept te vangen. Kan slechts 1 field zijn of zelfs geen enkel.
  • bundling up: als het vaak voorkomt dat we een aantal variabelen samen gebruiken kan het nuttig zijn om ze samen te voegen in een nieuw type.

Objecten ontstaan als:

  • breaking out: opsplitsen van te complex object.
  • budding off: nieuwe functionaliteit past niet in het huidige object en vraagt om een nieuwe class.
  • bundling up: als 2 objecten samen werken is het misschien nodig om de objecten in een nieuwe class te bundelen. The composite is simpler than the sum of his parts.

Deel 3

Na het lezen van deel 1 en 2 dacht ik dat ik de materie begreep. Dit bleek echter niet het geval. In deel 3 wordt een voorbeeld uitgewerkt. Dit is in dit geval een “Auction sniper”. Deze auction sniper kan op veilingen bieden tot dat een (ingegeven) maximum bedrag is bereikt. De GUI laat de status van de huidige veilingen zien.

In het voorbeeld wordt er stap voor stap gewerkt naar een volledige applicatie. De schrijvers leggen ook uit waarom ze voor welke stap kiezen. Gedurende Stap voor stap ontstaat een beter design van de applicatie door te luisteren naar de “test smells”. Door het voorbeeld werd mijn inzicht in OO-design in ieder geval vergroot. En ik denk dat TDD helpt bij het verkrijgen van een betere architectuur. (Zie ook mijn eerdere blog hierover.)

Deel 4 en Deel 5

Deel 4 beschrijft hoe slecht design van je applicatie zichtbaar wordt en hoe je jouw (unit)tests onderhoudbaar kan houden. Deel 5 legt uit hoe je persistence frameworks, threaded applicaties en asynchrone code kunt testen.

Conclusie

Als je nog niet ervaren bent in TDD/OO en je wilt meer inzicht verkrijgen is dit een zeer nuttig en praktisch boek om dit te leren. Het is helder en duidelijk geschreven en het voorbeeld geeft groot inzicht. Gedurende het lezen was ik wel af en toe de structuur kwijt van het voorbeeld. Terugbladeren en de schema’s bekijken in het vorige hoofdstuk hielp dan enorm. Graag had ik de schema’s wat vaker zien terugkomen. Het kan er echter ook aan liggen dat ik het boek gedurende een aantal maanden gelezen heb. Als dat binnen een kortere tijdsperiode gedaan wordt verwacht ik dat terugbladeren minder nodig is.

P.S.
Sommigen denken dat je moet kiezen tussen de London school en classic TDD. Jason Gorman heeft daar naar mijn idee een goed antwoord op gegeven. Hij stelt dat ze beide nodig zijn.

DIY Brain surgery – Part 2

Pragmatic thinking and learning

Book cover

Book cover

Dit is het tweede deel van de review van het boek van Andy Hunt. Klik hier voor deel 1 van DIY brain surgery. Zoals beloofd gaat dit deel over hoe je zo goed mogelijk nieuwe dingen kunt leren. Verder wilde ik nog enkele tips uit het boek geven hoe je optimaal te focussen.

Leren

Mindindmapping

Zoals ik al verteld heb in de eerste blog uit dit tweeluik maken wij tweakers nog te weinig gebruik van Rich-mode thinking. Om Rich mode thinking te gebruiken tijdens het leren kan het nuttig zijn om mindmaps te maken. Wie nog nooit gehoord heeft van mindmaps kan hiernaast een voorbeeld vinden. Meer informatie over mindmapping op wikipedia. De mindmap hier naast is niet geheel toevallig de mindmap die Andy Hunt heeft gemaakt om zijn ideeën voor een boek te concretiseren en organiseren. Zoals je kunt zien zie je een natuurlijke structuur ontstaan in het plaatje. Dit wordt nog eens versterkt door de kleuren die gebruikt worden. De structuur die je ziet wordt verwerkt door je R-Mode en help je om je geleerde stof beter op te slaan in je hersenen. Mindmapping werkt voor mij redelijk. Het grote voordeel is dat je de relaties tussen allerlei gedachte gangen makkelijk kunt weergeven. Ik gebruik het vooral tijdens het brainstormen.

Mindmap Pragmatic learning and thinking

Mindmap Pragmatic learning and thinking

Studeer samen

Ook kan het helpen om samen met anderen hetzelfde boek te lezen of dezelfde studie te doen. Zelfs als je het motivatie aspect buiten beschouwing laat, kun je door over de bestudeerde stof te discussiëren je begrip van de stof versterken. Ook door anderen dingen uit te leggen kun je de stof beter begrijpen zoals in het volgende stukje wordt uitgelegd.

Teach others

Een andere manier om het net geleerde beter op te slaan is door het proberen uit te leggen aan een ander. (Bloggen is ook je kennis uitdragen.) Het liefst iemand die totaal niet bekend is met hetgeen je net geleerd hebt. Door het uit te leggen aan een leek, moet je zelf hard nadenken en analogieën bedenken. Door de patronen die je dan bedenkt geef je alles een betere plaats in je eigen geheugen. Als er geen leek gevonden kan worden werkt het ook heel goed om tegen de rubber duck te praten. Zelf heb ik nog geen ervaring met deze techniek. Ik ben nog op zoek naar mijn eigen duckie.

Rubber duck

Rubber duck

Gebruik je nieuwe skills en kennis

Nu heb je iets nieuws geleerd en je weet er alles van. Om deze kennis te behouden is het essentieel dat je de kennis gaat gebruiken. Daarmee versterk je niet alleen je verbindingen in de hersenen mee, maar je krijgt ook een beter gevoel hoe de kennis toepasbaar is. Kennis die je opgedaan hebt en niet gaat gebruiken vergeet je weer. Dus experimenteer en gebruik je net geleerde kennis.

Focus

Je kunt je brein het best gebruiken als je geconcentreerd bent. Dus technieken die je helpen te focussen zijn winst. Het grootste gevaar voor concentratie is een onderbreking. Het kan 15 – 20 minuten kosten om weer terug op punt te komen waar je was gebleven voordat je gestoord wordt. Er is de geschiedenis nog nooit een tijd geweest waar zo veel onderbrekingen waren als nu: een e-mail komt binnen, je wordt gebeld, je manager staat aan je bureau om jouw input te vragen en een collega heeft een vraag. Ondertussen probeer je tijdens de dag een super ingewikkeld probleem op te lossen. Elke keer als je gestoord wordt door een van bovenstaande feiten ben je dus weer 15 minuten kwijt met het op orde krijgen van: waar was ik gebleven. Dus de onderbrekingen onder controle houden is een belangrijk middel om je hersenen maximaal te gebruiken.

e-mail alerts

Iedereen kent het wel. Opeens verschijnt er een pup-up met een e-mail van je baas. Even snel scannen wat het is -> klik erop en de mail wordt geopend. Nadat je de mail gelezen hebt valt het je op dat je nog meer ongelezen e-mails hebt -> even lezen. En weg is je concentratie. Stap 1 om je onderbrekingen te beperken: disable je e-mail alert. Nee echt doe het nu maar. Meestal wordt een reactie op e-mail niet binnen 10 minuten verwacht (mocht dit wel zijn dan moet je daar toch eens met je collega’s over spreken). Als je dan klaar bent met je taak check je je e-mail en ga je verder met de volgende taak.

Zorg voor een tweede monitor en virtuele desktops

Op het moment dat je bezig bent en je moet even wat informatie kopiëren uit een ander document dan alt-tab je naar het programma dat je nodig hebt. Bij het alt-tabben kom je de eerste keer uit bij het verkeerde programma -> poging twee werkt dan wel.

Ondertussen ben je weer vergeten welke info je exact nodig hebt en moet je weer terug. Deze weergave lijkt misschien wat overdreven, maar is niet zo ver weg van de werkelijkheid. Dus ga een tweede monitor halen en zet de informatie naast elkaar. Als je dit overdreven lijkt probeer maar je belastingen (op papier) in te voeren op een 15 inch bureau. Gegarandeerd dat het niet past. Onderzoek heeft uitgewezen dat er er een productiviteitswinst van 20% tot 50% procent behaald kan worden. Verder kan het helpen om virtuele desktops te creëren op je pc / mac. In elk besturingssyteem is het mogelijk (win -> MSVDM, Mac -> spaces, Linux -> Virtual desktops). Door verschillende virtuele desktops in te richten voor specifieke taken kun je een context creëren waarin je specifiek 1 taak kunt doen. Bijvoorbeeld Desktop 1 -> communicatie software (e-mail, messenger webmail etc.) desktop 2-> programming env. en desktop 3 -> internet omdat je toch ook af en toe moet ontspannen.

Manage je kennis

Je brein kan ontzettend veel gegevens op slaan. Alleen is het doorzoeken van de gegevens moeilijk. Ook worden herinneringen in je brein soms vervuild door nieuwe input. Een oplossing om je kennis te managen is het onderhouden van een persoonlijke wiki. Dit is een makkelijke manier om je kennis op te slaan op het moment dat je er mee bezig bent. Simpel te gebruiken en door de crosslinks die je kunt maken binnen wiki’s kun je makkelijk de verbanden aangeven.

Mijn ervaringen met focus technieken

Op dit moment schrijf ik de blog in Virtual desktop 2 waar ik op mijn tweede monitor mijn personal wiki heb staan met de outline van de blog. Met andere woorden ik denk dat al deze technieken een positief effect hebben op mijn focus mogelijkheden. Dus wil ik tegen jullie allemaal zeggen probeer ze uit en kijk wat voor jou werkt. Een ander boek dat ook door Andy Hunt genoemd wordt is Getting Things Done(GTD) van David Allen. In het GTD boek wordt beschreven hoe je je tijd maximaal kunt gebruiken. Uit eigen ervaring kan ik zeggen dat GTD werkt. Dit geheel tegen mijn eerste scepsis in.

Older posts

© 2018 Mark van Venrooij

Theme by Anders NorenUp ↑