Friday, 25 July 2014

Core competencies/behaviours for System Integration Engineers & Release Managers

I have written in the past on system integration topics, you can click on "Integration" in the tag cloud... 

It is interesting how some of the topics keep recurring throughout ones working life, recently, I've had to observe, deal, control and to an extent mediate on issues that shouldn't really have happened - this is in the area of Software Integration & Release Management, which in short, is not an easy role to take on in any project, let alone one with a hard delivery expectation with the whole world watching...people become stressed, nervous, emotional with knee-jerk reactions, etc, etc.

A major emphasis of Release Management & Software Integration/Delivery is on managing stakeholder expectations, above and below. To do this one expects a certain level of core competencies, which I believe is around these core topics:
  • Great judgement when it comes to soft, people skills (be weary of pissing people off, triggering emotive responses & causing undue panic)
  • Clear, unambiguous communications: knowing what to communicate & when (filter out reports, allow time for things to settle)
  • Measured, personally self-motivated & control (it isn't easy being under fire all the time)
I've sketched a picture of what this world looks like, it shows just the world of set-top-box integration, it gets more intense as you go through to the worlds of end-to-end integration, where there's multiple systems involved (not just the STB), multiple customers, and way more front-line fire you have to deal with:
The picture should say it all:
  • Release Managers are on the front line when it comes to committing to a project delivery timeline. They front many customers, including some senior stakeholders. Release Managers work closely with System Integration (SI), in fact, should rely heavily on the output from SI
  • System Integration not only front hard timeline commitments from the Release Managers, but also, have a direct line-of-sight to stakeholders. To be in SI, you need to have competencies not only on technical toolset, but a fair amount of personal qualities, including very clear communications style, to front queries from stakeholders.
  • The Development vendors are usually shielded from a lot of the fire that SI face, although these vendors must deliver quickly and resolve the burning issues in a timely manner. Some projects allow for direct access to development teams by stakeholders, however, it is not always the best strategy. SI is usually the protector and conduit, often buffering the development teams. Release Managers still manage vendor planning though.
What do I expect, as a minimum, behaviours of a System Integration Engineer??
  • DRIVEN - I think this sums it all!
  • Self starter, ramps up in no more than two weeks delivering value
  • Grit, rigour & diligent, hardcore problem-solver
  • Not easily demotivated, although big enough to seek help when truly stuck
  • "To be Blocked is to admit defeat!" kind-of-attitude
  • Go the extra mile to solve problem
  • Be able to take a high level problem and run with it, even if the problem is unconstrained & unbounded
  • Passionate about problem solving and debugging
  • Clear communicator at all levels
  • Works well under pressure & stress
  • Comfortable with client-facing interactions
  • Doesn't take "if it ain't broken, don't fix it" too literally. Expect tools, scripts to be created to add value, instead of accepting status quo
  • Must grasp source code / software design patterns quickly, even if it has to be done through a process of re-engineering
  • Does not have to be told twice what to do
  • Dependable, ability to work with multiple tasks concurrently often with competing priorities
  • Ability to work with third parties, including managing & directing external parties
  • Does not depend on too much guidance from team lead or project manager
  • Thick skinned to pick up on nuances of politics and management dynamics 
  • Does not panic, is in control of emotions, tackles problems in a clear, calm manner
  • Fully committed to delivery expectations of project, striving to keep customers happy
What do I expect, as a minimum, from a Release Manager??
  • All of the above traits from SI plus:
    • SENSIBLE sums it up!
    • Level headed.
    • Keen eye for detail, but not to the extent of micromanaging teams
    • Must understand the boundaries, limits of influence (sphere of influence)
    • Communications must be unambiguous - do not invite panic!
    • Must be able to sit in hot seat with calm composure
    • Must intervene tactfully & gracefully in conflict scenarios within the team but also more importantly with third parties / vendors
    • Must be familiar with people management - take time to get to know people on the team
    • Very good listening - be sure to understand what technical people are reporting / expressing, filtering out noise
    • Not to escalate unnecessarily
    • Be prepared to say "I am not sure, but will find out"
    • Be prepared to protect the teams - avoid dictating, be cognisant that people have personal lives, and may have baggage to deal with
    • Seek out guidance when not sure, speak to peers & colleagues who may have experience to help you along the journey
    • Must be capable of realistic strategic planning, but not in isolation of the team
    • Should have a led a team of skilled engineers of 5-12-20 people in the past with at least 3-5 years experience as a team leader
    • Should have been involved with development / integration with a realistically accepted time frame (at least 3 years)
    • Should have software domain knowledge in terms of best practices, even if its from other similar software systems
    • Must be able to lead and manage all types of people
    • Must be able to plan using past experiences & learnings
    • Must use knowledge & experience of own proven practices & processes to up skill team if processes are lacking or immature

KPIs/Metrics for Set Top Box Application Development teams

I have learnt some interesting insights into the life of consulting, especially around change management, organisational transformation, leading, influencing and inspiring mindset shifts. One of the challenges is meeting a team that is on a level of maturity that is screaming out for intervention, and having that self-control to contain myself from blurting "I told you guys this three years ago! And only now you're seeing the light! You need to listen more!".
As a coach, one has to be patient, and live the journey with the team, this is okay, I accept that. And yes, it is quite rewarding to see the team come off age, mature and eventually implement, performing, if not outperforming, your own expectations.
However, it is somewhat a little more challenging to have hard delivery timeline pressures thrust upon you, knowing that a team isn't prepared yet (not at the right maturity level, will need micro managing and lots of admin/management overhead), or have the building blocks in place to not only deliver, but to continue on, post-launch with a sustainable way of working...
So the journey has to be lived and walked through with the teams, even though you as an expert know the destination already, even if it maybe 3-5 years to get there...

The story has been repeated in my lifetime a few times already: New product, one customer, hackathon to deliver, deliver, then the struggle of maintenance & support, and the rush to support new products & customers...
We start with a fairly young application development team, responsible for Java development of a Set Top Box EPG / User Interface. We try out this new thing called Scrum and aim to operate using the Scrum/Agile framework, we lack the supporting engineering tools & processes to manage quality (no real time to focus on CI, automated unit tests, etc) - we deliver against the odds to make an impossible launch happen. We hoped we'd have time to settle, fix the mistakes and improve working processes in time for the next release, but the work continues to pile on. Not only do we have to deliver subsequent releases, but now have to support other products as well, with the same sized team. Management want to hear none of "Refactor, Rework, Technical Debt" - on top of that, management decide to implement Key Performance Indicators (KPIs) as a way of measuring productivity...

This story isn't new, I've seen this repeated a few times especially with STB product development. You start with what looks like an elegant design, over promise the capabilities, a real demanding customer comes along with an insane delivery target, the elegant design gets infected with hacks, the hacks turns into product, the product launches, customer is happy, expectations are now set in stone. The app is reused for other products, the customers increase. The team size remains the same. We are asked to deliver more with the same "resources" and deliver with improved quality. We will be measured by the quality of our component delivery. This, whilst all the time, running parallel streams often with simultaneous or overlapping component releases for one or more hardware products (Zappers, PVRs, etc.) - Sound familiar?? Probably not as unique to set top box software development right??

What do you as a development manager do? You just embarked on the road to Agile/Scrum. You have a massive backlog of technical debt. Your team isn't performing at the level or maturity it should. Management is pressing on some metrics from you that you must use to justify progress towards increased productivity...

Sunday, 20 July 2014

Apply MVP to any project in life or work

Courtesy of Henrik Kniberg, brilliant illustration
When it comes to product development, or any other project, nothing shows it better than this picture:

In the case of set top box products, we usually start with basic STB, aspiring to the advanced:
- Always satisfy "watch TV"
- Single tuner SD zapper
- 1+ tuner video recorder
- n+ tuners PVR
- HD user interface
- + animation
- + 3D OpenGL ES graphics
- + connectivity: USB, Ethernet
- + video on demand
- + home network streaming
- + remote management & diagnostics
- + recommendations engines

The above list is your stock standard product roadmap. To get there we always  release the basic minimum viable product, interestingly the constant expectation throughout each iteration must preserve "can I watch TV??"!