Jurjen van Ooijen
Freelance software developer
Wat heb ik recent gelezen? Building Microservices. Designing Fine-Grained Systems
Sam Newman
Goede introductie in de microservices architectuur. Aan de hand van een voorbeeld "monolitisch" systeem wordt uitgelegd hoe je een dergelijk systeem in kleinere services kunt opbreken. En wat dat onder andere betekent voor deployment, testen, security en monitoring.
Toegevoegd op: 20-2-2017

Wat lezen we momenteel? Beyond Legacy Code. Nine Practices to Extend the Life (and Value) of Your Software
David Scott Bernstein

En waar heb ik wat van opgestoken en kan ik aanbevelen?

Agile Testing: A Practical Guide for Testers and Agile Teams
Lisa Crispin, Janet Gregory
De auteurs beschrijven op basis van de Agile Testing Quadrants hoe een tester bij kan dragen aan het tijdig opleveren van een kwalitatief goed software product. In de Agile Testing Quadrants wordt onderscheid gemaakt tussen tests die het team ondersteunen tijdens het ontwikkelen (o.a. unit en functionele tests, voorbeelden) en tests die het product bekritiseren (o.a. exploratory, usability, performance tests). Deze tests worden verder onderverdeeld in tests die de interne kwaliteit (o.a. unit en load test) of de externe kwaliteit (functionele en exploratory tests) van de software controleren. Elk type test wordt duidelijk uitgelegd en aangevuld met praktijkervaringen van de auteurs, foto's en voorbeelden. Tot slot worden de werkzaamheden in een iteratie verteld vanuit het perspectief van de tester. Hij helpt de Product Owner of de klant bij het uitdrukken van functionele wensen in voorbeelden en (geautomatiseerde) tests. Hij geeft op basis van de tests feedback aan het team over de kwaliteit van het product en de voortgang. Hij schrijft mee aan de systeemdocumentie, helpt bij de installatie en leidt gebruikers op. De Agile Tester is, kortom, een onmisbare schakel in een agile ontwikkelteam.
ATDD by Example: A Practical Guide to Acceptance Test-Driven Development
Markus Gärtner
Aan de hand van 2 voorbeelden wordt de theorie en praktijk van ATDD uitgelegd. In het eerste voorbeeld wordt getoond hoe een team samenwerkt bij het automatiseren van de acceptatietest criteria van een parkeerkosten calculator. De calculator wordt met Ruby geïmplementeerd. (Ik miste echter de daadwerkelijke calculatie op basis van de tijdsduur in het voorbeeld). De tests met Cucumber scenario's volgens de Given-When-Then structuur. Het tweede voorbeeld werkt met Java een stoplicht systeem uit middels tabel-gedreven FitNesse tests. Het boek laat zien hoe de teamleden (tester, ontwikkelaar, domeinexpert) samenwerken om tot test voorbeelden te komen. Hoe je de testcases kunt verbeteren, door op zoek te gaan naar de "grensgevallen" en dubbele te verwijderen. Hoe je code ontwikkelt "van buiten naar binnen". Hoe je er voor zorgt dat de tests onderhoudbaar blijven. Dat je ook tests moet maken voor de test "glue code", de code die de applicatie loskoppelt van de tests. Het boek is een goed begin als je nog niet bekend bent met ATDD. Ook zonder (veel) kennis van Java of Ruby zijn de voorbeelden goed te volgen.
Basisboek wiskunde
Jan van de Craats, Rob Bosch
Het Basisboek wiskunde is een introductie in getallen, algebra, vergelijkingen, meetkunde, functies en calculus (integreren/differiënteren). Het leuke aan het boek is dat het per onderwerp opgaven bevat en uitleg van de theorie. De uitleg was voor mij als "alfa" soms te beknopt.
Building Microservices. Designing Fine-Grained Systems
Sam Newman
Goede introductie in de microservices architectuur. Aan de hand van een voorbeeld "monolitisch" systeem wordt uitgelegd hoe je een dergelijk systeem in kleinere services kunt opbreken. En wat dat onder andere betekent voor deployment, testen, security en monitoring.
Claritas Investment Certificate
CFA Institute
Omdat ik mijn domein kennis wilde verbeteren heb ik de cursus "Claritas Investment Certificate" gevolgd. Het bijbehorende boek biedt een brede introductie in kapitaalbelegging. Het begint met onderwerpen als regulering, macro en micro economie, internationale handel en accounting. Vervolgens worden de verschillende financiële instrumenten, de werking van de markten en investerings management uitgelegd. Ieder hoofdstuk wordt afgesloten met meerkeuze vragen. Voor mij was de cursus zeker de moeite waard.
Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation
Jez Humble, David Farly
Uitstekend boek dat je leert hoe je het releasen van software kunt verbeteren, door het opzetten van een geautomatiseerde "deployment pipeline". Stop met de spannende, foutgevoelige, handmatige deploys en implementeer een betrouwbare one-click deploy!
Exercises in Programming Style
Cristina Videira Lopes
Dit boek demonstreert aan de hand van één programmeer opdracht, het bepalen van woord frequenties in een tekst, meerdere oplossingsstijlen in de taal python. De 33 stijlen zijn gecategoriseerd, als bijvoorbeeld "basic", "function composition", "Objects and object interactivity" en "Reflection and metaprogramming". De beschreven, zeer verschillende oplossingen laten de ontwikkelingen in programmeertalen in de afgelopen decennia zien. Ze laten ook zien wat de beperkingen en de mogelijkheden van een taal voor invloed heeft op de oplossing. Een aanrader voor ontwikkelaars die kennis willen nemen van diverse programmeer stijlen.
Explore It!: Reduce Risk and Increase Confidence with Exploratory Testing
Elisabeth Hendrickson
Volgens Hendrickson heeft testen 2 kanten. Enerzijds moet testen antwoord geven op de vraag of de software doet wat hij moet doen onder specifieke voorwaarden. Anderzijds moet testen antwoord geven op de vraag of er andere risico's zijn. De eerste vraag kun je beantwoorden door van te voren opgestelde tests te doen. De tweede vraag kun je beantwoorden door bewust buiten de gepaande paden van deze tests te treden. Het boekje Explore It! gaat over "onderzoekend" testen. Het beschrijft wat onderzoekend testen is, hoe je het toepast en welke strategieën er zijn om de risico's in het systeem op te sporen. In mijn ogen is variatie de essentie van onderzoekend testen. Het boek is een aanrader als je inspiratie zoekt om je tests te verbeteren. Zodat je die onverwachte fout in het systeem zelf vindt, in plaats van de eindgebruiker! Ook voor ontwikkelaars. Want die hebben wel eens de neiging alleen te kijken of het stukje software dat ze gemaakt hebben volgens verwachting werkt. Maar wat doet de software als je de volgorde van de stappen van de gebruiker verandert? De invoergegevens varieert? De rol van de gebruiker wijzigt? Een bestand of webservice niet beschikbaar is?
Handboek Financiële Markten. Deelmarkten, Producten, Spelers, Risico's
Jos Besuijen, Pieter van Hoeken
Ga je aan de slag in een project bij een financiële instelling en weet je niet wat de exacte betekenis is van termen als swap, forward, FX hedge, future, eonia of euribor? Dan biedt HFM je een goede introductie in de spelers en (afgeleide) producten op de kapitaal, valuta en aandelenmarkten.
HTML5 for .NET Developers
Jim Jackson, Ian Gilman
Praktisch boek dat de vernieuwingen van HTML5 bespreekt en toelicht met voorbeelden van ASP.NET MVC applicaties. Aan bod komen o.a. de semantische HTML tags, de audio en video controls, canvas, geolocation, web workers, local storage en offline applicaties. De voorbeelden zijn uitgewerkt in C#, JavaScript en jQuery.
Secrets of the JavaScript Ninja
John Resig, Bear Bibeault
Uitstekend boek over programmeren in JavaScript! Wat mij erg aanspreekt, is de TDD aanpak. De auteurs beginnen in de introductie met een assert methode en een html test pagina. Een breed scala aan geavanceerde onderwerpen worden vervolgens aan de hand van voorbeelden met unit tests helder uitgelegd. Aan bod komen o.a. functies, closures, prototypes, cross-browser oplossingen en events.
The Essence of Software Engineering: Applying the SEMAT Kernel
Ivar Jacobsen
In mijn ogen een geslaagde poging de kern van software ontwikkeling te vatten in een handvol abstracties. De auteurs onderscheiden als kern: Customer, Solution en Endeavor. Binnen deze gebieden onderkennen ze vervolgens de Oppertunity, Stakeholder, Requirements, Software System, Work, Way of Working en Team. Aan ieder van deze begrippen kennen ze een set statussen toe. Met behulp van deze statussen kun je analyseren hoe het "project" ervoor staat. Na de uitleg van de theorie wordt aan de hand van een voorbeeld toegelicht hoe je de "kernel" kunt toepassen in de dagelijkse praktijk.
The Mikado Method
Ola Ellnestam, Daniel Brolund
De "Mikado Methode" is een handige manier om met kleine stappen een systeem technisch te verbeteren. Als je met MM refactored, voorkom je dat je verzandt in een landurige en een alsmaar uitdijende code aanpassing. Met MM kun je de stappen van een refactoring in kaart brengen, visualiseren in een diagram, plannen en implementeren. De methode werkt als volgt: 1. Goal. Kies een doel. 2. Experiment. Experimenteer met de eenvoudigste code aanpassing om dat doel te bereiken. Controleer wat er "stuk" gaat (compile error of falende test). Dat wat stuk gaat is een voorwaarde om het doel te bereiken. 3. Visualize. Visualiseer het doel en de voorwaarden (prerequisites). 4. Undo. Maak de wijziging van het experiment ongedaan. Zo houd je de applicatie in een werkende toestand. 5. Repeat. Herhaal de stappen 2, 3 en 4 tot je een prerequisite hebt gevonden, die geïmplementeerd kan worden zonder dat er iets stuk gaat. De refactoring begin je met de eerste "non breaking" prerequisite. Het boekje legt MM aan de hand van een voorbeeld uit. De besproken refactorings worden in andere boeken uitgebreider behandeld.
User Stories Applied: For Agile Software Development
Mike Cohn
Dit boek beschrijft hoe je user stories kunt toepassen om software requirements op te stellen, inschattingen te maken en vervolgens een release/iteratie planning te maken met behulp van de velocity en geprioriteerde user stories. De user stories worden ook gebruikt om de acceptatietestscenario's te bedenken. Mike Cohn benadrukt dat user stories bedoeld zijn om mondeling overleg en discussie met de klant te bevorderen. De klant hoort de user stories op te stellen. Het hoofdstuk over wat user stories niet zijn was verhelderend. Het boek sluit af met een voorbeeld dat laat zien hoe een team user stories voor een webwinkel opstelt, inschat, prioriteert, plant en voorziet van acceptatietest criteria.
Agile Principles, Patterns, and Practices in C#
Robert C. Martin, Micah Martin
Aan de hand van een Payroll casestudy wordt de lezer heel duidelijk uitgelegd hoe je "agile practices" en "design patterns" kunt toepassen om software te ontwikkelen die stabiel, onderhoudbaar en unittestbaar is. Verplichte kost voor ontwikkelaars die SOLID code willen schrijven.
Agile Software Development
Alistair Cockburn
AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis
William J. Brown, Raphael C. Malveau, Hays W. McCormick, Thomas J. Mowbray
Het boek begint wat droog met een formele definitie van de anti-pattern. Een anti-pattern is een oplossing van een probleem met negatieve gevolgen. Daarna worden de kenmerken van en oplossingen voor de anti-patterns op het gebied van software ontwikkeling, software architectuur en project management beschreven. De anti-patterns met veelzeggende namen als de Blob, Spaghetti Code, Vendor Lock-In, Reinvent the Wheel, Analysis Paralysis en Death By Planning laten zien hoe je ze herkent, wat de nadelen zijn en - niet onbelangrijk - wat je kunt doen om de situatie te verbeteren.
Applying Domain-Driven Design and Patterns: With Examples in C# and .NET
Jimmy Nilsson
Dit boek geeft praktische adviezen hoe je DDD kunt toepassen in het ontwikkelen van software. Aan de hand van de functionele wensen voor een order registratie applicatie wordt de software stap voor stap uitgewerkt. Daarbij wordt benadrukt dat je eerst het domein model middels TDD en Refactoring "goed" op orde moet krijgen voordat je de "infrastructuur" van de applicatie op gaat tuigen. Daar waar DDD (in mijn ogen) soms wat te abstract en te weinig concreet was, bevat dit boek juist talrijke voorbeelden van het ontwikkelen volgens de DDD concepten. Een ander sterk punt van dit boek is verder dat de oplossingen met Patterns zijn gemaakt. En alsof dat nog niet genoeg is wordt ook nog het gebruik van O/R Mapper (NHibernate), Dependency injection en AOP toegelicht.
Brownfield Application Development in .Net
Donald Belcham, Kyle Baley
Welkom bij het bedrijf Twilight Stars waar ontwikkelaars Huey en Lewis te maken hebben met een "Brownfield application". De code is vervuild met slechte oplossingen. Het aantal bugs is enorm. Automatische tests doen het niet. VCS bevat niet alle afhankelijkheden waardoor de applicatie niet compileert als je haar hebt gedownload. Kortom, drama! Wat je als ontwikkelaar kunt doen om deze situatie te verbeteren wordt beschreven in dit boek. Het gaat eerst over het inrichten van een ecosysteem van de applicatie. VCS, CI, geautomatiseerde tests, code analyses. Alle bedoelt om de feedback loop te bekorten. Vervolgens wordt beschreven wat je kunt doen om de code onderhoudbaar en testbaar te maken. Daarbij wordt met voorbeelden het gebruik van interfaces, (anticorruptie) lagen, patterns (MVP) en principes (DIP, SRP) toegelicht. (Deze items zijn in andere boeken uitgebreider beschreven). Een geestig en leerzaam boek.
C# in Depth, Second Edition
Jon Skeet
Zoals de titel al aangeeft, gaat het boek de diepte in. Na een korte introductie over C# versie 1, wordt vervolgens van elke nieuwe C# versie grondig de uitbreidingen van de programmeertaal beschreven: o.a. generics, nullable types, lambda expressies, LINQ en dynamic typing.
Clean Code: A Handbook of Agile Software Craftsmanship
Robert C. Martin
Beschrijft principes waaraan code (volgens de mannen van Object Mentor) moet voldoen zodat je kunt spreken van Clean Code. Dat zijn niet alleen design principes als SRP, OCP en DIP, maar ook adviezen met betrekking tot opmaak van code, volgorde van methodes, omvang van klassen en methodes, het wel of niet toevoegen van commentaar. Het is vooral een praktisch boek met vele voorbeelden van het verbeteren van Bad, Messy Code tot Clean Code.
Communicating Design: Developing Web Site Documentation for Design and Planning (2nd Edition) (Voices That Matter)
Dan M Brown
Als je een web design moet maken en meer wilt weten over Personas, Site Maps, Flowcharts en Wireframes dan helpt dit boek je goed op weg. Het legt per diagram uit waar ze toe dienen, hoe je ze maakt, kunt verdiepen en presenteren. Zoals je wellicht mag verwachten bij een boek over ontwerp: het boek ziet er mooi uit en bevat vele illustraties.
Continuous Integration in .NET
Marcin Kawalerowicz and Craig Berntson
Een aanrader voor ontwikkelaars die meer willen weten over het opzetten of verbeteren van Continuous Integration. Het boek legt uit hoe en met welk gereedschap je geautomatiseerd software kunt bouwen. Het begint bij de basis, het opzetten van een versiebeheer systeem en de werking van MSBuild. Vervolgens worden 3 CI servers, CruiseControl.NET, TeamCity en Team Foundation Server beschreven. Daarna worden de taken van de build uitgebreid met testen (o.a. Selenium), analyseren (o.a. FxCop), documenteren (Sandcastle) en installeren.
Crystal Clear: A Human-Powered Methodology for Small Teams
Alistair Cockburn
Dependency Injection in .NET
Mark Seemann
Dit boek is geheel gewijd aan de D uit de SOLID acroniem. DI is een methode waarmee je de Dependency Inversion Principle toepast. Het stelt je in staat loosly coupled, onderhoudbare en testbare code te schrijven. En welke ontwikkelaar wil dat nu niet?! Seemann laat met een voorbeeld zien hoe makkelijk het is om een applicatie te maken die geen DI toepast. Deze applicatie wordt daarna gerefactored zodat DI wel wordt gebruikt. Het boek beschrijft hoe je de verschillende DI technieken (constructor, property en method injection en ambient context) toepast. Seemann noemt ze DI Patterns. Vervolgens wordt beschreven hoe je object composition, lifetime management en dynamic interception toepast met een Inversion of Control container. Tot slot wordt het gebruik van populaire IoC containers als Castle Windsor, StructureMap, Autofac en Unity beschreven en met elkaar vergeleken. De hoofdstukken over de IoC containers zijn afzonderlijk van elkaar te lezen en bevatten (daarom) bijna identieke teksten. Copy - paste? Het enige minpuntje van dit boek.
Design Patterns: Elements of Reusable Object-Oriented Software
Erich Gamma, Richard Helm, Ralph Johnson, John M. Vlissides
Domain-Driven Design: Tackling Complexity in the Heart of Software
Eric Evans
Een inspirerend boek. Het boek leert je hoe je als team de essentie uit het domein kunt destilleren en haar in taalgebruik, documentatie en software kunt uitdrukken op een expressieve wijze met behulp van o.a. een model, dat beschrijft wat binnen en buiten de context van het domein valt, lagen, repositories, entiteiten, services, factories. Ik heb er o.a. de inspiratie uit gehaald om de structuur van de domein laag in een applicatie waar ik regelmatig aan werk op de schop te nemen en de belangrijkste concepten uit het domein naar de voorgrond te halen met een "large-scale structure". Zodat je beter kan zien wat de kerntaak van het systeem is.
Don't Make Me Think: A Common Sense Approach to Web Usability, 2nd Edition
Steve Krug
Dit boekje legt uit waarom en hoe je een website gebruiksvriendelijker moet maken. Volgens Krug verlaten bezoekers een website als ze te veel en te lang moeten nadenken over de werking van een website. Krug laat zien hoe je het gebruik van een website vereenvoudigt met o.a. een wervende tagline, een duidelijke visuele hiërarchie en het schrappen van tekst. Opdat een bezoeker in een oogopslag begrijpt wat de website te bieden heeft.
Extreme Programming Explained: Embrace Change (2nd Edition)
Kent Beck, Cynthia Andres
Toegankelijk, inspirerend, klassiek boekje over software ontwikkeling. Verbeter het resultaat van het software ontwikkelproces door iteratief, incrementeel en frequent software op te leveren, dat met pair en test-first programming wordt gemaakt in een informatieve, gedeelde werkomgeving, via CI wordt gecontroleerd en waarbij de klant nauw wordt betrokken. XP beschrijft hoe je dat in de praktijk brengt. In een "greenfield" project is dit makkelijker te realiseren dan in een project met een "brownfield" applicatie. Wekelijks releasen is met een grote, "brownfield" applicatie haast ondoenlijk. Geautomatiseerde tests ontbreken of de code coverage is laag. Er wordt veel handmatig getest. En dat kost tijd. In dergelijke omgevingen moet de code base stapsgewijs, structureel worden verbeterd.
Growing Object-Oriented Software, Guided by Tests
Steve Freeman, Nat Price
Uitstekend boek over TDD. Na een introductie van TDD en begrippen als Mock, Stub en SOLID wordt met TDD (in java) een voorbeeld uitgewerkt van een applicatie waarmee de gebruiker biedingen kunt doen op online veilingen. Stap voor stap wordt getoond hoe je TDD in de praktijk brengt: red-green-refactor. Implementeer een falende test voor een nieuwe feature. Implementeer de feature. Refactor. Na de case study worden tips gegeven hoe je ervoor kunt zorgen dat TDD vol te houden blijft. Wat mij erg aansprak was de nadruk die de auteurs leggen op de expressiviteit van de unit test code. Met een declaratieve programmeerstijl kun je goed uitdrukken wat de productie code moet bewerkstelligen. Zo laten ze bijvoorbeeld zien hoe je met behulp van het builder pattern eenvoudig een Fluent API voor het aanmaken van test data kunt maken.
Implementing Lean Software Development: From Concept to Cash
Mary Poppendieck, Tom Poppendieck
Beschrijft hoe je het software ontwikkelproces kunt inrichten en verbeteren zodat software sneller geleverd kan worden met een hogere kwaliteit aan een tevreden klant. Kernwaarden zijn: het uitbannen van verspilling, het inbouwen van kwaliteit (door bijvoorbeeld automatische testen, CI), snel uitbreidingen opleveren (door iteratief te werken), het proces als geheel en blijvend optimaliseren, kwaliteit en betrokkenheid stimuleren door teamleden op te leiden en eigen verantwoordelijkheid te geven.
jQuery in Action Second Edition
Bear Bibeault, Yehuda Katz
Het boek jQuery in Action bestaat uit twee delen. Het eerste deel behandelt de functionaliteit van het jQuery framework. Het laat met duidelijke uitleg en voorbeelden zien hoe je met jQuery (op een makkelijke manier) onder andere DOM elementen kunt selecteren en bewerken, dynamisch HTML kunt genereren en event handlers kunt koppelen aan events. Ook wordt uitgelegd hoe je jQuery kunt uitbreiden met extensie functies en de inhoud van de pagina's met AJAX requests kunt opbouwen. In het tweede deel wordt het jQuery UI framework behandelt. jQuery UI bevat onder andere een slider, autocomplete, progress bar, date picker en tabs. Het gebruik van deze widgets wordt helder uitgelegd. In ruim 400 pagina's hebben de auteurs je klaargestoomd om met jQuery een dynamische website te maken.
Lean Architecture: for Agile Software Development
James O. Coplien, Gertrud Bjørnvig
De auteurs werken op overtuigende wijze het concept DCI (Data, Context and Interaction) uit in verschillende programmeertalen. Maak kennis met Methodless Object Role Types, Methodful Object Roles, Traits en Contexts. Met DCI kun je "wat het systeem is" (domein klassen structuur) en "wat het systeem doet" (use cases) ontkoppelen. Dat onderscheid wil je maken omdat de structuur van het systeem minder snel verandert dan de omvang van de functionaliteit voor de gebruiker. Het grotere geheel van de architectuur is beter te doorzien. De domein klassen worden eenvoudiger. Het toevoegen van use cases wordt makkelijker. Met DCI bouw je een "lean" architectuur, die "agile" ontwikkelen faciliteert!
LINQ in Action
Fabrice Marguerie, Steve Eichert, Jim Wooley
Na de introductie van de C# 3.0 uitbreidingen en de bouwstenen van LINQ worden drie LINQ smaken uitvoerig behandeld: LINQ to Objects, LINQ to SQL en LINQ to XML. Het maakt niet meer uit hoe en in welk formaat de data is vastgelegd: met LINQ kunnen we het bevragen. De LINQ to XML variant was mij wat minder bekend, maar dankzij dit boek wordt mijn volgende xml klus een stuk eenvoudiger!
Object Design: Roles, Responsibilities, and Collaborations
Rebecca Wirfs-Brock, Alan McKean
Dit boek werkt de ontwerp methode Responsibility-Driven Design uit. Na de introductie van concepten als Object, Role, Object Role Stereotype, Responsibility, Collaboration wordt aan de hand van voorbeelden beschreven hoe je op basis van een functionele beschrijving van het systeem rollen, verantwoordelijkheden, kandidaat objecten, beslissings stijlen kunt ontdekken, beschrijven en tonen in UML diagrammen. Vervolgens worden suggesties gedaan om de samenwerking tussen objecten betrouwbaarder en flexibeler te maken.
Pattern-Oriented Software Architecture Volume 1: A System of Patterns
Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, Michael Stal
De auteurs maken onderscheid tussen "Architectural Patterns", "Design Patterns" en "Idioms". De architectuur patronen brengen op hoog niveau structuur aan in de applicatie. Welke is afhankelijk van het type applicatie. Beschreven worden o.a. Layers, Pipes and Filters, Broker en MVC. De ontwerp patronen brengen structuur aan op subsysteem niveau. Command Processor, Whole-Part, Master-Slave zijn enkele voorbeelden. Idioms zijn taaleigen patronen. De patterns worden helder beschreven aan de hand van een probleem definitie en een oplossing. De structuur van een patroon wordt verduidelijkt met CRC, class en sequence diagrammen. Verder wordt een voorbeeld uitgewerkt en worden de voor- en nadelen benoemd. Een leerzaam boek dat mijn arsenaal patterns heeft verbreed.
Patterns of Enterprise Application Architecture
Martin Fowler
Refactoring to patterns
Joshua Kerievsky
Bevat de code duplicates? Heeft de code lange methodes? Is de code complex geworden door conditionele logica? Zijn er vergelijkbare klasses heeft met verschillende interfaces? Dan is het tijd om deze "code smells" aan te pakken! Refactoring to patterns kan je hierbij helpen. Het boek bevat 27 refactorings naar design patterns. De refactorings worden stapsgewijs met voorbeelden uitgewerkt.
Refactoring: Improving the Design of Existing Code
Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts
Regular Expressions Cookbook
Jan Goyvaerts, Steven Levithan
Het boek begint met een introductie van de beginselen van regular expressions. Hoe match je een tekst? Wat is alternation? Wat is een (non) capturing group? Wat is een backreference? Hoe werkt positive en negative lookaround? Daarna wordt in 8 programmeertalen (zoals C#, java, javascript) het gebruik van regular expressions uitgelegd. Vervolgens worden oplossingen beschreven voor o.a. het toepassen van validatie, het zoeken en bewerken van woorden, getallen, urls, html en xml. Het sterke punt van dit boek zijn de toelichtingen op de vele voorbeelden van regular expressions. Zodat je niet meer vol onbegrip kijkt naar een expressie als ^[^?#]+\?([^#]+) en begint te snappen dat hier de query string uit een url wordt gepakt.
Release It! Design and Deploy Production-Ready Software
Michael T. Nygard
Beschrijft aan de hand van anekdotes over falende software systemen hoe je de stabiliteit, capaciteit, schaalbaarheid en transparantie kunt verbeteren van een software systeem. Opdat het systeem in produktie niet bezwijkt onder de belasting van de gebruikers.
Scrum and XP from the Trenches. How we do Scrum. An agile war story.
Henrik Kniberg
In ruim honderd pagina's wordt de essentie van de software ontwikkelmethode scrum uitgelegd. Het is een praktisch boekje dat o.a. antwoord geeft op de volgende vragen. Wat is de rol van de product owner en scrum master? Wat is de product en sprint backlog? Hoe ziet een scrum board er uit? Wat zijn story points? Hoe deel je de ruimte in waarin gewerkt wordt?
Specification by Example. How Successful Teams Deliver the Right Software.
Gojko Adzic
SBE is het beste boek over software development dat ik in 2011 heb gelezen. Het boek legt uit hoe je SBE toepast en geeft praktische adviezen. Het is geen boek over tools. Het is een boek over "process patterns". Kort samengevat is SBE een werkwijze om via samenwerking tussen de stakeholders en het team het doel van de gewenste functionaliteit vast te leggen in een beschrijving met voorbeelden. De specificatie wordt verfijnd zodat de voorbeelden nauwkeurig, realistisch en gemakkelijk te begrijpen zijn. De controle van de implementatie van de specificatie wordt geautomatiseerd (met een tool: bijvoorbeeld FitNesse of Cucumber). Als je de controle van een specificatie eenmaal geautomatiseerd hebt, kun je frequent (via Continuous Integration) de specificaties controleren en feedback genereren over voortgang en issues in de software. Met SBE bouw je documentatie op dat net zo actueel is als de code, maar veel eenvoudiger te begrijpen.
SQL Server 2008 Administration in Action
Rod Colledge
Als je meer wilt weten over het beheer van SQL Server 2008 dan is dit een uitstekend boek. De behandelde onderwerpen gaan van de installatie, de configuratie naar het operationeel beheer.
Succeeding with Agile: Software Development Using Scrum
Mike Cohn
Alles wat je over scrum wilt weten staat er in. Wat is een Sprint? Wat is een Product en een Sprint Backlog? Wat is de rol van de Product Owner en de ScrumMaster? Het boek gaat ook over het introduceren van scrum in een organisatie en het opschalen.
Test Driven Development: By Example
Kent Beck
Test-Drive ASP.NET MVC
Jonathan McCracken
Dit boek helpt je op weg met ASP.NET MVC. Het werkt middels TDD een (eenvoudige) applicatie uit om "todo's" te registreren. Daarbij wordt gebruik gemaakt van open source tools als NHibernate en IOC container Castle Windsor. Tot slot wordt toegelicht hoe je de build en deploy kunt automatiseren.
The Art of Unit Testing: With Examples in .Net
Roy Osherove
Is een aanrader als je van start wilt met unit testen. Beschrijft de tools die beschikbaar zijn en waarvoor en hoe je ze gebruikt, hoe je leesbare, betrouwbare en onderhoudbare unit tests kunt maken en hoe je bestaande code kunt aanpassen om code testbaar te krijgen. De voorbeelden zijn wel wat eenvoudig.
The Clean Coder: A Code of Conduct for Professional Programmers
Robert C. Martin
Een zelfhulpboek voor de software ontwikkelaar. Martin geeft praktische adviezen over o.a. duidelijk communiceren, oefenen van je programmeer vaardigheden, TDD (doen!), schattingen en time management. Rijkelijk voorzien van persoonlijke anekdotes van de auteur.
The Passionate Programmer. Creating a Remarkable Career in Software Development
Chad Fowler
Chad Fowler beschrijft in The Passionate Programmer wat je kunt doen om als ontwikkelaar aan het werk te blijven in de immer en snel veranderende IT wereld. Fowler houdt een enthousiast pleidooi om aan je carrière te werken als of het een product betreft. Een product waar permanent aan gewerkt moet worden: verbreed je kennis, volg de laatste trends. Voordat je het weet is bijvoorbeeld .NET en C# passé! Echt? Een product dat bekend(er) en verkocht moet worden. Wat mij erg aansprak, was dat ieder hoofdstuk eindigde met een opdracht aan de lezer (Act on It!).
The Pragmatic Programmer: From Journeyman to Master
Andrew Hunt, David Thomas
De tips in dit tien jaar oude boek over software ontwikkeling zijn wat mij betreft nog niet verouderd. Het bevat vooral, hoe kan het ook anders met zo'n titel, algemene praktische tips om het ontwikkelproces en de kwaliteit van de software te verbeteren en niet zoveel code voorbeelden. Pas DRY en Law of Demeter toe, doe Ruthless Testing, maak gebruik van de kracht van Plain Text, automatiseer zo veel als je kunt, sta geen Broken Windows toe, orienteer je breder dan je huidige ontwikkeltools, lees vakliteratuur. En alles komt goed ...
Working Effectively with Legacy Code
Michael Feathers
Don't continue the "edit and pray" code changes. Break down the dependencies and get your code in a test harness!
Writing Effective Use Cases
Alistair Cockburn
Eerste Vorige Volgende Laatste [] 53