Accepting change and responding to change is a true Agile spirit in my opinion. During product development projects; user requirements change, UI changes, client expectations change, system behavior changes and to accommodate these changes your codebase consistently has to evolve.
Continues code refactoring is reality in Agile teams, a great piece of code in this sprint might be refactored in next sprint.
How Agile team deals with refactoring depends upon the
- Maturity of software engineering practices
- Desire to learn new things
- Exploring areas of improvement,
- Tolerance in product management team about consequences of patchy solutions
- Culture of doing the right thing for the client
On daily basis developers spot code smells and identify areas of improvement, small changes get implemented quickly and bigger changes get discussed, sometimes compromise solution is chosen otherwise features delivery or project due date gets the hit. Among these developments the communicating what has changed usually slips through the cracks because everyone is so focus on feature delivery.
Recently I ran number to workshops to identify challenges we face in continues refactoring and how to approach refactoring in a structured and systematic manner. We came up with a refactoring model that any product development team can follow make code refactoring more effective and easy to understand.
Refactoring Model Details
- Identify areas of improvements
- Define your goal
- Collaborate ideas
- Propose solution
- Time-boxed implementation
- Improve quality and/or performance
- Radiate knowledge
- Record achievement
So how you team is approaches refactoring and what systems you’ve in place?
Dictionary meaning of reward is something given or received in return for a service, metric, hardship etc.
In typical reward system one celebrates success of an individual or team based on their hard work or value added to organisation (usually one is rewarded for success). Ceremonies are held and art effects are presented in form of monetary items, recognition certificates and well done emails. In reward communication these keywords are mostly used “going extra mile”, “proactive behavior”, “going out-of-the-way”, “excellent team work” etc.
I understand that reward system plays important role in organisation’s culture and shows that people are treated with respect and valued for their contribution. High point in these ceremonies are usually individual or a team getting the reward but not the steps that one took to be rewarded (I understand that there are small speeches and emails. But do you really remember who was the top performer in your team 6 months ago? and why they received the reward (ah ha.. a moment for thought perhaps).
This idea has been flickering in my mind that reward system and understanding system are interlinked with each other and by combining these systems we can help teams better understand about the actual behavior that led someone to get rewarded.
Some of the basic characteristics of combined system can be (I call this “Understanding System”)
- Better recognition and radiation of non-formal learning
- Spaced learning rather than cramped learning
- Increased motivation
- Acceleration in idea generation
- Increased workplace satisfaction and talent retention
I am interested to know what reward system you have in-place for your team and how is it helping your team to learn, grow and understand the actual behavior that led to the reward?