Several years ago, a school-boy was given the task of making identity cards for an exhibition crew. He was refused the position of the crew itself. He might have felt bad about it. Instead, in all sincerity he put in effort to get the cards together. Unfortunately, the teacher remarked, “are you an unskilled laborer?”. They were put together really badly. The task had to be redone.
Now, the same school-boy feels very very unskilled. This even after having a college degree and a masters in C.S.
Any developer must come out of school. There is some basic talent that must be honed :P. I don’t think its best for the Dev. to be on a project which is measured by the number of lines of code that he can pump out. Neither must the Dev. hope that some ‘Master Programmer’ who has discovered and crossed various levels of acheivement can help him to get started. Things don’t really work that way in a results driven world.
Think about the code thats being written. What are the assumptions that are being made when solving the problem? What are the specifications for the program? Chart your algorithm! What are the best data structures? What are the possible tradeoffs? Will your algorithm meet the specifications? What are the pitfalls that you must watch out for? Are there any special cases? Is your design modular and extensible? Then think about the writing the code 🙂 A propeller head coder will probably dive in write the code iteratively, hmm this line needs to be fixed, hack hack hack. Hmm it needs to be tweaked to satisfy this part hack hack hack…
Smart people know better. Logical paths first technical details later. Thats your skill, your a problem solver. Time, patience and discipline I guess is the only solution.