Thursday, 29 September 2011

Pressure versus Urgency - is there a difference?


Last week I experienced an interesting interaction with the lead architect on my team, who'd been away for several days on a conference; and come back to find things not to his liking - the quality of the deliveries was not up to standard, people were not adhering to the architecture -- his take was that the team are under enormous pressure from me to get things done and delivered at the end of the sprint.

This caught me by surprise at first - how odd, I've not even started applying any pressure...But I've grown used to the different kinds of people on the project team; and hence didn't react negatively or emotionally.  My reaction:
"I appreciate your concern and understand where you're coming from. I think there's been a misunderstanding, perhaps due to my not making myself clear. There is a difference between Pressure and Urgency.  Yes, there's a sense of urgency around us finishing work according to plan because people are depending on work being created, but at no point should we compromise quality  - there was no pressure to take short-cuts; the architecture rules must be adhered to, no working off a branch, everything must be done on the main product, adhering to all quality standards..."

Having satisfied this architect, who left away happy that we were on the same page, I was still left with a sense of uncertainty myself. The team have probably got the concepts mixed up, although to be fair, there is rather a vague line between the two terms Pressure & Urgency -- but big difference with how these terms manifest themselves through action.  In the spirit of collaboration I then fired off an email to the team highlighting the difference in the context of our project and business needs, and then settled the matter at the retrospective. It turned out, as so often is the case with these things, the architect misunderstood what the team had been attempting, working on a branch only to prove concepts and theories that necessitate rapid development at the expense of some the architectural bottlenecks, i.e. we willingly broke the architecture to prove a few points....

Nevertheless, I still wonder if I may have unconsciously contributed to applying artificial pressure. I will explain the nature of my current project in a future post - Suffice to say my role is blurred, call it "Pseudo-Scum-Master-trying-to-balance-Hard-Delivery-Project-Manager-Development Manager-with-a-slight-touch-of-Product-and-Programme-Manager". I am seriously not blowing my own trumpet here, we are an evolving project team where the (unwritten) roles&responsibilities that were supposedly assumed well defined is in reality quite blurry - no surprise to software development projects, and especially not surprising when its an organisation's first attempt at truly in-house software development...

Definition of Pressure according to Free Dictionary
The ones that stand out for me are:

  • the act of pressing
  • the condition of being pressed
  • the application of continuous force by one body on another that it is touching; compression
  • a compelling or constraining influence, such as a moral force, on the mind or will: pressure to conform
  • urgent claim or demand: under the pressure of business
  • to force, as by overpowering influence or persuasion.
    an urgent claim or demand or series of urgent claims or demands to work under pressure
  • the quality or condition of being urgent; pressing importance: the urgency of the call for help; pleading with urgency.
  • a pressing necessity
  • all hands and the cook A state of emergency which of necessity becomes everyone’s top priority. This early American cowboy expression described the precarious state of affairs in which the herds were wild and all available persons were needed to bring the situation under control. Under normal circumstances, cowboys tended herds and cooks fed the cowhands; however, an emergency required that everyone chip in, temporarily ignoring differences of rank or task.
  • the state of being urgent; an earnest and insistent necessity
Agile lends itself well to Urgency
The very nature of Agile/Scrum with its fixed sprint cycles, the two-week time-box for example can be in itself quite pressurising. There is a natural sense of urgency to ensure that enough detailed planning is done up-front, the work is well understood and the team hit the ground running on day one of the sprint. In Ken Schwaber's Agile Project management with Scrum, he talks about how important it is to do detailed planning, that agile doesn't ignore sensible process; and the importance of delivering something at the end of the sprint.

Incidentally, the same architect who talked to me about pressure, at my interview took pride in saying that the team would do whatever it takes to finish the sprint  according to plan - work overtime, come in on weekends, etc - what gives? According to Dave@PracticalAgility, projects with urgent goals are prime agile candidates, but he also cautions not rushing along to do things quickly, and the importance of taking a pause - which coincidentally is what I've proposed to senior management just yesterday (only saw his post today as I googled on this subject)...

Is there really a difference between Urgency & Pressure?
Yes, there is. It's not just my take on it - Others outside of software face similar challenges. Take for example the Pressure VS Urgency from Real Estate, although software projects are a little more peculiar.


People Under Pressure Don't Think Faster!
Tom DeMarco dedicates chapter 15 "Think Fast" of The Deadline to the effects of pressure. The Deadline is an interesting tale as it covers almost every experience one encounters in software projects, especially the unrealistic and nonsensical demands from senior management placed on their underlings, with the poor project manager acting as the buffer. "Think Fast" is about the main stakeholder changing direction and enforcing his might just because he can, and this sets the team down the road of discussing & modelling the effects of pressure. It concludes by asking the ever-knowing Oracle:

Why does the effect of pressure on programmers max out after only 6% productivity gain?

Oracle replies:

PEOPLE UNDER PRESSURE DON'T THINK FASTER -- Tim Lister

DeMarco then summarises the effects of pressure (Page 199, The Deadline):

  • People under pressure don't think any faster
  • Extended overtime is a productivity-reduction tactic
  • Short bursts of pressure and even overtime may be a useful tactic as they focus people and increase the sense that the work is important, but extended pressure is always a mistake
  • Perhaps managers make so much use of pressure because they don't know what else to do, or are daunted by how difficult the alternatives are
  • Terrible suspicion: The real reason for use of pressure and overtime may be to make everyone look better when the project fails
The same message is discussed in the more serious book, outside of the novel context, in DeMarco's "Slack", Chapter 7, titled "The Cost of Pressure". Hopefully you can see this snapshot, please get a copy of this book.


Essentially confirming what is now well known: Pressure has limited capacity to reduce delivery time, maybe 10 or 15 percent at the most. Excessive pressure weakens performance. The model is divided into 3 regions:

  • Region 1: workers respond to increasing pressure, eliminating waste, staying late, focus on critical path - falsely suggesting improved delivery
  • Region 2: workers are getting tired, feeling pressure from home, doing other stuff "undertime" - no motivation, unwilling to sustain, resigning to ignorance
  • Region 3: workers are polishing up CVs and beginning to look elsewhere
Closing Summary - Software projects can't hide from Pressure/Urgency
I have in the past worked on many a demanding project and I've always challenged management's decisions of increasing the pressure points, always quick to point out that adding pressure doesn't make people work any faster, it'll take as long as it takes, people will leave the project, etc. I must admit though, that I've come to learn there is indeed a difference between urgency and pressure; but it takes some tact to get it right. When people are motivated by an urgent need - urgent needs can be good motivators - people surprise themselves - problems are solved in novel ways, there is more focus and concentration. There is a natural pressure of course, but not the kind of pressure from a demanding boss expecting results now now now - if the urgency is communicated well, it brings out the best in people. If it's just imposed pressure, people turn to acid and can't wait to leave the project.

Applied in bursts, pressure/urgency can be a great tool - ultimately though, you're working through people - so ensure people are rewarded and appreciated for their efforts!

I have personally been on projects that may have seemed like Death Marches, but appreciated the sense of urgency to get things done, the reward was self-gratification is seeing the product deployed in tens of millions of people's homes, or providing crucial services to improving the company's bottom-line. Yes, some  projects could definitely been managed differently to avoid burnout, but sometimes, in the world of business this is an unfortunate reality; and especially in today's globalised economy - the hard truth of the matter is, engineers are a dime a dozen..

It is still important though to make sure your team understands the context of the business, the phase of the project and have a sense of awareness of the demands being placed on them, giving them the right and freedom to express concerns of pressure impacting the deliveries.

Tuesday, 13 September 2011

Practical Retrospective on Agile Retrospectives...



If you read my previous posts on Agile, you'll know that I'm not claiming to be an Agile expert, nor a pukka Agile practitioner that abhors classic project management principles, evangelising the merits of Agile/Scrum to everyone, etc - but I do believe in the core principles of the method and am applying as many of these principles in my day-to-day activities in my current company, where I'm a part-time Scrum Master.

I'd like to share my experience with running Retrospectives. Reading about the topic is one thing, going on a training course or seminar is definitely enlightening, but practising the thing in real world scenario is another experience all together. It is especially challenging when the team are used to doing it a certain way, have certain misconceptions or are not familiar with the goal of the process.

Take my current team for example - we're a team of 20 developers & testers, with a handful of business analysts, graphics artists that make up the product team. We're working on an advanced user interface for STB EPGs. It's no typical project because 18 months down the line the requirements for the UI completely changed [maybe it is your typical S/W project :-)] and we're dealing with a lot of uncertainty.  I'll discuss the nature of this challenge in a future post, and how different streams of Agile can be applied to remedy the situation.

Focussing on the retrospectives for now, you need to understand the nature of the team. A Scrum Master is not just a buffer, is not just someone who can facilitate and remove impediments, is not just someone who knows and applies Scrum processes properly. A Scrum Master must also be in-tune with detecting the make-up of the team, understanding the nature of each individual, and apply different tactics for different people. Whatever management courses teaches you about knowing the characteristics of your people, their temperaments, strength deployment index & motivational values -- all of this must be noted and applied in the daily management of Scrum teams.

It is especially relevant when it comes to running a retrospective.  In my team for example, we've got two development units. One unit comprises a team of contractors from India, being led by an Indian who's been living in South Africa for the last seven years. Most of the guys are from the same region Kerala, and gel quite well as a unit.  The second unit is dominated by white South Africans, mostly Afrikaners & a native SA Indian. The former unit, is quite reserved and look for direction from the team leader. Generally the team leader speaks on behalf of the team - this is typical culture of the Indian way of working.  The latter unit however, is a very loud, outspoken team - people are not afraid of talking (mostly out of turn), and venting their issues.  In the midst of each team, are representatives from the Product team, consisting of very experienced analysts (who've never used Agile before, as well as some really new people who've not worked with STBs before). The product team supply the work to the development units, and thus are part of both teams retrospectives. So we two separate retrospectives (we also do two, now going on three, separate stand-ups, planning meetings & planning reviews).

We run two week sprints, we've just finishing Sprint 23. Up until Sprint 21, the retrospectives was all about - "What are the issues, How can we fix them...". In Sprint 22, we introduced the "What's worked well, What's not worked so well & should stop,  What can we do better/You like to add".  I kept the format of the previous retrospective, but introduced a the retrospective as a game. Essentially my message to the team was that Sprints are personal experiences for each member, it's an individual experience - so we want to hear from each team member on his/her take of the Sprint...

The rules of the game:

  • Each member in the team must express an opinion - must voice something.  (The Indian team are normally reserved, and leave the talking to the team leader). Enforcing this rule, then compels people to participate
  • Don't be afraid to say anything - we will not judge you, interrupt you or challenge your response (Some members are really loud, physically imposing, sometimes intimidating and rash when speaking that can be misunderstood by most people as being directed personal jabs, people are shy or insecure about saying something that makes them look stupid) - So remove all of that out, and create an atmosphere of safety
  • No speaking out-of-turn - Wait for your turn to speak please. Stop loud people in their tracks, they must observe the rules
  • Give everyone a chance to have his/her say. You can only comment on what topic at a time - e.g. first round looks at "What is working well" - repeat as required until you run out of suggestions, then start the next topic
  • Do not try to solve problems in detail in the retrospective - we identify the top 10 burning issues that must be resolved in the next sprint, assign owners to actions
  • Keep-to-time: Strong time-keeping, do not stray off-topic. Force people to stick to the topics
  • Allow a few minutes of silence time for people to collect their thoughts and write their suggestions/concerns on a post-it (We usually provide food during the retrospective as we run this over lunch period - so it's a good ice breaker, eat and think about what you're going to say)
The result??

It was amazing - the Indian team participated fully. We heard each member speak, some for the first time. People observed the rules as best as they could, and enjoyed contributing. So quite positive for this team. The second unit shared similar response, although it was much easier to get this team to speak (it's usually hard to get them to shut-up!) - but with the rules in place, even the loud-mouths had to hold their tongue, wait for their turn, etc. We also didn't end up trashing other people's ideas - and we tried to stick to the time limit. 

A lot of good stuff came out of the retrospective - I hope we can carry this forward.  To conclude, Retrospectives can be fun, but some work is required upfront to ensure that not only you as the Scrum Master gets the results you need, but also the team should leave the session having felt they've made valuable contributions, listened and paid cognisance to other people's problems and most importantly, trust the outputs of the session will create value going forward....

Thursday, 1 September 2011

Agile Checklist from the Trenches



I've been working on projects for a number of years now. Whilst I'm not claiming to be a certified Scrum Master (which personally I don't think you really need to get certification), if you go about managing projects with a sense of common sense and realism, adhering to core principles, not only adopting a process but ensuring consistent implementation of the processes -- then you're bound to be successful.

Most of my experience with Agile/Scrum comes from running multi-site projects, with teams situated in different parts of the world, with shared product ownership. One can maintain the spirit of Scrum in such projects, but it requires some management and oversight...compared to the classic small person teams of 10-30 people located under one roof, in the same building, on the same floor. Physical location is important. It is really quite interesting the effects of geographical location of development teams plays on the success of the project, the dynamics of the team, and the overall end-goal of product quality. It's not as straightforward as this, just Google for "multi-site software development". But still, on principle, managing a small local team of mixed individuals versus a global team, incurs less management overhead but share underlying Scrum philosophies.

This post is a brain dump of my lessons learnt and observations so far with Scrum/Agile, the headings comes from an Agile Refresher workshop I attended last year at my previous company but the explanations are all my own opinion.

Hopefully you apply some of these learnings to of your own Scrum projects:

Best Practices - multi region projects

1. Team Setup

  • No one man teams
    • Ensure all people are given equal opportunity to choose tasks, even though there might be an expert in the team that can do most, if not all the jobs on his/her own. Avoid allocating work to specific technical experts, embrace knowledge sharing. Use the experts to help with user stories and work distribution
  • Consider and assign people with multi site collaboration skills
    • Working in a multi-site team requires to have people who are skilled at soft skills, a natural talent for bringing people together and engaging in meaningful discussions despite cultural differences.
  • Consider if you have to duplicate roles on sites, e.g. have a proxy Product Owner (PO) or Development Owner (DO)
    • If the local and off-site teams are equally sized requiring similar management overheads, consider adding proxies on the remote site - as this enables some central control and synchrony. Challenge with this of course is for the local & remote POs to communicate and understand each other well
2. Align Expectations
  • Set clear vision and get team buy-in
    • It's important to set clear goals for the project, and directions for all the teams. Propose, instead of direct how the project will be structured, involve the team in fleshing out the organisational structure since the team members know best what their strength's and weaknesses are - bring all of this to light at the start of the project creates an atmosphere of inclusion, better chances of getting team buy-in, because the team will have contributed to defining the vision and be determined from day one to actively contribute to the success of the project
  • Define roles and responsibilities
    • This is important to all development processes, not just multi-regional.  Clear roles and responsibilities must be defined so that people understand what's expected of them. In local and remote teams, this thus avoids duplication of work, people are less-likely to step on each other's toes, or choose work without first understanding the process of getting new work assigned to the backlog. In the case of strong minded technical people who are confident and self-motivated, try to give some responsibility and autonomy to these guys for example, being the proxy PO or DO. 
  • Define decision process
    • This is quite important in keeping with defining the roles and responsibilities. Decisions need to be made quickly, it's about reacting to the current need, wearing the hat of pragmatism. Beware of strong minded and loud personalities, ensure that everyone buys-in to the decision process - be clear as to where the buck stops! 
  • Define success criteria (for a  multi regional collaboration)
    • In the end we not only want the project to be successful in terms of meeting its objectives, we want the team, the people that led to completing the project, finish the project feeling a sense of accomplishment, having learnt something and for the team to grow from the experience. 
3. Communication
  • Set-up Communication Structure
    • Face-to-Face
      • This is always preferred where practical. Certainly with local on-site teams, F2F should be encouraged. Discourage email and phone calls especially when the team is co-located. Be sure though to limit the number of meetings - meetings must have a purpose and add value to the project.
    • Video Conference (weekly)
      • The next best thing to face-to-face is Video conference - especially with remote teams. Ensure you have the right tools that enable a please VC experience.
    • Email Distribution Group
      • Setting up an email distribution group is useful for quick, directed communication. Beware of unnecessary email though.
    • Reporting (team internal, group, external stakeholders, etc)
      • Agree on the reporting mechanisms up-front, with clear owners for reporting. Keep the local Scrum management fluid, less admin heavy and try to make public whatever the team is up to. Do not spend too much time generating reports that no one will read.
    • Iteration planning
      • This might come as a surprise to most people new to Scrum, but you have to have a clearly defined iteration planning process, including pre-planning, analysis and design, etc - ensure the planning sessions are well communicated in advance, keeping an up-to-date backlog that is publicly accessible is also good practice.
    • Demos
      • Demos are key to communicating to stakeholders the progress of the project. Ensure regular demos are held, made publicly available - communicate via email, wiki or blog - but get the message out to your target audience!
  • Shape Communication Culture
    • No matter what school of project management you come from, there is an underlying problem in all: Communication, communication, communication. Instil this culture by:
      • Provide feedback
        • Continuously seek out opportunities to provide feedback at team level, or even at individual level.
      • Create Information flow (using email group and other means)
        • Don't hide information - open and transparency helps as long as you're confident the team can deal with this information, otherwise it has to be limited information flow
      • Make sure everyone has the necessary information, be inclusive
        • Everyone one the team must have the information to help them get the job done - there should be no secrecy
  • Be open about language issues - create a culture where it's OK to ask for repetitions
    • This is important because for most remote teams, their first language is most likely to differ from the core team on location. Cut-short whatever cultural blame-games are going on, instil openness and be frank that there is the language barrier - the team must respect this difference and be patient to repeat discussions or instructions if required.
4. Agile/Scrum
  • Create common understanding of what Agile means for your project, including Retrospectives every iteration, Shared Backlogs, Iteration Demos, etc.
    • It is important the entire team understand what Agile/Scrum means and how the project is going to adopt those principles. Get all misunderstandings corrected and clarified at the outset, for e.g. the myth that documentation is not required, etc, etc.
5. Team Building
  • Early Face-to-Face meeting - cross pollination
    • As pointed out above, face-to-face is personal, adds human touch - helps with getting to know one another. This should be encouraged
  • Build Trust
    • Generally managers (POs/DOs) take a long time to build trust - ensure that when people come to you to solve problems/impediments, that you act immediately. This will instil confidence in the team that management is listening and can be counted on to solve issues. Protect the team if things are not going well - managers are a shield to the team.
  • Create Team Spirit (we want the team to succeed)
    • As covered above, encourage peer dialogue, pair programming, etc. Promote team exercises, challenge team in other ways to possibly solve problems not related to work - all of this will get people to gel together, building team spirit
  • Be Respectful
    • Especially with multi-site teams with cultural differences, respect is important. This can be learnt by promoting cultural awareness. Where the POs/DOs are senior technical people themselves, allow yourself to step away from the problems and let the problems be solved by the team
  • Empower - give people responsibilities equally across regions
    • Where there is interest from people who have shown competence and can be trusted, then continue to add more responsibilities. Where teams are separated geographically and the skills are equally matched ensure that work is evenly distributed. Where there is a skills gap, try to bridge that gap with doing knowledge share sessions, etc - promote cross functional knowledge, avoid domain experts.
  • Recognise Success/Failure equally
    • Remember we're all in this to learn. We're working with people - projects will come and go, but the people will most likely remain the same.  Reward successes, and see failures as just delayed successes. Failure is just one step to success, to wisdom - try to understand the reason for the failure and then help the team to overcome this.  Make sure the team adopts a "no-blame, no name-and-shame" attitude.
6. Management
  • Project Management (PO & DO) to follow team closely
    • Multi-site development teams require some close management, not micro-management - but POs/DOs/PMs must ensure there isn't any hidden festering issues. All the while the management team must adopt the stuff described in the above points
  • Be aware of the culture you have in the project/team
    • Management team must be aware of the culture of the project, and have realistic expectations
  • Intervene when experiencing problems, e.g. by doing Force Field Analysis / Root Cause analysis with the team
    • Where required, if you spot the team going down the wrong path - then step in and offer assistance. Don't dictate, be tactful in approaching the problem - ensure you get to the root cause
  • Exchange ideas/best practices between projects, e.g. knowledge-bridge
    • Helping other projects out as a result of learnings from your project is a nice way to network, promote knowledge-sharing and instil values in the company of sharing knowledge rather than having competing teams
  • Inspect and Adapt
    • As always, no process is perfect. Neither is a process static. You have to continuously reflect on your processes, team, behaviours, outputs, etc and be willing to change direction, adapt your processes and be open with failure as well...

Sunday, 28 August 2011

When Agile goes wrong...



When Agile Software Development goes wrong?? Really, Agile/Scrum is the best thing that's happened to the softwared development fraternity, how can it ever go wrong?? It's the latest trend (not exactly, it was the latest straight after XP eXtreme Programming, but the current latest trend is a mixture of Agile and Lean development or Kanban, so much so that some people are calling it "Scrumban").

Let me point out that I am a huge promoter of Agile/Scrum, have seen it in action from small project teams (less than 12) to large-scale projects with 200+ people distributed across the world - Agile/Scrum does work, it's basically common-sense pragmatic practices, with the aim of getting the product development right early on, involving early requirements feedback with regular customer interaction, continuous and incremental testing, etc, etc.  You can find a lot of reading material online or many books published on the topic.

I feel that some people are too quick to jump on the Agile/Scrum bandwagon, after reading a book or going on a quick training course covering the essentials of the methodology.  This is where the danger comes in - when newbies fresh into the concept after being exposed to the classic style of very well-structured, co-ordinated and controlled project management practise of software development -- are keen on dropping all concepts done under what is now generally labelled as classic "Waterfall" development, and whenever challenged with understanding or improving the project processes, people are just too eager to show the "Waterfall" trump card: "That's Waterfall, we're Agile now, we don't do it that way..." - and basically this drives me nuts sometimes because people don't fully appreciate what these terms mean, quick to dispense with the "Agile" vs "Waterfall" cards, especially when these remarks come from people who really cannot call themselves seasoned experts, or seasoned developers that have consistently released real-world products into the market, not only experiencing the development phase of the product life-cycle, but also the ongoing maintenance, support and upgrading efforts that result from a successful product launch...


Let me come back to topic. So how does Agile go wrong??
Firstly, as stated above - newbies start the process, without much thought or planning, or without grasping the inner core of what Agile/Scrum really means.  They basically fall in love with the Agile manifesto, and because of being heavily managed on previous projects, adopt a mindset that is close to the euphoric 1960s where everyone is basically free to do what they want, respect and love the team, allow the team to self-organise and self manage...

Lets look at the Agile Manifesto again, as I'm going to touch each point in context of my real world experience, especially with Set-Top-Box software development:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
What else can cause Agile to go wrong?? 
Essentially this boils down to being in love with team freedom and dynamics -- and forgetting that even with Scrum, there is some process overhead.  The fundamental driving force behind driving a project with Scrum, is the Product Backlog.  Not only do you need to have a Product Backlog, you need to have prioritized Backlog, owned by a Product Owner, executed by the development team through the guidance of a Scrum Master (usually this is someone who's come from leading a development team as team leader, or an old-school project manager looking at managing software projects with a fresh eye).  The backlog is not a list of requirements, the backlog is a list of work packages, use cases or stories that describe a piece, area or feature of the product that can be done in a short amount of time (i.e. a Sprint) that can be developed, tested and demonstrated at the end of the Sprint.  The backlog is not a ToDo list of atomic requirements for burning down...


Any intro text on Agile, as in Agile Project Management with Scrum (Microsoft Professional) expresses the importance of maintaining an up-to-date, prioritized backlog, owned by the product owner who is supported by the Scrum Master - a missing backlog is a fundamental flaw in a team's adoption of Scrum/Agile...


What else can cause Agile to go wrong??
So we covered over indulgence of the manifesto; missing product backlog for Product and Sprint planning.  The next thing that goes wrong is not enough pre-planning the Spints: What are we doing now, and what do we plan to do next??  Despite the flexibility of Agile, sprints must execute fluidly, systematically, almost like clockwork. The sprint process should be almost natural to all on the project team.  Poor planning up-front in identifying the possible stories to focus on the next sprint, doing the due diligence to ensure that for the upcoming work the team will be as free from impediments as possible.  Planning is not just choosing a bunch of requirements that people like to do, it's about sitting with the Product Owner and agreeing what is desirable for the next Sprint.  Poor planning and not identifying the work packages before the sprint, that is, not doing pre-preparation is likely to result in blockages, waste and inefficiencies during the sprint, resulting in less than optimal user story completion, injecting obscure data into your metrics gathering for predicting throughput/velocity of the team...

What else can cause Agile to go wrong??
The size of the teams.  Put 30 developers & testers in a team, and controlling that is going to be challenging, especially when a)No real structure to team; b)No backlog; c)No Pre-planning.  It gets worse when the team is further segmented into different teams, Team A, Team B, Team C - all get to choose which "requirements" to work on for the next sprint. All being managed by one or two Scrum Masters -- this brings with it communication challenges obviously, but also poor team dynamics. Instead of having people with cross-functional knowledge of the stack, instead we get people specialising in certain areas, with a natural tendency of reluctance or insecurity to work in a different area of the product.

Is that all I've got?? No - there is one more thing that can trip you up: using the wrong metric to measure performance of the team.  With the absence of a prioritized backlog of user stories, some projects use Requirements Implemented as a measure of progress - so much so, that when reporting progress, we report on X/Y requirements done, not what is more important that being features completed.  Some projects even predict the number of people requirement, and use "One requirement per developer per day" and base their argument that over time, this value averages out and can be trusted.  Thus, number of requirements completed is measured for team output, and with a fragmented team, this measurement is per team, not per project.

I am of course talking from experience. In fact, I am experienced this Agile mentality in my current job, thankfully with the help and assistance from another scrum master, between the two of us, we have slowly been instigating changes, turning things around such that we now have a Prioritised backlog, we now focussing on use cases and stories, we're now measuring throughput in terms of features, and we're now doing some pre-planning. It's not perfect but it is a start, hopefully in the right direction....it's not yet smooth sailing though, because management have pulled the rug from right under our feet by changing focus to implementing a brand new UI. Good thing we're doing agile and we can deal with uncertainty....BUT....

BUT Agile is not easily applied to Set-Top-Box development projects, especially when the aim is to launch a new generation EPG, Middleware and new hardware.  Changing requirements almost two years into the project whilst still expect the team to still deliver to original time-scales is woefully optimistic to say the lease, but management have also misunderstood Agile, and flaunt the term willy nilly, assuming that the team is flexible and can cope with change!

Why is a STB project a difficult Agile Project when you've fallen in love with the Agile Manifesto?
A STB project involving new hardware, new middleware and new EPG is NOT like writing a web site or a smartphone application.  You don't have the luxury of setting up test websites, beta sites to ask for feedback, neither can you release and retract a release because everything is on the server for such web apps. STB projects are intensive, expensive, involve a lot of third party vendors, and thus realistically implementing core Agile principles from the outset is going to be difficult. I say difficult, but not entirely impossible -- however, it comes with a lot of management and administration overhead to indeed run a true Agile STB project.
Of course, assuming one has all the components like Hardware, Drivers, Operating System, Middleware to a mature state of completion, then you can definitely run an EPG development project using Agile/Scrum, assuming of course, you have a clear picture of the end goal. A clear picture of the end goal, doesn't that defeat the purpose of using Agile/Scrum then?? Yes, in some ways - but remember, we're aiming for time to market here - if we keep changing our minds, launching a product is not going to happen to plan, especially when the underlying implementation might need to be extended, changed or remodelled to fit the changing requirements of the EPG application.  I will expand on EPG design in a future post...
If the EPG & Middleware are under development, then you cannot escape notion of pre-planning: work out what the dependencies are in advance of each sprint. Ensure that Middleware development leads EPG development, ensure there is a path to the teams for communicating and resolving issues, etc...
If the Graphics Design, EPG & Middleware are under development, then you add another layer of sprinting for the graphics team, such that the graphics team leads firstly the middleware, then EPG.
If you're in the business of documenting every requirement for each layer of the stack, then you'll have to either specify the requirements up front, but because the graphics design and user experience is open to interpretation, requirements cannot truly be closed or published, unless the team have been through an iteration or two of proving and testing.

Lets look at each point in the Agile Manifesto
Individuals and interactions over processes and tools
Yes, this is all well and good when the team is small, but when you have a team that is more than ten, say thirty individuals who are a mixture of full-time and contractors from India, not local talent - then you will need to have processes for communication, planning and tools for enabling collaboration.  EPG development does not end at the point when development is complete, there is a strenuous batch of user, hardware and security acceptance testing that must take place to get to launch candidate. Changes that come into the product needs to be controlled and managed, hence there needs to be a change request process in place. You cannot just have a whiteboard with post-it notes posted to keep track of development, you need an audit history to refer back to when it comes to maintaining and enhancing the product in future.  Within the local development team however, to get the job done within the sprint, then the team is free to do what they want or need to do to get the job done and show something visible at the end of the Sprint.

One also has to be careful with the amount of freedom given to the team. A self-organising, self managing team does not happen overnight. Of course, management must provide enough autonomy and leeway to make this happen, but if the individuals within the team do not have the talent or competencies to self-organise, take initiative on their own without having to follow direction, that they understand the big picture and are in-tune with the overall goal of the company and project -- then you will find it difficult to have a self-functioning team.  Instead they will look for direction from a senior person, be it the team lead or architect.

On the subject of architecture, the architecture and design patterns that underpin the software stack must have a central owner, the one responsible for the technical integrity and coherency of the architecture.  Yes, the architect must accept enhancements and open to criticism, but the architecture must be documented in sufficient detail to allow people to make a valuable contribution.

A design review process must be in place for the EPG - at the start of any new work, the concepts must be dicussed and a design review held. Important architectural changes must be documented as this is fundamental to the future maintenance of the EPG.

The make-up of the team is important - Contractors are there to just get the job done. Don't expect them to gel well, form a self-organising team and help the scrum masters in getting the backlog burned down on their own initiative. The more work contractors have to do, the longer they stay in a job.


I don't think all of the old-school of development is dead, that's why Fred Brook's The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition (2nd Edition)
, especially the essay on The Surgical Team and other parts of the book dealing with people issues is still very much relevant today.



Working software over comprehensive documentation
Yes, we all want that. An EPG needs to be sufficiently documented not only in terms of architecture and design, but also on user manuals that enable independent third-party testing.  Comprehensive where necessary in terms of describing the requirements from third-party component vendors, less detail when the team is local and in control of the development. At the end of the day, a working product is needed as we can all agree, it makes common sense - but for the maintenance and enhancement teams down the road, sufficient documentation is required to enable the longevity of the product.  It becomes especially important if the development team consists of a bunch of contractors not loyal to the company or product.


Customer collaboration over contract negotiation 
If you own the EPG in-house, i.e. you're the customer - then of course, collaboration must happen regularly.  But even in places where this is the case, the company is fragmented into different departments, each with their own expectations of the end product. Sometimes, as happened in my project, a year and half down the line, people took note of the product's deficiencies to make a U-turn and almost start-over again.  Regular feedback must take place.  However, in the case of a third-party supplier, then contracts must be negotiated as part of any good project, it is project management best practise after-all. You have to know what you're signing into or signing up for, and take necessary measures to ensure your IP is protected, and you make a nice profit in the end.  In this day an age though, and in the market of Digital TV, the players are small, some are even part of the same parent company - so naturally contract negotiation takes a back seat...
Responding to change over following a plan
There must always be a plan, not the traditional Gantt chart project management plan of tasks and dates and deadlines, tracking every minor slippage etc, etc. There must be a plan in principle with key milestones in place, with checks and balances - ensuring the development parties are fully aware of the constraints being placed upon them - and for them to work with this certainty as a hard-deadline, and dealing with the uncertainties within that - so deal with change, but be cognisant of the fact you are delivering code in the end.
At some point in the business of EPG development, change must stop - there is so many user experiences one can think of - if you continue to respond to such changes, you will not ship your product.  Your plan must cope for some change of course....


Sunday, 21 August 2011

How it feels to be back home again in South Africa after 10 years...?



Well it's been almost 3 months now that we've left the UK and settled in South Africa.  Only last week did I get broadband ADSL and a telephone line installed, life is slowly achieving a sense of normality again.  The first two months was hectic, although we were sorted in terms of accommodation - but that in itself also took a little getting used to...it was new for all us!

Let me start off by saying that Multichoice, despite what products they have currently on market that is causing many people great pains, the corporate services handling my relocation was absolutely tremendous. Although it had taken a lot of effort on my part in terms of organization (visas, relocation quotes, car shipping quotes, travel arrangements, facilitating payment, B&B booking, etc) - once everything was finalized, the relocation pretty much went smoothly.

We spent 3 nights at the Holiday Inn  prior to making our final departure to SA. It was a challenging 3 nights because the family shared a large bedroom (1 double bed, 2 single sofa beds) with the 3 kids - we'd emptied our house of all furniture and needed a couple days to tie up the loose ends.  We flew Emirates, London-Dubai-Johannesburg, business class - it was a very comfortable experience. The kids loved it, unlike our last trip cramped in economy class - so when we reached SA, the family was all fresh and relaxed.  My brother and parents greeted us on arrival, and we were chauffeured to the guest house which incidentally was a flatlet in my brother's property.

Initial Impressions of SA
To be honest, I was blown away by the sheer contrast of it all. On the one hand the place is sprawling with impressive buildings, suburbs, the latest model of cars being driven around, the rush and pace of it all was a little overwhelming -- on the other hand, the evidence of poverty quite literally knocks on your windscreen at every robot (traffic light), intersection, junction, etc...Bear in mind, I've never really lived and seen Gauteng (Johannesburg) before...On face value, without thinking too deeply about it and not involving the complex politics to understand the sheer magnitude the current government of SA has to solve; just looking at the infrastructure alone, around developed parts of Joburg - one can't help but get the sense of how great this place once was, in terms of buildings, residential estates, etc. One can noticeably see the decay, the lack of attention paid to what was once well looked-after estates -- yet at the same time, one naturally thinks about how well the white guys had it in SA -- they really had it made for themselves, enjoying all the luxuries of Apartheid...only recently opened to the Blacks (includes Indians & Coloureds).  That's just looking at historical, old settled neighbhourhoods.  Traffic lights are always offline, the use of the four-way stop is dominant in Gauteng - not sure why the road planners didn't opt for roundabouts (traffic circles) which IMHO is more efficient than forcing motorists to stop-in-turn even when there's no traffic...

So you do get a sense of decay, it’s quite evident in most places that once-upon-a-time the areas were quite nice, roads in good condition, well maintained and well looked after. Some areas are trying hard to maintain that state, but the majority of the areas it’s quite evident that maintenance of the basic services are falling short. Interestingly enough, this isn't just my opinion - others also relate this was the very first impression they got too  "I could not believe the decay in areas that were once beautifully maintained. I am talking about the public areas of course - once inside the gardens of the private houses things seemed ok…" -   But they’re working hard to improve, no roads have turned to mud/dirt tracks yet, and the new developments are looking great.  The world cup was a boost to most parts, so for most of the time you could get away with thinking you were driving in UK.  We experienced a few power cuts, most of the traffic lights (robots) are out-of-action when it gets bad – again, don’t think there’s enough focus in the services area...

Kids
Despite what people say that kids adapt well to change, my two boys aged 5 & 4 -- at first thought they were on holiday visiting family just like last year -- until we enrolled them into school the third day on our return!  What a shocker it was for them. Coming from the caring UK environment where the teachers are loved almost more than the parents themselves, where the learning environment is through fun and games rather than structured "listen to me and learn" routine -- my boys absolutely hated school. For two whole weeks they resented going to school, crying almost daily to go back to the UK, they don't like the teachers, the teachers are not friendly - the children are not friendly, making fun of them, etc, etc.  We put them in a private school, Greenside Primary - which apparently was supposed to be a good, decent-enough school.  Perhaps it is, but my initial reaction wasn't that great, I still have my reservations about the school, but haven't had the time to sit down seriously to consider the options.  On the strength of my brother's and sister's-in-law opinion the school is suitable for their daughter (who happens to be the same age as my son), we went with the flow and sent our kids to Greenside.  Anyway, this school is a privately run organisation, and charges a flat fee of R14300-00 per year per child, regardless of age - that is, a 4 year old pre-primary child pays the same school fees as a 12-year old primary school leaver. Obviously to me this didn't sound quite right because little kids demand far less resources and time that older kids, and when I asked a bit more about this policy, my wife was given a very curt reply "This is how it is in SA. If you don't like it, you can find another school. There a plenty of people wanting a place in this school. All school fees are flat fees and count towards paying teacher's salary". I also inquired about the extent of school supplies needed to the level of toilet roll and soap dispensers -- so really, we pay for everything, right down to my child's usage of toilet & toilet paper!!  You can of course imagine that this is non-existent in UK, that parents don't need to pay for anything, in fact the government provides almost everything...so really, it's a big disadvantage that my kids have left the UK educational environment for a South African substitution - this is conscious decision on my part, I can only hope that the cultural experience the kids come out with would surpass that of the UK (On the other hand, if you look at the recent riots in London one would question the worth of UK education system)...
I've been speaking to a few people who've had family members as teachers, and from what I hear is that teachers are not passionate about the job anymore. Teachers that were once very qualified and passionate are left disenchanted, repugnant and ready to leave. Those that cannot leave stay behind doing the bare-minimum.
It is a sad situation really, the kids had their first sports day a few weeks back.  One notices the sheer lackluster of the event, the sports ceremony and procession lacked enthusiasm, fun, passion and joy.  As parents we didn't even realise the sports day was on, we were notified two days earlier!  Anyway my kids seemed to have some fun, my 5 year old did come out third for his race; my 4 year old completed some races as well -- but the little fellows weren't even rewarded any medals.  So the 4-6 year olds were forced to attend from 9AM till 4PM, stretched the whole day to see the all the sports events through to completion, coming back home drained and tired...
I do have a bone to pick on the schools subject, one that I'd like to participate in future, once I've sorted all the other stuff to get the house and family settled down.
Currently though, the kids seem to have transitioned - a little too well maybe, because they've almost lost their British accent, and are speaking like real Gautengalengs!

Work
As I said in the opening, I've nothing but praise and kind words to offer Multichoice HR and the hiring managers. They've been very supportive, patient and generous. I'd run into a few hiccups with getting my car imported, which the company graciously attended to.  Professional-wise, well - you'll just have to read some of my other posts on working.  Suffice to say, working in SA does take some getting used to. A clash of cultures and personalities exist, the apparent lack of professionalism and due diligence is apparent in most places, with the cow-boy attitude of just getting things done, quickly to market, ready to launch without any thorough detailed analysis...lets just say I'll be kept busy for a long time.  I am however appreciative that people are not discounting my ideas and push for process changes outright, and so far no one has come back to tell me "Shut up Mo, this is SA. Don't try to do what you did in UK/BSkyB/NDS as it won't work here" - so I'm treading lightly, and building upon that patience that one so desperately needs in SA...

Crime
Alhumdulillah, so far so good.  Whilst nothing has happened directly to me and the family, we are always attentive and on-the-lookout.  Our house is currently burglar alarmed, plus have security gates inside the house. As I write this post, my house alarm doesn't work because I recently requested two remote controls to control the garage door, and activating the alarm system remotely. It so happened the garage door now works, but I can't engage my alarm anymore without setting the alarm off!! So the technicians failed to carry out detailed regression testing.
One of the friends I made at work, whom I attend Friday Jumma prayer with - had an incident in his home about a month back. Early one morning, three men entered his house and burgled it, whilst his elderly mom and dad, and wife was still in the house. They were all tied up, trampled upon, father was beaten - and thieves went away with almost all monetary goods.  It was a terrifying experience indeed - and what was more concerning - is when this colleague was recounted the story in the kitchen, another female colleague chipped in and said she also experienced being house burgled first hand, and the most awful thing that plays in your mind is "wondering if they're coming back to the house to kill you once they've done loading the car"!!!!
To most South Africans this is normal, I've yet to build that sense of normalcy -- it's hard to come to terms with the unpredictability of it all. 
I worry every day, and pray for not only my family but for everyone to be safe and not experience a spot of crime...
Even now as my security system isn't fully operational, I wake at the slightest of noises. I'm not sure if the security on call is actually patrolling the area, but was told they will be doing regular drive-throughs... this is another conscious decision on my part to return to SA, but then again - look at the recent riots in UK where three Birmingham muslims lost their lives to an irrational event...
One has to take precautions for example when purchasing cars - don't get high risk cars like BMWs, VW Golf, Audi, 4x4s...you try to rationalise this with faith, that everything is predefined in destiny - regardless of being in UK or SA, if it was meant to happen to you, it'd would happen...but still, you are responsible for your own actions, take the necessary precautions and you gotta live with hope, otherwise the more you dwell on the negative, then negative things start to happen to you (or seems to happen all around you!)

The Future
I really can't put hand-on-heart and say that moving back to SA is permanent. I can however say it was definitely the right decision at the time, taking into account the various scenarios that were playing out: family dependencies, career aspirations and start-up opportunities. As it so happens, the EU is in a bad shape at the moment, the first world economies are struggling, and people are looking at emerging markets as a safe haven for future investment. Apart from China and India, Africa especially South Africa has tremendous potential for growth, opportunity and a promising cultural evolution that I'd like to be part of....