Thursday, July 21, 2005

Lesson #2: Know your tools

Before you can drive a car, you have to go through a long and tedious process. This is understood, after all nobody expects you to use stick transmition at the first time. The funny thing, is that car manufactures do not try to make it easier for users. The last time I have checked, ads were talking about faster, beautifull and comfortable cars. I never even heard "our car is easy to use" ad line.
In computers the situation is different. You hear all the time "easy to use and powerful tool" or "just buy our program and all your problems will be solved". I think that we are making a mistake. By "we" I mean software developers. Complex things have inherited complexity in them. They have some complexity limit, if you try to simplify things more than that limit you will get burned.
Microsoft Word is perceived as an extremely easy to use program. Launch it and start typing like a crazy monkey. You want to make a table of contents? No problem it can do it. You want to make your section titles bold? Sure. You want to change a font of all your bold text, because they are your section titles? Oops. They need to be of the same style. Oh, you didn't use nor define one style for titles. You didn't know that you should do that. Well, tough luck. Come again next time.
My point is that even with MS Word there are a lot of things that you should know. They will make your life easier, they will save your time and make your computer time bareable. Sadly, most people are not aware of that, partially, because we, computer nerds, are trying very hard to appear them as very easy to use. Sadly we are doing very good job at it.

The interesting thing I have found out during my work in startup is that the same is true about many programmers. We use CVS as our version control tool. It took about half a year until people have become comfortable with branches. Even now, after about 3 years of intensive CVS work people are making beginners mistakes. No, I do not say that they are not smart enough to master CVS. Most of them are able to implement CVS, but they just cannot get used to it. They are too lazy to invest time into learning CVS, they prefer to save their time now by asking me what should be done. What these people do not understand, is that by not learning CVS they are wasting their time. By not knowing what you can do with the tools, you are stuck with a basic functionality. They are wasting their time on a dumb repetetive tasks. One day I saw a guy doing the same operation: he changed one particular bit of identation. Line after line, with great patience and concentration. Each operation required him to make 5 different operations. I have made him a very simple macro operation replacing 5 by 1. I have saved him few valuable minutes. By stupid macro. I saved days for people by just showing them a flag option in CVS commands. I have made impossible into possible by trivial usage of grep and regular expressions. All this does not make me smarter than the people I helped. But it does make me a more valuable developer, as I can perform more tasks in the same time.
If you value your job and career,learn your tools, they will make you into a better developer.

No comments: