Blog Archives

Your Personal Kryptonite

You are an aspiring superhero who is honing your powers to help your colleagues and company to be successful. You gain satisfaction from your efforts and experiences as you learn and grow as an individual in your team.

Superman with his invulnerabilities and superpowers was affected by a fictitious radioactive element called Kryptonite. In the presence of Kryptonite Superman was no longer “super” losing all his powers, susceptible to injury and at the mercy of his enemies. http://en.wikipedia.org/wiki/Kryptonite (yes there are other types of Kryptonite – I am talking about the green variant :P)

During your career you will come across someone or something that is your Personal Kryptonite. Exposure to your Kryptonite can be for short periods or prolonged periods.

“Your Kryptonite” makes you feel weak as you lose the “powers” that you are trying to make use of to achieve both your own and your team’s goals.

In software delivery teams your Kryptonite is also likely to affect your fellow team members if it is affecting you, some examples being:

  • Long standing unresolved blockers
  • Individuals inside or outside of your team
  • Environmental issues

How do you deal with your Personal Kryptonite? Here are some suggested approaches:

Avoidance

In an Agile delivery team if Avoidance is taken literally avoiding your Personal Kryptonite is not a great option as you are still being exposed to it. One of the core values of XP (Extreme Programming) tells us you should have Courage so you should look to deal with your Kryptonite head on?

Another way to look at this option is to eliminate your Kryptonite, I am not advocating harm here! One of the options Scrum Masters / Development Managers / Project Managers should consider if resources are under-performing is to remove them from the team for the greater good. However this does require courageous behaviour from someone in the team especially if the effect of Kryptonite is not obvious.

Reduction

This option is to figure out a strategy to reduce the impact / exposure to your Kryptonite. If your Kryptonite is a person then before looking at elimination you should look to grab a coffee with the individual to air your concerns. The goal should be to work together to resolve any issues by talking them through.

  • Feedback to the individual needs to be constructive as otherwise there is a chance the effect of your Kryptonite actually becomes worse.
  • Look for common ground and use this as a starting point.
  • You may find that the person is oblivious to the effect he/she is having on you or the wider team.
  • Discuss how the individual is affecting both team and individual effectiveness and how you feel?
  • You may find your own actions / interactions may need to be changed?

If the outcome of your chat is not positive and your feedback is ignored, the next step is to raise this with the Scrum Master or the Line Manager who should be looking at the Avoidance approach above.

Prolonged exposure to your Kryptonite is fatal

As with Superman prolonged exposure to your Kryptonite is going to affect both you and your team. This exposure will lead to your team becoming disillusioned, demotivated and not performing to the best of its ability.

14 tips to help you build a great software development team

Web_development_photo

I have been working with developers for over 7 years so what in my experience does it take to motivate and recruit good developers and create a great development team.

  1. Pick people who are passionate about something this does not necessarily need to be related to software development. Having such a trait will add to the mix of your development team.
  2. Try to pick people that add different dynamics to your team look for potential as well as experience in your hires.
  3. If you inherit a team with disruptive individuals they should be moved to another team as they will ultimately stop your team improving and hinder greatness.
  4. Developers want to write code not write requirements or project manage – make sure that they are only doing this as much as is possible. Agile methodologies advocate this. Developers are not QAs or business analysts.
  5. Developers like to have clear goals both for projects and what the value of features are to the business and / or end user.
  6. Creating software is an art therefore good developers want to be challenged and be creative in the solutions they build.
  7. Developers do not like to be asked when something is going to be ready every 5 minutes and especially with a manager standing over their shoulders.
  8. Developers will make assumptions when they have insufficient information and therefore you need to coach them to ask questions when appropriate.
  9. Like any employee you need to understand what makes your developers tick, what challenges them, their strengths and how they can improve their technical and soft skills.
  10. Truly great developers are great communicators so look for these skills and hone them.
  11. Ask developers for their views on how things can be improved.
  12. Pay attention to your developer’s life outside of work, having this insight will mean you will understand them better and can build rapport which will help you deliver projects effectively.
  13. Create an environment where developers can interact with each other and relax when they need to. Get a table football table and coffee facilities are a must. 
  14. Celebrate success and acknowledge outstanding contribution. This can be something as simple as buying ice cream on a hot day.

Some of my tips above have been gained from my experience leading agile teams and the adoption of an agile methodology such as Scrum. The secret to building any great team is to build rapport and see things through their eyes that way you can understand the reasoning behind their decisions.  If you achieve this you will be rewarded with a loyal, self-sufficient and successful team.

Faster ROI, Competitive Advantage, Reduced Risk using Agile Development and the Windows Azure platform

Faster ROI, Competitive Advantage, Reduced Risk using Agile Development and the Windows Azure platform

Windows-azure-logo

Companies use Agile methods like Scrum and eXtreme Programming (XP) to deliver business value through software. Agile methods adopt an incremental approach where large complex projects are broken down into simpler mini projects that are delivered in iterations. These iterations can be one to four weeks in duration. The business person responsible for driving the project (known as the Product Owner or Customer) can align features with his/her business’ strategy by prioritising them for delivery accordingly in each iteration.

Agile development methodologies versus Waterfall

If a competitor is releasing a particular feature or service your Agile development team can respond by changing direction quickly to deliver features that can help your business compete. The Agile team deliver production quality, fully tested software in each iteration so if the customer does require this to be released to live there is the potential this can be done. In a waterfall project, if this change in direction was requested by the Customer it would firstly require a change request which usually incurs additional cost. Once further analysis and design of this change has been conducted you then go into the development and testing phase. The elapsed time for this means you have lost the opportunity to gain the desired competitive advantage.

Whilst traditional approaches mean you are spending the first months of a project doing analysis and design, in an Agile approach you have already successfully delivered a number of “production ready” and potentially deployable iterations of your project. 

Combining Agile and Azure

There are many other benefits to using an Agile methodology but the ones I wish to explore further are speed to market and risk reduction. I think that Microsoft’s new Azure Cloud Computing platform and using an Agile methodology such as Scrum is a really powerful and compelling proposition for anyone looking to build almost any new piece of complex software.

If you are looking to launch a new online service or offering using an Agile methodology can help reduce your exposure financially, deliver features quicker, realise early ROI on your development spend, promote and build your service faster than your competitors can.

A simple scenario – Your company is launching a new online music service. You would like to ensure that people are able to register an interest so that when the service is ready to go live you have an audience already interested. How are you going to satisfy the “As an interested potential customer I would like to register an interest in the new online music service” requirement? The customer decides a simple form to register your interest would be a good idea. If you look at this from a waterfall perspective this requirement would have to be analysed, designed, scheduled, built and tested into the overall solution before you can deploy it. This requirement is only going to be satisfied at the end of the project which could be months away.

Using an Agile approach this requirement would be prioritised for completion in an early iteration of the project which when delivered and deployed would allow for interested customers to sign up for updates about your service.

This is a simple example of how your company can realise ROI early on development spend by prioritising key features to align (in this case) with marketing strategy to ensure you are maximising early exposure of your new service.

So where does the Windows Azure platform come into play? Bear in mind regardless of which development methodology you choose to employ your new online music service it is going to require some physical hardware / infrastructure to run on.

Using an Agile methodology like Scrum and/or XP requires there to be infrastructure in place in the Iteration 0 phase so that your development team are ready to deploy your production quality iteration at *any* time if so requested by the customer. Windows Azure gives you the option to have this infrastructure available from day one. Yes you can purchase hosting from a hosting provider but are you going to purchase the real production hardware when you start the development phase? This is going to have an impact on your project budget. Windows Azure offers the ability to have a small infrastructure in the cloud and then allows you to ramp up your infrastructure by buying more roles of the required type instead of having to purchase your entire production system early. If you decide to buy hardware which is not the same as your real production hardware there is a risk that this is not suitable and you may have to change this configuration which may impact your project by delays in time and/or cost. Bear in mind when using Azure you are deploying on the real production hardware. A good point made by @drmarcustillett is that the time taken to get production hardware ready takes typically 1-2 weeks involving architects, developers and infrastructure specialists. A hosted solution also requires supporting software, patching and service packs to be installed. This all takes time and money. The fact that you are deploying to a consistent platform in terms of operating system and service packs is another risk reducing factors of developing on Azure and helps make the goal of a lightning quick deployment of your production code a reality.

Microsoft has a number of programmes including MSDN Subscriptions http://bit.ly/gNj40F and BizSpark http://bit.ly/eUX3YI that help with the costs of Azure during the development phase. Microsoft have recently announced more free hours on the Azure platform if you sign up for a trial before June 2011 http://bit.ly/i8MEnu  

You can also get a 1 month Azure Pass using this link and the promo code in the blog http://bit.ly/kdGB9S

Another scenario to consider is you have purchased or leased the complete production infrastructure for the aforementioned online music service and it is not successful for whatever reason. You have already paid for or are in a contractual agreement for leasing of this infrastructure. Windows Azure is an attractive option as you haven’t purchased your production hardware up front and it can also scale down if your service is not successful or the expected uptake has been slower than you realised. If you decided to host your online music service internally you would have also recruited staff to manage this infrastructure at a cost.

If your project is an overnight success at any stage of your project, this could be due to the release of a killer feature in a particular iteration or the final release, you could be struggling to keep up with demand in a hosted scenario and be losing out on revenue. Windows Azure not only gives your benefits if you encounter less interest but also if you encounter a big demand for your service. You can literally with the change of a configuration setting provide more infrastructure to cope with the demand. Like with any hosting provider there are SLA provisions for Windows Azure which can be found here: http://bit.ly/f1SXM0   

Don’t forget about your Windows Azure resources!

Due to the “pay as you use” nature of Windows Azure if you are looking to use it in any capacity, be mindful of the resources you are running especially whilst you are testing and assessing its feasibility otherwise you could find yourself with an unexpected bill. There is a feature to allow the setting of notification emails to be sent when you reach certain usage thresholds http://bit.ly/dDZUgD but extra monitoring is worth the time.

Conclusion

Windows Azure coupled with an Agile development methodology is a powerful blend allowing you to maximise the business impact of software development projects whether you are a start-up or an established corporate. The value proposition being you can deliver applications fast; have the ability to change the order of delivery of features all of which is hosted on a cost effective and elastic infrastructure that can respond to changes in demand giving your company the competitive edge over its rivals.

What does it cost to create an Agile development team in your company?

Not counting executive time (although this is really important)

Typical webby project

PCs. Software. Open Source. ReSharper

Agile Coach £500 / day or Agile PM / Lead £50-60k

Developers – 35-45k

Team Lead – 50k-60k

QA – 35k

QA Tools

Designer – 35k – 45k

Wiki / Bug Tracking

Table move

Goodies (inc. break build hats)