September 22, 2010
If you want your team to improve, you need to give it the means to innovate. Since innovation needs ideas, the problem is how to stimulate the creation of new thoughts. A daily stand-up can be a step in the right direction.
Some science seems to suggest that a lot of good ideas, maybe even most of them, come from collaboration and is a network of thoughts rather than a single person unexpectedly getting an idea while taking a bath. In a tightly knit group, your teammates are the extension of your mind, imagination and memory. Or as Steven Johnson said, “chance favors the connected mind”.
If this is true, let’s think about it in the context of software development. What’s the most important thing to get good ideas about in our profession?
Here are a few suggestions:
- Reducing bugs
- Writing better code
- Increase collaboration
- Improve communications
- Increase usability
If you’re like me, you believe that all of the above are results of the way the team works, i.e. the process. It would then seem like a team that is capable of spawning really good ideas about the process and ways to improve it is very valuable.
If you somehow stimulate the intellectual and free discussions of progress in your team, then you’re practically bound to get many improvement suggestions that any one individual couldn’t have figured out on their own. If the teams learns how to, in a safe environment, discuss, argue, challenge and intellectually defend ideas, beautiful things happen.
To me, a well run daily stand-up seems like a good option to achieve this.
October 29, 2009
I just finished reading a very interesting paper by K. Anders Ericsson, Michael J. Prietula and Edward T. Cokely called Making of an Expert. Ericsson, a Swede, is “widely recognized as one of the world’s leading theoretical and experimental researchers on expertise” according to Wikipedia.
The paper sums up what seems to be the general idea in contemporary psychology of what it takes to become an expert in any field: deliberate practice for an extended period of time (10.000 hours or 10 years at a minimum), constantly throwing yourself at new challenges, having experts/teachers/supervisors around you etc. It also states that “across a wide range of experts, including athletes, novelists and musicians, very few appear to be able to engage in more than four to five hours of high concentration and deliberate practice at a time”. Finally I don’t have to feel guilty about not being able to perform complicated programming tasks after 2 o’clock anymore! What a relief.
The authors also give a nice tip of how to improve your skills on your journey to becoming an expert, by trying to replicate masters in the field and then compare your result to theirs, analyzing the differences and drawing conclusions upon that:
“Say you have someone in your company who is a masterly communicator, and you learn that he is going to give a talk to a unit that will be laying off workers. Sit down and write your own speech, and then compare his actual speech with what you wrote. Observe the reactions to his talk and imagine what the reactions would be to yours. Each time you can generate by yourself decisions, interactions, or speeches that match those of people who excel, you move one step closer to reaching the level of an expert performer.”
This apparently translates to any job. It’s truly inspiring, and I believe a good way for programmers to start is by looking at the expert programmers around the world. Read their books, understand how they think, and mimic it until you know it by heart, then analyze it. Memorizing a code kata seems like a good way to add to your 10.000 hours of deliberate practice
See you in 10 years!
June 11, 2009
I’m a programmer and perhaps even a nerd, and as such I tend to focus on learning new tools, languages, patterns and other more technical details all the time. But at the core of my job is having good general problem-solving skills and these rarely get as much focus as cool demo webcasts of products to come etc. It’s just like school where you tried to learn facts, but never really learned how to learn.
I guess I’ve been thinking about this for a long time, but reading the excellent book Pragmatic Thinking & Learning: Refactor Your Wetware by Andy Hunt made me understand it at a much deeper level. Thinking and understanding aren’t the same as you’ll see.
The conclusion I reached was something that I’ve been iterating in my mind over and over during the last year: you need to learn how to communicate with yourself. Communicating with others is more visible and a highly sought after skill because it shows that you’re not a introvert geek, but being able to communicate with yourself is something that I think we all should strive for as well.
What really snapped my head into place was a bug I had been trying to solve for a few days. Yes a few days, that’s how long I was stuck on this little sucker. Just before going home on the second day, I started thinking about self communication and opened up a text editor and described the problem to myself as detailed as I could. Then I read through it and huzzah, the bug was solved within minutes. It was super simple, but I had spent the two days being stuck in a mental rut that I couldn’t escape as long as I only tried to code myself out of the problem.
The secret is the action of putting what you think about into concrete, actual words. This process switches your brain into another mode, makes you think about it a little differently and activates reflection on this subject in your mind which can go on unnoticed for weeks in your subconscious. You may believe that just thinking about the problem is enough, since you feel that you already know all you need to know. But that is a mistake. Expressing the problems differently is key to developing a holistic understanding, to start seeing patterns, to connect to the knowledge you have about the subject through different mental paths. The way I see it there are many clues in society that point to the benefit of this, such as the catholic confessions, prayer, psychotherapy, rubber ducking, letter writing, keeping a diary and so on.
So the next step for you, dear nerd, is to fire up a text editor or open a notebook and describe any problem you haven’t been able to solve for a while to yourself. It may be related to coding, work or even your personal life. Then you can throw it away, you’ve probably already benefitted from it. Do this over and over, perhaps through a simple exercise called morning pages, and you’ll start understanding the mechanics that are you and your mind and what you need to do to continually improve yourself.
It has done wonders for me anyway.