I remember a few years back, I happened to come across an advertisement of a reputed computer training academy in USA, which specialized in teaching PHP. The course cost a few thousand dollars and it promised to make you into a PHP programmer in 5 weeks. Really? I mean can someone start writing software by doing a 5 week course, assuming he/she has never done programming before?
Any programmer will tell you that it takes a minimum of one year or longer to really understand exactly what code you are writing and why. It varies from person and person and also depends on what kind of programming you are learning, of course. But it is quite impossible that a few weeks can make anyone into a software developer.
But that fact of life has not deterred either the students who learn programming or the companies who offer courses. Computer training is big business and its easy to make people believe that by taking some courses and practicing some code. There is still a big demand for software people and wherever there is demand, there is money and people want to take advantage of that.
Becoming good in any field takes a lot of time and effort – generally a few years at the very least. Programming is no different. A lot of people assume that once they have mastered a programming language and know how to create software, they are ready for the real world.
Wrong! First of all learning a programming language is not the same as learning how to program. Its like saying that learning the English grammar makes you into an English novelist. Your knowledge of nouns, verbs and adjectives, will not in any way help you in writing a book. Learning how to write a book is a skill independent of any language. A novel has a structure, a cast of characters, a plot, a beginning, a climax, an ending. Once you know how to write a book, then you can bring in your knowledge of grammar to write it. But that still does not mean that the first novel you write will be an instant hit. You have to write more novels and go on writing till your skill in polished and you understand how to look at the novel from the viewpoint of the reader.
Its the same with programming. You learn the basics of computer science and then learn programming languages to write program. And at first you will just be able to write code, as long as someone tells you what to write. Then as you become more experienced, you will be able to write more long and complex code. Further on, you will be able to come up with the solution yourself and then convert the solution into a program. Then one day, you will be able to visualize the entire solution in your head. So its a long path. To be able to move from “write the multiplication tables of any given number” to “write an xml parser” is a long, long path. But that nobody is going to tell you. You will find out the hard way – if you last that long.
In a lot of ways , its like learning how to swim. You may have learned how to swim, but you only know how good you are when you jump into the ocean without any life jacket.
The Zen story below gives a great example of this.
An old burglar taught his son the art of burglary. The burglar one evening said to his little son, whom he desired to instruct in the secret of his trade: “Would you not, my dear boy, be a great burglar like myself?” “Yes, father,” replied the promising young man.” “Come with me, then. I will teach you the art.” So saying, the man went out, followed by his son. Finding a rich mansion in a certain village, the veteran burglar made a hole in the wall that surrounded it. Through that hole they crept into the yard, and opening a window with complete ease broke into the house, where they found a huge box firmly locked up as if its contents were very valuable articles. The old man clapped his hands at the lock, which unfastened itself. Then he removed the cover and told his son to get into it and pick up treasures as fast as he could. No sooner had the boy entered the box than the father replaced the cover and locked it up. He then exclaimed at the top of his voice: “Thief! thief! thief! thief!”
Thus, having aroused everyone, he went out without taking anything. All the house was in utter confusion for a while; but finding nothing stolen, they went to bed again. The boy sat holding his breath a short while; but making up his mind to get out of his narrow prison, began to scratch the bottom of the box with his finger-nails. The servant of the house, listening to the noise, supposed it to be a mouse gnawing at the inside of the box; so he came out, lamp in hand, and unlocked it. On removing the cover, he was greatly surprised to find the boy instead of a little mouse, and gave alarm. In the meantime the boy got out of the box and went down into the yard, hotly pursued by the people. He ran as fast as possible toward the well, picked up a large stone, threw it down into it, and hid himself among the bushes. The pursuers, thinking the thief fell into the well, assembled around it, and were looking into it, while the boy crept out unnoticed through the hole and went home in safety. Thus the burglar taught his son how to rid himself of overwhelming difficulties by his own efforts.
It is the same with programming. If you are lucky you will find someone who will continuously push you, till you learn. Or you will push yourself till you learn. You are not ready for the real world, till you have not got burnt at least a few times.