The Consultants' Toolbox

 

We've established the market share of Linux system and the market requirements for support. I've hopefully also instilled some sense of necessity for providing the guidance businesses will need in the new digital economy and how we are uniquely poised as the gurus, the native guides of that shift. The question now is how to make this happen.

First and foremost, Open Source consulting is a business, and it is a service business which must adhere to the same requirements and practice standards of any service business. Professionalism and integrity, responsibility and good management are common among all service workers, but I don't need to tell you that. The sections that follow will cover some of the best-practices we share with other consulting services, and I hope you will bear with me while I repeat the obvious, but I also want to cover some of the aspects which are new in our business, and the new opportunities Open Source grants us to build a new kind of service industry.

Consulting is a People Business

Surprise, surprise. This integral point in consulting is mundane, but all-pervasive: Consulting is a people business. Your clients have needs, you have knowledge (and networking) to make this happen, but before we can put these together, we need to understand each other. To sell anyone on risking their hard earned cash to someone they have possibly never met, and probably have no prior experience, there is a lot of reassuring, a lot of shaking hands, making presentations, writing letters, emails, phone calls and visits.

Presentation

Before you buy a suit and enroll in Dale Carnegie, keep in mind that the best presentation of yourself is to present yourself as you are and not some constructed image of yourself. As we've discussed, networked markets are not stupid markets. They know about marketing and media, and they can see through the masks. They also know about internetworking, and the new market expects a different face to come out of it, a human face. A case in point was an online Careers website who caused an explosion in membership on their "resume and jobsearch" portal by changing the name from Career Central to Cruel World.

At the '99 LinuxExpo in Raleigh, I spoke to an old-school MIS person who remarked about the general flavour of Linux presentations, "Everyone says, 'have fun!' I've never been to a conference where every talk ended this way." Your clients are not accustomed to this, but make no mistake, they welcome being granted the right to be human.

The re-humanizing of business through the open source movement is apparent in our presentation materials. No one wants a Powerpoint presentation and a slick 4 colour proposal, and if you look around at the Linux expos, notice how even the staid and conservative stalwarts of big business go out of their way to dress-down. I don't think they know why, but we do: A networked market does not trust a slick presentation; it expects and demands an honest, direct and even blemished communication. It wants a conversation.

Avoid talking down to clients or speaking obtusely; they are well-informed and understand their market and their occupation. If they don't understand what you are saying it is not because you possess some secret arcane knowledge. It is because you failed to explain yourself. To say that in our language, the Client-Server model must be a peer-to-peer model. If I gave you an obtuse and clouded API for RPC, you'd call it a bad design; business communications is exactly the same.

When to say "No (thank you)"

Turning down contracts is one of the most difficult tasks for the beginner, and this is no easier in the open source support world than in any other service industry. Sometimes, you just need to walk away. Newspaper classifieds abound with help-wanted ads for hairdressers and collection agents, and software contract offers also tend to overflow with what I call "suicide missions", jobs you have no hope of completing, and for which the company needs a scape-goat.

The most sure-fire symptom of a suicide mission is a call for a system designer, for a top level architectural job, where the requirements list only constraints, typically a checklist of inappropriate technologies. Most likely, your predecessor presented an ill-conceived plan, was granted a budget, purchased a lot of disjoint toys, and then bailed. Another warning light is stock options in lieu of decent wages; they may very well be legit, but if it runs sour, you're unlikely to ever see those stock options (unless your sister is a lawyer). It's not up to you to finance a new company; we have venture capitalists for this.

As much as you may love Open Source software, as much as you may want to be among the foot soldiers of the Revolution and aid in the indoctrination of yet another corporate shop, always be mindful of your own needs. If you fail to care and fuel the engine, the car stops, and this does no one any good.

Philosophy 101: Project Planning

In preparing your presentation and your project plan, my best advice is to appeal to the original methodology guru, Aristotle. In "The Four Causes", we get an ancient philosopher outlining precisely what is contained in all the volumes of UML guides, but in a characteristically concise and elegant plan:

  • Aristotle's first cause for any action begins with the Formal Cause, the plan of what we intend to accomplish. In software engineering, this is called the "Requirements Specification" and lays out the business problem that the software is to solve. In UML, this is the suite of use-cases.

  • Once we know what we need to accomplish, the Material Cause follows showing the components we employ to effect the solution. In UML, this is our set of data structures and the data sources our program must handle as illustrated by Class and Object diagrams.

  • Given the ground we must dig, the Efficient Cause enumerates the methods by which the components interact; in software engineering, the Material and Efficient causes are generally lumped into a "Design Specification" but this is probably why there are so many bad specs that fail to put the data components first. In UML, the Efficient Cause is our interaction graphs, collaboration and state diagrams

  • The last cause to form our plan is aptly called the Final Cause and this is the blueprint for the goal of our action, the implementation specifications, the component and deployment diagrams

Together, these four Causes guide a complete picture of the project, and it is worth noting that none of them include notions of time lines although each does lead to a modular view of a project that can be sifted for milestones. You may also want to consider a fifth cause, proposed by the eccentric particle physicist Jack Scarfatti, that being the Future Cause, but that is material for another paper.

Groundschool

This isn't the web. You can't simply set yourself up as an open source consultant because you know how to turn on the computer and boot LILO to a Linux partition. You can, of course, and no centralized body is ever going to stop you, but I want to implore you not to do it if only because we have an opportunity here to do so much more than simply fix broken shell scripts.

Open Source consulting can be so much more and all it takes to get there is a bit of attention to the whole picture, to the gestalt of where what we do fits into the scheme of things. This is going to require some extra work, but copying what was done in the previous generation of consulting is not going to get us anywhere.

Clarity

A consultant's success rests as much on the art of conversation as on the art of good systems design. With Open Source, the tools and products themselves may not have the best end-user manuals, so a major part of the job will be mediating for that lack of documentation. Contrary to a popular belief, obscure coding and bad docs are not job security; they are an excellent way to squander your reputation for integrity. All we need is one client left stranded with a system of ours to become cut off that entire industry for a long, long time. Remember: Markets are networked, and they talk.

With Open Source, we can afford to talk. We can be honest and open with our time lines and project plans. A schedule based on Apache Jakarta knows and accepts that the deliverables in Jakarta are beyond the control of our PERT chart. If we're really pressed, we can run with what we have, but for the most part, there is a sense of human realism in Open Source, a sense that things happen when they happen, and not a moment before. I believe this is a healthier way to run our projects

Open Source also saves us the rigours of traditional top-down software design and encourages a more rational and organic approach; we still need good requirements and systems documents, we still need to apply foresight to our data structures and tailor our algorithms, and we can still use UML or reverse engineering to map and plan our work, but we move in smaller and more flexible "release early, release often" time-scales. Open source, by being victim to global whims of its community, carries an inherent sense of scheduling fluidity that includes adaptability as a basic requirement.

CautionRequirements vs Constraints
 

Confusing requirements with project constraints is a common error in creating project specifications; any design specified to fit its constraints will be bound to those constraints, and experience tells us our constraints almost always go away.

A corollary rule is that, with a few exceptions, true requirements are never known completely in advance. Invariably there is a list of things the program must do, but no guidance on how it is used. Fred Brooks said, "even the best planning is not so omniscient as to get it right the first time. Hence plan to throw one away; you will, anyhow." and I agree: No one knows what they really want until they see what they don't want. Avoiding wasted time on dead-ends and inappropriate methods is yet another reason to start the conversation, to "release early and release often".

Integrity

To move in a world of clients and contracts, we need integrity. Integrity is our commodity; we must strive to have only happy customers, even among those we disappoint. Again, clients are networked, and they talk.

Integrity is also essential within the Open Source community. This community is very sensitive to your stature within their ranks, and, for better or worse, there is an implicit order of reputations gained by actions. We can no longer simply pay for a college course, get our certificate, hang up a shingle and lord over our domain. Open Source requires participation, and demands it. To be effective, to stay current and be supported in your own work, you need the community. Arriving late at the party, hanging on to proprietary ways world in deference to open source, these things can lessen your stature. Many large businesses find themselves in this awkward position; today they are bending over backwards, at great expense, to undo that damage.

This does not mean we must pledge here and now to never boot Windows again (even though that is a very good idea), but it does mean that the sooner we grasp participatory open source philosophy, the sooner we can put it into practice, and the better off we'll be when we discover our entire industrial sector is now an Open Source shop. No one minds if we keep an MSCE certificate on our office wall, but your survival depends on understand its limitations.

Learning

 

When a man teaches something he does not know to somebody else who has no aptitude for it, and gives him a certificate of proficiency, the latter has completed the education of a gentleman.

 George Bernard Shaw, "Man and Superman"

We've talked people skills and reputation with the community. There is also, of course, a need to know your stuff. How do we get all these? Fortunately, in open source, the answer is easy. Those of you who came to this document to learn the secret of cramming your head full of all the magic needed to be a top notch Linux hacker-for-hire may be a little disappointed to find this secret forming such a small part of the whole paper.

Yes, there are courses, there are tutorials, books, lectures and certifications without number, but these are all extraneous, maybe even superfluous, all of them relics of an old way of doing things. You already have every thing you need: You have the source code to study, real production systems you can tinker with to your hearts content on even the most modest workstation, and you have tens of thousands of mentors. Unlike every major technology to precede Open Source, everything technical you need is given freely; half of it is right there on your Linux CD, and the other half is online 24 hours a day.

It gets better: The two most essential components for your toolkit, the people skills which arise from experience and the integrity that accrues exposure is in the very fabric of Open Source computing. I have said it many times so far and will likely repeat it again: Participate!

Open Source University

What other technology invites you to contribute even if the best you can do is to run the software and report where it fails? What other technical field abounds with volunteer projects eager to count you among the core engineering team? Even in the Linux kernel, we know we have Linus, and we have Alan Cox, but of the other "core developers", who even knows the number of them let alone being able to list their names? And this week's list will be different from next week's list.

Participation is as easy as deciding what interests you, as easy as finding some software that you need, or very nearly to what you need by, doing a search on FreshMeat or SourceForge, and jumping right in (being careful, of course, to follow protocol and make an effort to fit into the community; these are the people skills). Yes, you can pay $1500 for a 4-day crash course, or you can pay yourself that $1500 to take two weeks off to sit and dissect, and hopefully fix KVoice or Mozilla or Kernel SMP support. How could any college teach you better than first-hand experience working with top engineers on a real-world project? Linux is the world's largest post-graduate university with a full-time co-op program, and its free.

Syllabus

You will already know what technical skills you need: You do what interests you, and keep in mind that confidence comes after success, never before. The very best training is in pure play, in taking systems apart, breaking them, fixing them, breaking them again. My first true lesson in Unix system administration came the day I tried to move my /lib directory to another partition — I quickly discovered the extreme dependence of all other basic commands on those files, and also learned how to boot my machine with the install disk, mount the drive, and fix the problem.

My other favourite training ground was the break-neck speed of the development kernel; by only updating my software within hours of a new release, I encountered more hard problems than I might have in years of academic study, and while I gained the accolade of a "CVS surfer" from colleagues, I learned a broad repertoire of problems and fixes. 90% of consulting is simply recognizing the problem and executing the solution.

Intrinsic to all of this, though, was the network of kind colleagues and patient project members who did not mind 50 repeats of the same question when a kernel release upset some core system tool. Once again, the tool-box of the open source consultant does not end at their own desktop, it includes the world.

Chickens and Eggs

In Japanese, the word taiken means "knowledge gained first-hand from direct hands-on experience". We see career colleges giving tag-line lip service to how well they simulate hands-on training, but every employer knows there is no substitute for taiken, for real experience. A consultant can never have enough.

In the old way of doing things, a new graduate gets stuck with the koan of "no experience, no work; no work, no experience". Open Source has solved this problem so perfectly that no one even thinks about it anymore; top employers like IBM simply raid top open source projects for participants with the best reputation.

The beauty of this "school" is it welcomes and accommodates everyone. There are simple shell scripts to fix, there are intensely technical kernel components to extend and debug, and no one stands over you to demand that you work on any particular bit or on any schedule. If you hate debugging but thrive on cutting edge research, there is room for you. If you like the deduction/reduction game of difficult debugging, there is room for you. If you have oodles of low-level database experience, Postgres welcomes you, and if you dig the depths of high-performance computing, the Trillian Project would like to meet you. Even if you can barely code the Fibbonacci sequence, there is room for you. Best of all, we all know that peer-group discussion is a major component of any education; any distance education that fails to simulate the hallways and cafeteria as well as the classrooms and lab is doomed, and in Open Source, there is no end to discussion. There are thousands of mailing lists, newsgroups, IRC channels, online lectures, and conferences like this one. Open Source software lives and breathes life-long learning.

Those who came here to learn about learning enough to become a Linux guru can leave now. I'm done.