December 8, 2004
After three intensive days in China I make a summary. We have had numerous interviews both the old-fashioned way – meeting journalists – and through on-line chatting. It was truly amazing but the chat had more 2000 participants! I gave a keynote at a Rational partner seminar, and I was invited to meet several of Rational’s partners. We were very well taken care of, in particular we were taken to JiNan (a one hour flight south of Beijing) to give a seminar to a leading software house and outsourcing company. As a bonus, we got a nice guided tour in the old city now being preserved for the future.
Since my consulting company Ivar Jacobson Consulting now is setting up an office in Beijing we got a lot of attention from the Chinese software industry. We are already discussing interesting partnerships with several companies, the constraint is our time. Such partnerships will also involve Jaczone since we view WayPointer as absolutely essential to succeed with UP (or RUP) implementations.
This was a very nice trip, I am very grateful for the help we got from our old Rational friends, in particular to Steve Chen (general manager for the IBM Rational brand). We will soon be back and start growing our presence in China. China is an unbelievable opportunity for us. However to be successful we need to be smart.
- o -
Being smart is thinking for yourself and taking your knowledge and putting it into context and thereby delivering business value. It is not about slavishly following a set of rigid principles, or for that matter a rigid process. However, totally rejecting proven principles and well-defined processes and instead basing your work on nothing but whatever happens to cross your mind when you start to work is of course extremely non-smart.
Being smart is about making the right trade-offs to make sure that you get the results you are after in the most cost-efficient way. This is often not the same as what might be perceived as the quickest. For example if you are creating a suite of applications it is important to have a well designed architecture that can allow the suite of applications to grow and evolve. Building this architectural foundation will not pay off until perhaps the second or third application of the suite is built. Also, making the right trade-offs is often not the same as doing it exactly by the book. New problems and new technologies sometimes call for creative thinking. This takes an open-minded attitude and an unassuming culture. The kind of self-righteousness that sometimes is displayed by technically gifted engineers is a direct contradiction to this. Having predefined conceptions about how things should be done (like use light tools, or modelling is not helpful) is simply a very conservative mind-set that predefines the notion that tools are not helpful and will never be helpful either. Truth is that no tool can do all of the job, or even make all parts of the job easier. But then, most proven tools can offer value in some part of the process. Smart people recognize this and make a conscious decision on whether the tool should be used or not based on cost-benefit in the actual case, not based on some preconceived notion of whether such and such tools are useful or not. When I do work around the house and have a traditional screw-driver with me and have two screws to screw-out I will do with the screw-driver. If there are 100 screws to deal with, well then I go get a power screw-driver. Different problems require different solutions.
Being smart means also to understand your role in the organization you are part of, and making sure that you as best you can contribute to the aggregate value delivered by your organization. Sometimes this means that you must blow the whistle on “bad practices” or break a few “rules”. For the most part, however, it means to cooperate with your team members in an agreed upon way. In a commercial software development environment this typically means that it is smart to accept and use common terminology, commercial tools, and a defined process, even if these not necessarily are 100% aligned with your personal preferences.
As you have understood by know I believe that to be smart you must know many things and you must know how these things correlate to each other and how they work in real-life situations. So to be smart you need knowledge and experience.
Thus the question is then, can one get access to this knowledge and experience some other way than learning the hard way? I think so. A prerequisite to this is of course that you first find ways to describe and formalize such knowledge and experience. UP is just that, an attempt to capture and systemize knowledge and experience. There is however a problem with the form here. UP and RUP (for that matter) are just static texts. This sometimes makes people perceive them as “all or nothing propositions”. Even if there are tools to customize the static presentation of RUP very few have the luxury to do upfront process customization before commencing on the real project. Also, this is a very non-agile approach to process customization as the description still is static and can’t adapt. The way is of course to capture experience in the form of an active process. I.e., Active process makes it possible to access and assimilate more information allowing you to make smarter decisions. This is due to that an active process is sensitive to your defined goals, your personal preferences, and your responsibilities, and of course the context of your organization and the system under development. And, as you all know, this is just one of the advantages of an active process.
And finally, SMART people think.