August 15, 2010 by huionn
In my presentation slides for application migration, I include a few slides about Scrum. So, I read quite a lot about Scrum in last two days.
I think what makes Scrum successful is its psychological effects stemming from its metaphor:
“The… ‘relay race’ approach to product development… may conflict with the goals of maximum speed and flexibility. Instead a holistic or ‘rugby’ approach—where a team tries to go the distance as a unit, passing the ball back and forth—may better serve today’s competitive requirements.”
Hirotaka Takeuchi and Ikujiro Nonaka,
“The New New Product Development Game”, Harvard Business Review, January 1986
It focus on self-organizing, cross-functional team to accomplish the tasks (instead of waterfall-like development process).
|Analyst collect requirements from customer.
Analyst work together with developer.
During implementation, developer finds a potentially better solution to customer need and discusses with the analyst.
Analyst get the feedback from customer and he likes the new solution.
Developer improves the product design.
|Analyst collect requirement from customer.
Analyst produces requirement document.
Customer signs off the document.
The document is passed to developer.
Developer follows requirement document.
Developer has an idea to improve the design. However it is not economical to redo the steps above and the analyst is not available to discuss, so he does continue his job by following the document.
|Job Satisfaction||Job Dissatisfaction|
What I consider as tragedy is that (I believe) many Malaysia IT managers have the mindset that programmer/developer job is a labor job which is similar to operators in factory or workers in construction site. They complain that experienced and competent developers are expensive, yet they create a working environment that suppresses those competent developers’ creativity and productivity. Then, they conclude that it is a waste of money to pay competent developers and hire inexperienced fresh grad to replace their jobs (Although experience does not reflect on competency, inexperienced programmer generally requires longer time to learn). What they don’t understand is the long-term cost of deterioration in software quality.
Programming managers have long recognized wide productivity variations between good programmers and poor ones. But the actual measured magnitudes have astounded all of us. In one of their studies, Sackman, Erikson, and Grant were measuring performances of a group of experienced programmers. Within just this group the ratios between best and worst performances averaged about 10:1 on productivity measurements and an amazing 5:1 on program speed and space measurements! In short the $20,000/year programmer may well be 10 times as productive as the
$10,000/year one. The converse may be true, too. The data showed no correlation whatsoever between experience and performance.
The Mythical Man-Month by Fred Brooks
Regarding job satisfaction and job dissatisfaction, I hope the video below can give them some inspiration.
The video is quite long. In short, the 3 factors that lead to better performance & personal satisfaction are:
Autonomy: The ability to direct the course of one’s own life – the work that is performed. What developer out there doesn’t like to be given the freedom to do their own thing, on their terms, with their preferred hours, using their tools, environment, IDE, language, operating system and favorite t-shirt?
Mastery: The overarching desire for people to improve themselves, gain experience and get better at what they enjoy. Every developer on the planet wants to get better at what they do. We crave new knowledge like some people quaff coffee after a hangover.
Purpose: The reasons you do what you do. Nothing is more tedious, horrific, or uninspiring to developers to work on projects that lack any real meaning in the world. Or lack any real direction. Or lack any substantial need from the company. In fact, you can probably point to the brightest points of your career all stemming from those projects that had the deepest meaning to you personally. Maybe the darkest points are those soul-sucking projects that you waded through because you were glad to have a job but desperately waited for things to improve so you could find a better job elsewhere. Preferably where soul-vacuums didn’t exist.
Feeling of belonging: Being part of the team – self-organizing team in Scrum.
Sense of progress: The sense of moving towards the goal – burn up/burn down chart
So, Agile Software Development work miraculously.
[update]: Top management has agreed with my view on Agile Software Development and I will execute the software migration with the spirit of agile development.