About Gallery Software Books Links Ideas and Theories Crumbs Philipsophy Sponsors Personal

Insider


This page was updated on Sat Mar 27 15:01:21 IST 2004

I program for fun and for profit. The first time i have wrote a program not for fun was when i was 15 years old. I'm 28 now and still counting. I have worked part-time and full-time in israelian, american in US and americal in Israel companies since i'm 22 years old. Meaning that i have 6 years experience in industry and 13 years experience as a hacker. On this page you will find my observation about the state of the industry and of the people. The basis of these observations is my experience and nothing more, thus, they are very subjective.


1. Does experience matter?

Every needed ad in a newspaper requires some working experience. Most of the places want 3-5 years, assuming that after 3-5 years a programmer reaches a plato of steady performance. Or maybe I am wrong and the companies assume that after 3-5 years a programmer performance is high enough while the guy continue to improve its professional skills. Revcently, i have read a scientific paper claiming that the experience matters only if the person actively improves its own performance. Meaning that just working for a number of years is not enough. Programmer writing code for more than 3 years does not necessary improve. After all, linked list is the same linked list as a few years before. Unless the programmer reads, learns and tries to improve its skills, the experience does not matter. Checked and proved. By experience. This is not exactly correct though. The person that has been working for 10 years, but has an experience of 3 years as he did not improve since then, still *thinks* that his experience is 10 years. Moreover, he will be absolutelly sure that he is smarter or at least wiser than some guy who has only half his experience and is trying to prove his design to be better. Now, the question is if experience does not matter then what does and how can it be measured. Experience is an easily measured quality: how many years have you worked, ah, then i know what is your experience. How do you know how skillful the person is? Maybe asking the candidates what have they learned during the past 2 years, what new things they experienced might be some indicator.

2. Version control

SOON

3. A lesson in trust

SOON

4. English spelling and impression we make

I'm living in a non-english native speaking country. What are the implications of this on programming and software products ? Surprisingly it can be a huge annoyance and obstacle. I will describe a couple of problems with insufficient knowledge of English. The foremost problem is that written documents in english are very hard to understand. Actually its a mix of a number of problems: lack of english knowledge, insuffisient write skills and pure, old laziness. The first one is easy: people don't know how enough english and its damn hard to explain oneself in a language you don't know well. This is understandable. The second one is pretty easy too: some people suck at writing. I know it, as i am one of these people. I have a subject to write on, i have an idea, i already know a structure of the document, i can almost "see" it... I can't write it. I can't write it the way i want it to be written. I read the result of my hard work and i feel stumbled. What a crap! This brings me to the third reason: laziness. I've noticed that people are plain lazy writing stuff. It is pretty easy to understand: the time needed to write and to read some paper is (almost) constant, meaning that if you spare some time writing people will spend more time reading. Writing takes time and practice. One should stubbornly write and rewrite documents and emails until they are easy to read and understand. Why is writer time is less important than the reader time? It is not. Moreover, there is one writer and multiple readers. If someone should invest a time, then it have to be the writer. This is one of the reasons i'm writing this lines. I want to practice and i've decided to write, write and write, untill i get to the point where its natural to me. I don't expect to become a great writer, but i want to express my thoughts in a way people can understand it.

5. Where to unify the interfaces

SOON

6. Software engineering

Software engineering sounds good. It sounds right and have a confortable feeling. Somehow you are sure that by following a few simple rules you will be able to avoid pitfalls and delays. You will be OK. The product will be on time and without any bugs. But then again, in theory there is no difference between theory and practice. In practice there is...
The problems begin when one is trying to follow the rules. Things are not the same as they are presented in a syntetic example in a book. Not all developers follow the rules exactly, sometimes there is not enough time. Sometimes you forget. The result? The project is late and full of bugs.
I have been drawn to the software engineering as a butterfly to a fire. I think that this has a very interesting connection of computers and psychology. You are dealing with people and with computers at the same time. And what people are, but a very complex computers. Anyway, I am not a manager, i am a programmer. However, i think that i have read a lot of books on software engineering and i have observed from an inside the management methods. As Fred Brooks once wrote: "there is no silver bullet". Morever, he claimed that there never will be. This is a depressing thought. I say no. I say, this is the best thing since sliced bread for programmers. This means that Paul Graham (see his articles on a web) is right. It means that programming is indeed more like an art than an engineering. This means that hard core programmers will not be replaced with script kiddies. I can return to bed now.

An addition. I have read one of the latest IEEE journals on software engineering. Basically, all the advices can be summed in a single sentence.
Hire the best men
There is no substitute to the best men you can get. Quantity will not turn into quality. One good designer will create a design that 10 bad designers will never reach. Do not hire anyone less good than the best. There is one thing to clarify though. I do not mean that the process is unimportant, I just mean that the process can not substitute the quality of programmers. Moreover, I am sure that the process is important, however, i think that its secondary to the human capabilities.
Main page