The most exciting thing about this world is its ever changing quality.
Sunday, January 04, 2009
Playing with half of the pieces
Sunday, December 07, 2008
Reactive management
Monday, November 24, 2008
All about estimate
In essence, we will not possibly know what is like in the future (if we do, there won't be one). A project is a means to explore certain unknown and provide solution consequently. Sometimes we succeeded, other times we lose miserably. To succeed in a project, there are hundreds of things must go right, out of which, the estimate. It might be too convenient to generalise the action we take when confronting with unknown as estimating. By doing so, however, we could possibly take a peek at where and how estimate comes from and what should we do about it and how should we use it to help us.
As being said, we cast our conjecture or theory on things we do not know for sure and then hope the dice would be hit, with bit of luck. Making an estimate is just as difficult as doing the work itself, if not much more. When there is a problem, based on analysis of the problem itself, past experience, consultancy advice, we offer our best guess. One thing people do realise and start to put more and more focus on is the approach with which the estimate is made, i.e. with the same information, how do we estimate something is probably going to happen - probability of the estimate or simply saying, treating estimate as a function of multiple random variables. Scientifically, techniques such as three-point estimate not only give us the range of estimate but also provide the confidence level associated. Although there is a fundamental flaw in such method is the assumption of independence of variables normally doesn't apply. Anyway, the estimation approach is not what I am going to talk about here, although I have already used half of the space...
Can we estimate? If positive, why do we need? If we do need, how do we use it? If we do know how to use it, how much confidence we have with it? What happen if it goes miles wrong? Do we need to update it with newest information? What does it mean by hitting the budget and endless of delay? (This question ladder should really start from another "do we need an estimate?" but as we all know that normally being answered straightaway as positive.)
Yes, I think we can and have to estimate, otherwise walking in a mist is not going to help anyone, especially those who hold they hands and await for the return of their money. Everything kicks off and depends on the esitmate, believe it or not, no matter engineering or manufacturing, purchasing or selling.
We need estimate to plan for the unknown, what should happen is that most of our plans should go from paper to bin very quickly. We need estimate to decide actions. We use estimate to de-/convince people and persuade resource and investment of interests to the good side of our belief.
The confidence level of an estimate depends on the source of the estimate as much as the approach we took to achieve it. Estimate should never be A number. You have already put everything you have on the edge and tipping your toe into a gambling game if you do. Confidence of an estimate is more important than the estimate itself, as suggested by Entropy theory. In the unfortunate but most likely situation, things didn't go as planned, (which is one of the main reasons estimate is defeated, assuming people know how to estimate.) the last thing we need is being pessimistic and throw the baby away with the bath water. Looking at whether it does fall in the possibility range you had and what is the thing really happened and triggered the domino. To find the root cause of effects would be most likely helping us get back to the game - by updating the estimate and re-do the homework, when I say homework, I mean it, on daily basis. It is also not extreme that some cases this happens on hourly basis.
Hitting the budget is always a nice thing to have. In common sense, hitting a budget mostly means management is doing a good job in planning and managing. To me, hitting a budget doesn't means you get on the train at the last minute just before the conductor closes the door. The reason why I say it is that hitting budget itself is actually funcationally irrelevant. A project is about capability and experience (in financial terms) dealing with unexpected events. A budget is made trying to measure the degree of unexpected events. It has fundamental means to play with while in nature random. Sometime if hitting budget as a target overrules logic thinking and long term view in decision making pivot, it will pay for itself in an ironical way. If you hear people complaining about the endless delay of a project compared against its original estimate, be careful, firstly you should probably ask is how the estimate gets made and when it was the last time we update the estimate. Finally, my killing question - Is there any change of scope to what we have been estimating against?
Thursday, November 20, 2008
Requirement and knock out feature
In a product development cycle, everything starts from requirement. The first misconception stands out from here - things start from somewhere, so we must know where it is. We make a lot of assumptions about what we know, what people want, what we donot know, what people donot want. Yes, unfortunately, most of us start from 'we'. I think it is inevitable. This is how our brain works - when it comes across new problems, new stimuli, it first of all is to search the potential resonance. During this stage, learning and extraction following by inference happens. Any requirement analysis approaches fail to respect this are likely to be doomed.
Traditional practitioners believed this planet is the centre of the universe. On that thread, they had this fantasy either the designers are fully aware of what is required from their past lives or they are just genius, just know it. After many pioneers hit their heads on the wall, with only handful of them hit the dice, we finally decide to collect and analyse requirements. Now is the era of believers. People have this naïve belief in customers, or who would buy the thing we are gonna build. Tons of man hours, lots of support to airline economy didn't seem to pay off - this gap between what customers are satisfied at and what has been delivered is like a haunting ghost, never go away. Most of the products have to have sufficient investment to sustain till we 'finally' hit somewhere in between, or better than competition, or customers do not really have much choice. Surely there are still many very successful products coming out from the bottom of these waterfalls. Many products of this kind took long time with concentrated resource and reasonably static market environment.
Steadily, we started to realise that customer is NOT our mentor, he doesn't know what we assumed he does, hoping by doing that our development lives would be easier. As matter of fact, customer doesn't have clear view of what he is asking for, only knowing there is something alike to meet his needs. Even further, sometime customer doesn't know what he really needs. As I have explained in previous blog, he thought he wants XYZ, in fact all he wants is to achieve ABC, and he think by XYZ he could make it happen. As product development go along, the requirement creeps. This is natural since the better visibility of the product, people who look at it would have more information to feed their brain and that would either trigger a verification process, or a inventive process will be triggered to re-shape and enrich original fluffy fuzzy needs. With all these cruel realities being exposed on the floor, alongside the acceleration of market changing speed, we have to look for alternatives.
One thing also worth mentioning is, no matter what, there is always a conceptual understanding that product is delayed, in fact, what is important is managing the expectation. By the way, with second law of thermodynamics, you can not win; you can not break even; you can never get out of the game.
I don't know exactly what to do, but these are what I believe should be happening within a success,
» Customer is God. This is a correct statement only within appropriate context. Product development team should lead customer to find out about their real needs. Hence customer is not just paying for the end product, but also the learning process and experience. This would make sense for our accountants whose only interest seems to be costs and benefits (to be fair, we all do).
» There is no way anyone can envisage hence plan all out in advance. Even there is a small fraction of possibility, that would also decreased in a significantly non-linear manner to the degree of complexity and speed of change.
» What we can do is be honest with ourselves and plan out what our eyes can see in front of us. In the same time, knowing how to use the back of envelope estimate as a guidance rather than a full time project manager's job to cook a good-looking chart.
» Commitment is a serious business. Without a feeling of fixture doesn't mean no commitment needs to be made. Be aware that every step you make in product development, every deliverable coming out from the circular pipe would have directional effects on what is going to happen in the next ones.
» Break the cost, time, quality triangle. Define the affordable time and cost then see what we can deliver.
Knock out features are those hit the invention button, not only because they have been implemented by genius who is capable of peeking the wonderful requirement myth above, but also the designer is consciously delivering altruism - probing the user's curiosity, allowing them to explore more with this product rather than less. The reason that I say this is I believe every product, every new gadget in a way limited your option, you view of the world while it offers you certain ability from the vehicle. When we say a product is intuitive, what we are really saying is the product doesn't limit the way we look,feel and deal with things by what it offers. Just like dad used to say, "you can go ski, as long as you put on those clumsy clothes" or "you can use a blackberry, as long as you can live with tiny keyboard hurt your hands".
Tuesday, November 18, 2008
Handson or handsoff
PMI tells us, 90% of project management is about communication. What PMI or most of the management books did not tell us is, both management and engineering are certain types of data processing. Engineers process data via either physical transformation (mechanical gear transmission design, servo control, encoder sensor feedback analysis), electronic signal process (signal generation, data sampling, signal analysis and feature extraction, spectrum analysis and estimation) or logic interpretation (logic circuit design, time-based state machine, bus-based data propagation and transmission, protocol interfacing, optimisation algorithm, pattern extraction and construction, data re-organisation, logic mapping and pattern classification).
What managers do? Not being funny, unfortunately, this question gets asked often by engineers! Many managers choose to hide behind of their roles to 'follow the process, do the job' rather than really thinking about what should be the management responsibility, focus, and what gets things done.
In my opinion, management is also about processing data - processing data collected from 'sensors', data analysis from systems (could be bad data, or even to extract useful information from noisy data samples), data feature extraction and inference, data propagation and transmission, protocol interfacing, pattern recognition and estimation, most importantly data generation. I will break these down:
- Data collection - Managers are responsible to put the right and sufficient information together, either product issues, engineering design constraints, requirement specification, cost etc. The method to collect the data has to be scientific. Unsound approach will invalidate the data you sampled, pretty much the same way Jury will look at your case.
- Data analysis - Managers are also responsible to analyse the data collected. To know what we are looking for, and what we can look for, what pre-processing is needed before data really makes sense to us, do NOT jump to conclusion before data is actually understandable. Gut feeling is irrelevant.
- Feature extraction and inference - Now managers with cozy office will need to do some homework. To extract the features embedded in pre-processed data is not an easy job. You have to be sharp enough to not be buried by trillions of bytes flushing in front of your eyes every milli-second (slightly exaggeration here...).
- Pattern recognition and estimation - To recognise patterns certainly needs experience, although in lots of movies directors trying to convince us it is all about gift.
- Data propagation and transmission - Interestingly, this part is what most manager do well, exceptionally well, to the point in many organisations, there are many managers they believe, or at least it appears to be, that the sole purpose to have management role is to be an information passenger. In fact, to make sure the data is propagated to the right receiver and that only needs a lot of skills. You can't use broadcast everytime without getting in danger of damaging enviroment; multicasting needs policy support; unicast incur transmission overhead.
- Protocol interfacing - Almost every product, to be a piece of usable item in real world, it has to interface with other parties, like it or not. Data transmission, or in a more explicit term - communication, must follow certain protocol to be able to achieve efficiency, security, stability and robustness, extendibility and integratability (oops, sorry, too many abilities...).
- Data generation - Most importantly, as much as a general rule, to produce data, is what really matters. Without this, there is no need for processing, and bluntly, no need for management. Management is about decision, is about getting through all the steps and being able to, and willing to, make the decision about whatever it is about.
Without too much efforts (actually, a bit, admittedly), I am convinced that whether you are doing engineering work or management work, you are processing the data either way. The point is the real difference in handson and handsoff is not what work you do, is about how you do it. Handson is about you get into the details about what you do, being realistic and objective about the true identity of the data, do not randomly or arbitrately interpret the data samples, being scientific about the embedded patterns and using which to make prediction or logic inference. Being handson is about choosing right methods and attitude to process the data, to confront with real world issues without unsound assumptions, being honest about situation and problems, and a little bit of faith in problem solving (this is in fact belief in finding resonance with the underneath patterns embedded in the universe, I am a great believer that we donot create patterns, we find and learn them).
Although in reality, handsoff engineering might sound a pretty crapy idea and one would get caught easily if he keeps his handsoff while he was supposed to deliver 5000 lines of code a week - let's just say being a manager, keeping handsoff will be less vulnerable in the short term compared with engineering work. However, to an organisation, handsoff management will have much more detrimental long term effects.