The Secrets Of Tech Coaching: Better Communication Skill
Running code katas or mobs with groups that lack teamwork is almost impossible! Here are 20 communication and collaboration techniques to coach by example.
Running code katas or mobs with groups that lack teamwork is almost impossible! Here are 20 communication and collaboration techniques to coach by example.
You can now run the Slow Code Retreat by following the facilitation guide. By doing so, you’ll also learn 6 Liberating Structures for your future workshops.
How to fix bad agile by starting neutral discussions about baby-steps programming. Baby steps are a sustainable and productive approach to writing code.
Here is a step-by-step workshop to guide a team to drawing a Quality View. Use it to discuss investment in agile technical excellence with stakeholders.
Applying willpower to have a “wider than team” impact on an organization is a recipe for burnout! Check the “Local Actions, Global Impact” strategy instead.
“Developers will always have more work than time” We can race our TODO lists or accept and slow down NOW. The “Slow Code Retreat” helps us do that!
Teams often disagree about what is a good test strategy! So here is an all-in workshop to capture practices, define testing terms and agree on improvements.
Getting participants in a TCR code kata exercise seems complicated! Yet, given what TCR is, these sessions can radiate genuine fun and direct applicability!
Evolutionary Design might be the most valuable yet impenetrable XP practice. Use TCR to practice baby-steps coding, the cornerstone of Evolutionary Design.
In The Serverless Mindset, I blogged about Event Storming and Example Mapping for agile architecture. How do you coach teams to adopt these workshops?
In this guest post, serverless expert Marco Troisi highlights 3 key skills to go serverless, and how, as coaches, we can help a team to learn them.
A dysfunctional mob makes coaching impossible! So here is a workshop for team members to try and find the mob programming rules that work for them.
Doing code katas to learn real-life TDD can at first look like a scam to many developers. So here are three techniques to maintain a constructive mood.
Poker Planning is a collaborative game… that developers often lose! Here are the original fair rules that will provide developers time for technical work.
Is “Business Value” the only thing that matters for sprint plannings? Here are 3 Scrum practices that will buy developers some time for technical work!.
Run these activities with the whole team to increase not only the developers’ role in sprint plannings, but also collaboration, engagement, and value creation!
Let’s give up trying to measure technical agile coaching! Instead, use these 3 liberating questions to self-assess how well you are doing at any moment.
Technical agile coaching is complex. Many organizations would track our work with inadequate measures. Here is how hypothesis-driven goals can keep us safe.
This pandemic year has transformed the way we do technical agile coaching. It’s now more asynchronous, self-service, gamified, open, and inclusive!
Trying to coach laggards will exhaust you. Here are 5 tips to deal with them, sustain you, and make you spend your energy where it matters.
Once exposed to bad TDD, teams are a challenge for any technical agile coach. Instead of trying to sell them TDD, XP, or whatever, fix their pains!
Too often, teams revert to their old habits when the technical agile coach leaves. Training part-time coaches is a powerful way to make the change stick.
Getting these crucial chats with product experts is often a brain-teaser! Let’s show devs how to trigger short, practical, immediate Example-Mapping sessions.
Prolonged remote-only work can be depressing. Here are 7 remote-pairing collaboration ideas to inject fun into the teams we are coaching!
Keeping our skills up to date is challenging. Remote work is a perfect excuse to run group learning sessions and to demo growth mindset to our coachees.
Remote work is an extra challenge for technical agile coaching. Here are 5 opportunistic remote pair-programming tips and tricks to show a better way of work...
Emily Bache wrote an accessible guide for technical agile coaches. Here is my review, plus my bonus section: How to sell your technical coaching services int...
There are many ways to manage team resistance. Here are some of the technical agile coach’s tricks that influence: testimonies, experiments, and more!
Randori-in-pairs code-katas maximize learning thanks to code and interaction. With git-handover and breakout rooms, it becomes a practical remote training.
Legacy code is where TDD is the trickiest. Start practicing the gilded rose kata with your team today! Your teammates will soon feel safe to apply TDD for le...
Part of the tech lead role is to be available for help. Setting up office hours and pair programming is vital to avoid the mental load of task switching.
Mob programming requires time to get used to it. With practice, though, you’ll discover unexpected and compounding long-term benefits of mob programming.
COVID-19 has thrown us into remote work. Here are 3 world-class open-source tools for remote pair programming that you can set up today.
Writing team coding standards and conventions is hard but critical. Brainstorming doesn’t work, so let’s use asynchronous decision making or mob programming!
You will not find an Agile Technical Coach Job Description. This job is more invented than found. Here is the story of how we came to practice it at Murex.
When testing legacy code, combine the test data builder pattern with the mikado method. This snowballs into more and more objects that are easy to set up in ...
Even more Event Storming tips! 3 will help you to avoid the mistakes we did. The last 2 are the recipe to learn more tips by yourself!
More Event Storming tips! 4 tips to delight attendees with fantastic facilitation. 3 tips about animating an Event Storming when there is existing code.
You’ve just invited 10 people to join your 8h Event Storming. Here are 9 Event Storming tips to maximize knowledge sharing and the use of everyone’s time.
DDD jargon is a domain expert repellent! Let’s not talk about DDD, but instead, start engaging domain experts in doing DDD workshops!
The key to successful DDD and Event Storming injection is to wait for the perfect challenge. Otherwise, we’ll have no choice but to hack the organization!
Injecting DDD or Event Storming in your organization can be tricky. Here are techniques to onboard your domain experts, one step at a time!
Where should we start? It’s easy to fall into priority paralysis as you envision an ambitious product. Let’s use DDD Event Storming to scope your next step!
Event Storming builds collective intelligence. We can keep it alive if we continue to work closely together and regularly repeat Event Storming.
What should we do after a DDD Design-Level Event Storming? How do we capture shared knowledge? How do we make the workshop more effective? Find answers here!
The most valuable activities in a DDD Design-Level Event Storming are UX and Aggregates explorations. Here is a step by step agenda that will lead us there.
Running a DDD Design-Level Event Storming is not rocket science! It’s still crucial to start the right way: with domain events and the Picture that explains ...
Design Level Event Storming is a collaborative design workshop. Use it to build and share the design of critical parts of systems using Event Sourcing and DDD.
Open-space technology un-conference is a powerful self-organized workshop. Here is a guide to making it remote-first, and even more inclusive!
Open-space technology un-conference is a powerful self-organized workshop. Here is the story of how we made it remote-first to grow a community of practice.
There are many opportunities for Machine Learning in Software Engineering: testing, product management, processes… It might even set a sustainable pace!
A Machine Learning in Software Engineering intern identified critical tests to run. He also confirmed the open-closed principle, modular code, and small-comm...
It’s the opinions of experts that drive Software Engineering! Models, like Big O, would lead to more fact-based discussions and better decisions.
Maintaining a TO DO list or a Mind Map for programming task has many benefits. It improves collaboration, our decisions and our vision of what’s left to do.
This infographics presents how TCR increases the share of refactoring in TDD. But Refactoring is already most of our daily work! We’d better learn it serious...
Planning poker and story points often turn into a power struggle where everyone loses. Here are 2 winning strategies for how to play planning poker as dev te...
This infographic presents the perils of Scrum with component teams. It pushes organizations back in Waterfall Agile, late deliveries and non-sustainable work.
This infographic presents how the lack of prioritization triggers a vicious circle of bloated organizations, late deliveries, and a non-sustainable pace
By focusing on small increments and collaboration, XP practices like CI, Pair or Mob programming, TDD, continuous refactoring and TCR make remote work easier.
Software is mostly built according to experts opinions. These 7 data driven software engineering books show us another way to a productive and sustainable pa...
In this podcast, you’ll learn about eXtreme Programming. Where did it come from? What are its differences between XP and Scrum or Kanban? How things like DDD...
Full-time pair programming burns introverts out. Regular mob programming sessions yield the same benefits but are more sustainable.
5 more best practices about remote pair programming. Let’s deal with a painful headphone, a todo list, time difference, eye contact and continuous improvement
Remote pair programming brings surprising benefits to a team! Daunting at first, it is quite manageable with the good practices. Here are the first 2 of 7!
Getting all the team to code review can be a real challenge. Here is the story of how a simple random review assigning tool nudged everyone to code review.
We discovered that DDD concepts like Event Storming, Bounded Contexts, Ubiquitous Language, Entities and Values are useful in machine learning projects.
Recording the full Event Storming board is a waste of time. Here are examples of quick, focused, and digestible views that capture the board’s knowledge.
Event Storming builds ‘shared understanding’. This is often not enough to bring key action-oriented people in! Here are concrete techniques to convince them.
After going through why Event Storming uses post-its, we’ll go over alternatives. We’ll then see how to use these techniques to improve Event Storming!
Although incredibly effective, DDD is overlooked by developers because of its abstractness. Event Storming is a great way to introduce DDD without naming it!
Pair programming is not just sitting together in front of an IDE. Here are battle tested answers to common questions that will make pairing work for you.
Understanding is key to building quality software. Here are 3 levels of understanding we should go through before we start coding.
Skip studying queuing theory! Play this 1h15 serious game for learning why building-in quality at the source leads to a productive and sustainable pace.
DDD Big Picture Event Storming is a prelude and catalyst to other workshops. Ex: Design Level Event Storming, Example Mapping, Story Mapping & Impact Map...
Team organization is tough. Event Storming builds enough shared knowledge and architecture for successful team re-organization workshops.
With legacy code, rewrite vs refactor is a valuable but tricky question. Here is an Event Storming activity that shows how far we are from the target.
With Event Storming and DDD, we can draft services boundaries and NFR prototypes. In this post sequel, we’ll see that microservices are no silver bullet.
DDD Big Picture Event Storming is a great support to draft (micro)services boundaries and NFR prototypes. Let’s see how to with this workshop activity.
Big Picture Event Storming and DDD let us share an architecture vision. Here is a way to realize it through evolutionary architecture and emergent design.
The advanced DDD Domain Relationships shine as they keep the core upstream. Here is the end of an Event Storming activity to pick the best relationships.
Bounded Contexts are a key aspect of DDD. Here is a DDD and Event Storming activity to find what kind of domain relationships will ensure focus on core conte...
Event Storming and DDD can identify bounded contexts. In a bounded contexts relationship, one side will have the upper hand (be upstream). Core contexts shou...
Event Storming and DDD are great at identifying bounded contexts. It’s even more valuable to identify the core contexts to focus on, and the generic ones to ...
We did the 1st phase of DDD Big Picture Event Storming. It’s time to build on the shared knowledge to draft a functional architecture vision. All in just a f...
Although not rocket science, running a DDD Big Picture Event Storming can be tricky. Here are 4 hard won tips that will make your first workshop successful.
Thanks to massive knowledge sharing, a DDD Big Picture Event Storming is the 1st step to collaboratively draft a Rough Design Up Front. Here are its last ste...
The DDD Big Picture Event Storming is a creative game. It sticks to the classic open-explore-close flow. Here is the second part of its detailed agenda.
Kick starting a project with a DDD Big Picture Event Storming can be chaotic. Here is a detailed agenda and a sample briefing to set it on the right track.
Running a DDD Big Picture Event Storming is a great way to kick start a project. Fortunately, it only requires common supplies. Here is a detailed checklist.
The massive domain knowledge sharing of a Big Picture Event Storming unlocks DDD. Good preparation makes running one easy. Here’s the 1st of a 4 posts step b...
The combination of Incremental Design and Event Storming is a better alternative to Big Design Up Front. It’s faster, safer and creates natural buy-in.
Although a nice idea in theory, Big Design Up Front has many problems that I learned the hard way. We should avoid BDUF most of the time.
Turning Kanban boards vertically fits western cultures better. Improving UX of our process tools would eventually lead to a more effective and sustainable pa...
Flipping your Kanban board columns is a cheap way to reduce multitasking and stress. Eventually, it contributes to a more sustainable pace.
As software people, we live in a complex-system world. To leverage on its non-linear effects, we need to multiply weird experiments.
Becoming business partners grants us freedom to refactor. Careful though, we must not over-abuse this trust if we want to maintain this partnership.
When we, developers, earn enough trust from business people, we become their business partners. As such we enjoy a lot more freedom to refactor.
How to improve a factual business case for a refactoring to make it even more compelling to business people.
With a bit of discipline, we can make a factual business case for a large-scale refactoring that business people won’t resist.
In 2005, professors Bizer and Petty showed something interesting about human behavior. People make more efforts to avoid what they don’t want, than to get wh...
Have you ever tried to talk about refactoring with business people ? Most of the time, the matter is pushed aside or received with rolling eyes … A few weeks...
It can sometimes be a real challenge to integrate, let alone deploy, a refactoring step by step ! Here are some patterns that make this easier.
Refactoring step by step generate a ton of small tasks here and there. Here are some organization best practices to keep track of them.
How can we exploit short time slots here and there to perform large scale refactoring?
Here’s everything you need to find the time for constant merciless refactoring … without asking for the permission!
In the end, incremental software development techniques are almost always the safest way to refactor. Here is why.
There are some simple attitude principles that badass developers follow to gain the business people trust.
Here is a one sentence summary of my previous post.
My last post was about the challenge for dev teams to get sponsorship for large scale refactorings. I listed two main reasons :
Whenever I present or suggest a good practice to dev teams, I often get the same remark. Here is how it goes :
I had the chance to attend Devoxx France this year in Paris. Here is the most important lesson I learned :
My current job at work is technical coach. I’m available for teams that need help to adopt incremental coding practices.
In the previous 7 articles of this series, I’ve tried my best get rid of mocks. I’m pretty sure that using these techniques will get you a long way out of mo...
Last week’s post was about how hexagonal architecture results in fast, mock-free tests around your core domain. Unfortunately, that does not remove all mocks...
As I’ve written in my last few posts, we can get a long way to avoid mocks with small scale coding best practices. Unfortunately, when systems reach a certai...
Custom assertions are a handy compromise alternative to mocks when we don’t have the time to refactor to a functional style.
We are sometimes tempted to use mocks to shortcut test data initialization. Unfortunately, excessive mocking makes tests difficult to maintain. As Uncle Bob ...
In my previous post I explained how Immutable Value Objects help us to avoid mocks. In this post, I’ll illustrate this in practice with real code.
Excessive use of mocks makes tests very painful to maintain. If we stick painful mocks for too long, we’ll end up abandoning unit testing. Eventually, the sy...
💡 Mock hell : when excessive use of test mocks makes refactoring extremely slow or difficult.
In my previous posts, I explained how to use the 20 hours of Code Katas technique to learn new languages. If you did not read these yet, start by the beginni...
In my previous post, I described how I’ve been using 20 hours of Code Katas to learn new languages. If you did not read it yet, have a look at it first. Let’...
We should not panic when asked to work with a new language. We should be bold enough to answer to job openings requiring technologies we are not used to. In ...
If you’ve read my previous posts about Team Randori Coding Dojos, you should know why and how to run a successful one.
In my last 2 blog posts, I’ve detailed why and how to start a team Randori Coding Dojo. That’s the easy part. As soon as you start your first dojo, you’ll fa...
In my previous post, I explained why you should start a team coding dojo Randori as soon as you can. Here is a step by step guide to set one up today.
Coding Dojos are easy to start and have a high return on investment. They will improve everyone’s technical skills. That’s only the start though. Practiced a...
In the previous posts, I presented how to use the Mikado Method to large organization changes. Drawn from the programming world, this technique keeps a low t...
In the previous post, I presented both large scale code and organization changes. I highlighted how they face similar difficulties of huge Work In Progress. ...
Large scale agile transformations are often painful, stressful and … failed ! Mixing the Improvement Kata and the Mikado Method can make them more successful.
This is the fourth and last post in a series about making large organizations more agile. I encourage you to start with the beginning.
This is the third post in a series about making large organizations more agile. I encourage you to start with the beginning.
This is the second post in a series about making large organizations more agile. I encourage you to start with the beginning.
In Aesop’s famous tale, a farmer kills his goose that lays a golden egg every day to get all the eggs at once. He finds no eggs, lost his goose, and remains ...
This is the forth and last post of a series about the #ZeroBugs policy. In the previous posts, I detailed how we applied it in our team, what were the conseq...
This is the third post of a series about the #ZeroBugs policy. In the first 2 posts, I detailed how we applied it in our team, and what were the consequences.
This is the second post of a series about the #ZeroBugs policy. In the previous post, I detailed what a #ZeroBugs policy is and how we tried to apply it. I e...
Some teams spend 95% of their development time fixing bugs … An entrepreneur I worked with reported an even scarier story. He went bankrupt because bugs were...
eXtreme programming will not improve your short term productivity. But it will drastically improve your long term productivity.
During the last 15 years, I’ve worked in many different teams. Every team has its own way of working. I’ve been at places where everyone seemed busy all the ...
In Far From the mobbing crowd the Cucumber guys explain how they combined mob programming and remote work. Matt and Steve also explain that a mob is both res...
More than ever, the cheapest way to build a framework is to refactor it out of a specific app.
The improvement kata can solve problems that typical retrospectives fail to address. Although there is a halo of mystery around it, it’s actually not that di...
During the past few weeks, I blogged the story of our first improvement kata.
This is the fifth (and last) post of a series of 5 about the improvement kata. If you haven’t read the beginning of the story, I recommend you start from par...
This is the fourth post on a series of 5 about the improvement kata. If you haven’t read the beginning of the story, I recommend you start from part 1.
This is the third post on a series of 5 about the improvement kata. If you haven’t read the beginning of the story, I recommend you start from part 1.
In my previous post, I described the productivity issue our team was facing. How retrospectives did not work, and how I started looking at the improvement ka...
If you are serious about continuous improvement, you should learn the improvement kata.
Here is the main feedback I got about my previous post eXtreme eXtreme Programming.
What would XP look like if it was invented today ?
Do you remember how people who are not used to the phone tend to shout in it, for the message to get far ? Read on and I’ll explain how this silly habit will...
Don’t worry if your unit tests go to the DB, that might not be so bad.
We write tons of legacy code everyday. Experienced developers understand that legacy code is not something special. Legacy code is our daily bread and butter.
In my last post, I explained why incremental refactoring techniques will make you both more productive and relaxed.
This post is a bold promise. Mastering incremental refactoring techniques makes our lives as software engineers more enjoyable.
Last week, my colleague Ahmad Atwi and I went to the London SPA Conference to give our Remote eXtreme Practice talk.
As long as you are writing your tests before your code and doing regular refactoring, you are doing TDD !
As I said last week, I released the v0.1 of Philou’s Planning Poker, my latest side project. Although I have a day job, a wife, a family and a mortgage to pa...
As a manager, you could benefit a lot from helping your developers with their side projects.
There is a rather widespread TDD practice to have a single assertion per test. The goal is to have faster feedback loop while coding. When a test fails, it c...
I guess we always find excuses to keep on with our bad habits, don’t we? Stephen King
I started to learn Test Driven Development a long time ago. Since then, even though I’m still not a master, it’s been my most useful programming skill, by fa...
Being agile is about adapting to change and continuously improving. I’ve seen (and been) in too many teams blindly following Scrum (Scrum Zombies) without fi...
How come the “agile scaling” landscape seems so daunting and bloated ?
Back in 2001, when I started to code for a living, fresh out of school, I was mainly doing a form of cowboy coding. After a few months of maintaining my own ...
As software developers, we very always often get to work in code bases that are not perfect. In this situation we have 3 choices : leave, grumble, or make so...
I eventually stumbled upon a way to keep track of technical debt in source code that is both straightforward and already built-in most tools : simple TODO co...
Last week, I’ve been working at adding a distributed countdown to my Online Planning Poker App. As our team works from Paris and Beirut, I wanted to unit tes...
I first read about Design By Contract in 2002, in Object Oriented Software Construction 2. As soon as I read it, I was convinced, today, I still believe it’s...
A few years ago, I wrote about how I started to use Jira as my personal Kanban board at work. A lot of things have changed since then, which brought me to up...
In my spare time, I’m writing a Planning Poker App. As a reminder, planning poker is a group estimation technique designed to eliminate influence bias. Parti...
A few months ago, I started Philou’s Planning Poker, an open source side project to run planning poker estimate sessions remotely. The main technology is Rai...
A rat race is an endless, self-defeating, or pointless pursuit. It conjures up the image of the futile efforts of a lab rat trying to escape while running...
A few months ago, I started continuously deploying my latest side project to a Digital Ocean box. If you are interested, here is the full story of how I did ...
Here is the story : you have a Rails 5 app that uses RSpec, but your RSpec suite is getting slower and slower to run. You’ve already considered some solution...
A few weeks ago, I had to have a look at the distributed consensus protocol Paxos. Even though I know its purpose and I’ve built and used distributed systems...
A few months ago, after receiving good feedback from my regular readers, I posted my latest article Is There Any Room for the Not-Passionate Developer ? on H...
It might be possible to discover performance regressions before running your long and large scale benchmarks !
I’m currently wrapping up an alpha of a unit testing ruby gem that allows to assert the complexity of a piece of code. It’s the result of an experiment to le...
From Wikipedia : Overclocking is configuration of computer hardware components to operate faster than certified by the original manufacturer …
As I already wrote about before, my colleague Ahmad from Beirut gave a talk at Agile Tour Beirut about how we adopted XP to a distributed team at work. I was...
First of all, what is that ? Usually, Scrum zombies go in groups, and quite often, you’ll find a full team of them :
I decided to use my latest side project as an occasion to learn Docker. I first used Heroku as a platform for deployment (see previous post). It works fine b...
My colleague Ahmad from Beirut gave a talk at Agile Tour Beirut on Saturday about how we adopted XP to a distributed team at work. I gave him a hand and play...
After the top 5 talks I attended at JavaOne here are more !
This is my second post relating the talks I attended at JavaOne 2016. Here is the beginning of the story. Here we go.
With a few other colleagues, I had the chance to be sent to San Francisco last week to attend the JavaOne 2016 conferences by my company.
During the years doing some coding dojos with the same circle of people, I came up with my own style of practicing TDD. Lately, I had the chance to do a pair...
As I already wrote about, mocks can be trecherous … I gave a talk about how to avoid them last tuesday at Paris.rb meetup. Here are the slides.
A few weeks ago, I posted my latest article Is There Any Room for the Not-Passionate Developer ? on Hackernews and Reddit Programming. The post stayed on the...
How do you get your kids to participate with housekeeping ? I guess that’s the dream of all parents. As so, we’ve tried quite a lot of tactics throughout the...
One or two weeks ago, I registered to the Paris Ruby Workshop Meetup and needed a Ruby env. I have been using Vagrant quite a lot to isolate my different dev...
Have you read valve’s Handbook for new employees ?
My current side project is an online tool to do remote planning pokers. I followed my previous tutorial to setup Rails, Docker and Heroku.
A few years ago, I used Heroku to deploy my side-project. It provides great service, but I remember that updates to the Heroku Stack was a nightmare … Versio...
I have recently been playing with Docker and Docker Compose while starting my new side project. I’ve fallen into a situation where my production container us...
5 years ago, I started blogging. I started really casually, my posts were personal reminders and notes rather than real well thought of articles. Nevertheles...
The CFO’s debt is visible in his balance sheet. The CTO’s technical debt is invisible. What about making it visible ?
I think I found a way to fix the dirty code problem once and for all …
Since I started to program professionally 15 years ago, a lot of things have changes. A lot of technologies appeared and became mainstream while others fell ...
With time, I discovered a way of explaining the subtleties of my developer job to my uninformed relatives and friends.
Last time I tried to insert a code snippet in my Octopress blog, I was hurt by the following error :
If you are a developer and you are not shipping, you’re in the danger zone. I believe it’s mostly your fault, and it’s time to act.
We’re doing pair programming almost all the the time in our team. A few weeks ago, we went to Devoxx Paris, and 2 team mates used pair programming at a hands...
Rome wasn’t built in a day, neither will be your Lego Office … This week is Devoxx in Paris, for the occasion, we decided to stream a Lego office experiment ...
Maybe your company too has a development program you can use to track and organize your training path. That’s already great ! It is often not perfect though....
I already wrote how we started to use Trello to do our remote retrospectives. A while ago, my team mate Bilal Tayara started to collect our activities into t...
For an organization, there’s something schizophrenic about valuing team work, wanting agility but sticking to individual objectives and assessments.
Let me tell you a typical hiring story. A bit more than 10 years ago, I was contractor at a bank on a C++ front office application. The system had initially ...
We don’t have an official scrum master in our team anymore. We now have 7 ! A different team member assumes the full scrum master role at every sprint.
Most companies don’t have unlimited vacations. Most likely, if you are an employee, your days off need to be validated by your boss. If you are like me, this...
A few weeks ago, as I was looking the internet for Lean principles to improve our way of working, I fell upon this book Petit guide de management lean a l’us...
Any software project (job, startup or side project) will require some time before one can get real feedback from real users.
Nowadays, start-ups and tech companies seem to be competing for the most beautiful offices in order to attract top talents.
I don’t know if you noticed, but Octopress 2 preview is slow as hell on Virtual Box. I wanted to try using Docker instead. So a few weeks ago, I started to u...
Remaining a competent developer is a career long effort, if you stop programming, you’ll loose it ! As time goes, we are regularly offered pushed into manage...
Lately, I went into an upgrade cycle : Ubuntu, which forced me to upgrade Docker, and then Vagrant … you know the story. Unfortunately, my vagrant config did...
Algorithms are hard, and making them fast is even harder … But there are shortcuts that work quite often !
Manual testing is important. Here is how we got to love exploratory testing.
If you’re having difficulties writing good performance related stories for your project, that’s no surprise ! We’ve been through the same troubles and we fou...
For many reasons. But mostly because they are key to efficiently growing a software organization.
It is easy to record and share great screencasts on Ubuntu (and I guess on Linux in general).
Current software project tracking tools suck !
There must be a way to know the real money value of Lean Startup ‘knowledge’.
Madoff would have been better off managing software projects than investing on Wall Street !
At work, we are using as we all have Android phones, we are using the Scrum Poker Cards app to do our planning poker.
I just invented the word, I found it funny :
If you remove your job, you are promoted. (a classic lean quote)
The sad truth :
In search of an experienced software engineer
EDIT 2017-03-03 : This article is old, I am now using an improved Jira Personnal Kanban.
After finishing my concurrency-kata, one of the things that most surprised me, is how simple it was to prototype the Actor Model in Java using Green Threads.
A slow build costs money. I mean it costs a whole lot of money all the time !
We just discovered a hack to spread agile (BDD by the way) through an organization. It works provided :
EDIT 2017-03-03 : This article is old, I am now using an improved Jira Personnal Kanban.
As a distributed team working from Paris and Beirut, after pair programming, it was time for our retrospectives to get remote !
At work, we are building a risk aggregation system. As it’s dealing with a large bunch of numbers, it’s a huge heap of optimizations. Once that its most stan...
I recently got hands on an abandonned laptop that was better than the one I was currently using for my personnal hackings, so I decided to switch to this one...
Lately at work, we’ve unexpectedly been asked by other teams if they could use our product for something that we had not forseen. As we are not sure whether ...
In my team at Murex, we’ve been doing Pair programming 75% of our time for the past 9 months now.
Making commitments to deliver software is always difficult. Whatever the margin you might take, it invariably seems wrong afterward …
Now that is a widespread title for blog articles ! Just search Google, and you’ll find “Performance is a feature” in Coding Horror and others.
There is a french idiom that basicaly is
I’ve been programming for quite some time now, in different teams, using various methodologies. I also had the luck to do XP for at least 3 different project...
A few weeks ago, I read The principles of product development flow from Donald G. Reinertsen.
As I’ve encountered this situation in different disguise in different companies, I now assume it’s a widely applied antipattern.
Rest In Peace mes-courses.fr. Here is what it looked like :
Everybody knows about the agile software development promise “Regularly and continuously deliver value”. This is how it is supposed to work :
I just compiled my Gherkin and Cucumber goodies into a gem. It’s called cucumber_tricks and the source code can be found on github. It’s also tested on travi...
I already wrote a lot about test proxies (here, here and here).
When testing html views, either from RSpec or from Cucumber, XPath can be really helpful to quickly find expected elements.
In 1991, John F. Woods wrote :
Last week at work, we decided that we needed an Anticorruption Layer between our code and another team’s. They have been using our internal data structures a...
6 months ago, our team started to run systematic iteration retrospectives. Within these 6 months, our team became more agile than ever. Running efficient ret...
As I just released auchandirect-scrAPI, and that it relies on scrapping, I needed a daily build.
Every brands should provide an API for developpers … unfortunately, it far from the truth right now. A few years ago, when I started my mes-courses.fr side p...
As said Tom Cargill
At the moment, I am exploring the world of SEO, and so I thought I could start with my blog. I found SEO for Octopress websites that I followed to add keywor...
I love writing automated tests … or rather, I hate having to work in untested code. I find it makes my life unnecessarily stressful. On the other hand, the c...
Since I decided to stop Mes Courses to focus on AgileAvatars, I have been extracting open source gems from the code base. The last one is Storexplore : a dec...
I really don’t know why Scrum Sprints are called sprints ! From my experience, the number one mistake made by team starting with Scrum is to work as quickly ...
A few days ago, a colleague currently taking the coursera course about reactive programming in scala, asked me to explain him what monads are. It’s always a ...
Lately, I have been introducing javascript and coffeescript in www.mes-courses.fr (with structural architecture issues as a side effect, but that’s another s...
A software team is now using Scrum and AgileAvatars.com magnets in their daily work ! A few days ago, I sold my first lot of agile magnets. These customers w...
Until now, I had been using Feedburner to manage the email subscriptions to my blog on mes-courses.fr. It had been working fine I thought it had been working...
I already wrote about my RSpec Matchers Combinators, I decided to extract them into the spec_combos gem.
Rspec matchers are a lot like predicates. Predicates that can talk … The good thing about predicates, as anybody who has done a bit of functional programming...
Surely this post is nothing new for experienced ruby developpers, but I found it so handy, that I thought it deserved a post of its own though. The problem i...
Version 1.3.0 of Cucumber droped spork support, so I had to find something else. I am using Guard setup with rspec and Cucumber for my Rails app.
There are already a lot of articles explaining how to setup an in memory SQLite database to speed up Rails specs or unit tests. Most of them explain how to c...
First, I recommend this book to any side project infected person : it’s a great motivation boost !
As agile and lean methodologies are gaining some place inside the workplace, especially in large corporations, I heard and saw quite a few teams struggling w...
As I started to write more javascript code in my rails app, it became obvious that I should be testing it ! I wanted to use jasmine and coffeescript. I searc...
I have been using autotest for 2 years, and it’s been great ! The first time I ran it I thought “This rocks !” and I have always been using it since …
For testing purpose, I added FakeWeb to my app. Later, I deployed it to a staging env on heroku to find out that my scrapper started to fail with some strang...
As I updated my bundle, some capybara have_selector(…) matches started to fail. Here was the message :
From Martin Fowler’s point of view, I must have been a mockist. With using mocks extensively comes quite a few advantages :
I use rspec a lot. I thinks it’s a great testing framework.
Update 06/12/2014: I created a gem for this and other things
After reading The cucumber book I decided to add clever cucumber transforms but steps started to fail all over the place … Even completly unrelated scenarios...
Working with regular expressions is always a try and fail and retry … experience. It really helps to have an interactive tool with which to tune up your expr...
According to stack overflow, simply use something like the following from the chrome console : $x("//img")
Update 05/23/2014: I created a gem for this, read an introduction here
I just spent a few hours debugging my rails app on Heroku to understand why the hell I did not systematically receive the monitoring emails that my app was s...
While working on www.mes-courses.fr, a background scheduled task that was running fine on heroku started to fail with out of memory errors. After searching a...
While I was trying to enforce no ssl on a page of www.mes-courses.fr with Rack::SslEnforcer, I lost a few hours trying to fix a TOO_MANY_REDIRECTS error … Th...
For mes-courses.fr, I am using another heroku app as “integration” app, where I can do late verifications before deploying to my production app. If you don’t...
A background scheduled task I am trying to run on heroku is failing because it gets out of memory. I needed to use a ruby memory profiler to understand exact...
This can be quite time consuming if it is the first time you set up an ssl endpoint. Here is how I did it :
There is no doc about this, but it turns out to be very simple, just copy the version directory :
In Growing object-oriented software guided by tests they use a java library called Window Licker to pilot a gui running in test thread. Next time I started a...
At MegaCorp where I am currently working, there is a small team that is dedicated to find solutions to software bugs that regularly happen in production. The...
I started using rails autoload to load files in my lib folder of http://www.mes-courses.fr. Before that, I had been using hand written require statements, an...
I just tried to integrate the blogit rails engine directly inside www.mes-courses.fr. Up till now, I was using a separated radiant app to deal with the blog ...
This is a french translation of the famous Hackers and painters essay written by Paul Graham.
I am using rails to build www.mes-courses.fr. I use ubuntu for my development os, and heroku for deployment. As heroku enforces the usage of Postgre, I chose...
I am just finishing migrating www.mes-courses.fr from rails 2 to rails 3, and I can assure that I learnt these lessons the hard way …
I decided to stop using stub_model and mock_model. I do not use them enough to get fluent with them. Every time I have to deal with them, something breaks in...
When I migrated from rails 2.0 to rails 3.0, I had to change inclusion of ActionController::UrlWriter to Rails.application.routes.url_helpers. I started to g...
I am currently working to replace a legacy command line front end on a COM out of process server.
While migrating to ruby 1.9, I started using rbenv. I was wondering how it would handle my stock ubuntu ruby 1.8. It works out of the box with the rbenv “sys...
I am using rails 2.3.8, devise 1.0.11 and ssl_requirements 0.1.0. I am having strange behaviour when mixing devise with ssl_requirements. When a form posts t...
I have worked in small agile teams, and it does indeed work a lot better than the classical waterfall & hierarchic environment. When speaking with other ...
While I was looking for photos for an article on blog for mes-courses.fr, I found this site : http://www.photo-libre.fr. There are a lot of pictures, both €-...
I discovered that before blocks in RSpec’s examples are executed in the order they are declared. There is no great deal about it, but it can be useful when u...
Suppose you have some duplicated code in the Foo & Bar classes. You managed to extracted this code in a helper class. Fine, the helper class can now be t...
When trying to use devise 1.0.11 with rails 2.3.8 and bundler 1.0.10, I got the error could not find generator ... when running bundle exec script/generate d...
Don’t waste your time as I did !
Suppose you have a hidden newsletter folder in the file following file structure inside radiant:
Here is an example showing the issue :
When working with legacy code, writing tests requires to exploit seams to -hack- inject custom behaviour. In Working Effectively with Legacy Code, Michael Fe...
There is a huge difference between reading about agile software developpment, and being an agile developper or team. There are a lot of practical best practi...
Functions and methods have a better status in the .Net world than they had in the Java world … They are now first class. This means that it is possible to as...
I was getting an undefined method 'find_by_path' error when using <r:related_by_tags>.
Heroku is great, you can have a rails app running live in a few minutes ! There are still a few tricky points you’ve got to sort out a little differently. On...
I thought it was a good idea to specify a media in my stylesheet link :