Getting Started with Writing a Technical ebook





Perfection in Your Process

I have a serious character flaw. I’m a perfectionist. Nothing kills creativity like trying to get everything right the first time around. One of the most important skills I learned in professional writing: is create first, edit to perfection later. Give yourself leeway and freedom to make mistakes and to experiment.

There is a second part to the lesson though. You must treat and follow your process as closely one should practise religion. In writing, a process gives you the structure to write faster, better and with more freedom. In programming and developing applications, rigour in sticking with your process is essential for the project’s health and your sanity.

Processes like planning, documenting, testing, deploying and fixing bugs should be well worked out in the developer’s mind. Being drilled, the developer can control her environment better. In a controlled environment, there are no surprises or unexpected issues. Everything works with the precision, logic and accuracy of a Swiss watch. With a well documented and followed process, you can measure efficiency and progress.

In a controlled process, you can work out what you can expect to happen and how. Your developers can gauge how their work is progressing. Your designers can see how well the implementation follows the design. Your testers know where to spend time testing. And your business people, can figure out the cost in time, people and materials your project will take. Everyone know what is expected of them. Your team feels less stress, and works more effectively. That is why ideas like Sigma Six and best engineering practises exist. Japanese manufacturer stressed over their processes bring them to perfection. No wonder why Japanese manufacturers can corner the market.

Without a process, chaos ensues, stress builds and projects fail. So if you manage a team or a project, do your team a favour: figure out a process that works for everyone and stick to it. Your team will appreciate less stress and chaos. And your bosses will appreciate a project well done. Perfection belongs in your processes.

Task Oriented Architecture

As neotechnophiliac (a.k.a. person crazy enough to run alpha releases of software), I love to experiment with different technology. And these tests are often for the pursuit of pointless knowledge and killing time. Technology and engineering are a lifestyle for me.

Most people don’t see technology that way. Technology comes in two flavours: toys and tools. Developing a tool is a challenge of engineering. However users don’t care about tools. (How many people care about carpentry tools?) Users want tasks done. The challenge of usability design is to create task-oriented user interfaces.

Simplicity is important in UIs. The Palm OS (IMHO) designers created one of the best UIs out there. Practically everyone (except Microsoft) in the smartphone, handheld and ultraportable market copied their design. The Zen of Palm, as a primary “pamphlet” for Palm programmers, emphasizes the importance of using a simple UI for getting a particular task done. Compare that with the desktop world, with applications looking like something out of configuration and accessibility hell. The cockpit of a jetliner often looks less daunting than a desktop office suite.

Efficient and reusable workflow helps users greatly getting their work done. A UI that lets you perform a task with 3 interactions works better than one with 5. Burning a CD under Nero, requires you either to click-through 8 screens on a wizard or navigate a massively clustered UI. Under K3B it takes a drap and drop, clicking the “Burn” button, throwing in a CD and you’re done. Neither you have to crawl through a wizard ever time. Nor do you have to deal with a clustered, non-trivial UI.

Remarkably, the most usable UI I’ve worked with, originated in the software libre world. Thats because the end-users of the programs, built those programs. Also open source, allows people to “fork” software. Forking let you take a software libre application that doesn’t meet your requirements, and built something that does from the same code base. In such an environment, software components such as UIs evolve much faster than in the proprietary world.

With my own life, I prefer using open source applications because they give me more freedom, and hence work better for me. Its amazing how much simpler, streamlined and usable most free software is. And it only gets better. I like my KDE 3 applications, but the KDE 4 applications once stablized will work even better for me. Thats because usability designers such as Celeste Lyn Paul work with the KDE developers on making better task-oriented UIs. A big thank you to all the KDE 4 developers, designers and contributers.