My life as a programmer has been amazing. When I was in class 7th, I joined DPS. At that time, I barely knew how to start up and shutdown a computer. Playing a DOS based game called DAVE was the only thing I knew about computer (except the definition of a computer, 5 places where computer is used, 4 generations of computer, definition of a device and other things that I learnt as theory in school). Then, I was gifted a PC to work on. I didnâ€™t work on it. I actually worked IN it. I just opened my cabinet and began examining the hardware. I began playing with the OS files trying to learn something new. Although I ended up mostly corrupting the system files, I didn't give up. I took up learning about computers from various books and thus began my career as a programmer. By the time I reached class 10, I began to code in C++ and then moved on to learn VB and SQL in depth. Now I am working on various software projects. My life as a programmer has taught me that dedication towards programming is much more important for developing a good program than knowledge, resources, tools etc...!!!
- Get interested in programming, and do it because it is fun. The satisfaction you get on completion of a software canâ€™t be described in words. I myself have worked on softwareâ€™s of various kinds like database management systems, web development, and desktop customisation during my school days. The thrill of programming is amazing.
- Talk to other programmers; read other programs. This is more important than any book or training course. The best kind of learning is learning by doing.
- Work on projects with other programmers. Be the best programmer on some projects; be the worst on some others. When you're the best, you get to test your abilities to lead a project, and to inspire others with your vision. When you're the worst, you learn what the masters do, and you learn what they don't like to do (because they make you do it for them).
- Be involved in understanding a program written by someone else. See what it takes to understand and fix it when the original programmers are not around. Think about how to design your programs to make it easier for those who will maintain it after you.
- Include one language that supports class abstractions (like Java or C++), one that supports functional abstraction (like Lisp or ML), one that supports syntactic abstraction (like Lisp), one that supports declarative specifications (like Prolog or C++ templates), one that supports coroutines (like Icon or Scheme), and one that supports parallelism (like Sisal) among the languages you learn.
- Remember that there is a "computer" in "computer science". Know how long it takes your computer to execute an instruction, fetch a word from memory (with and without a cache miss), read consecutive words from disk, and seek to a new location on disk. A powerful software is not much useful if it takes up lot of resources.
- Get involved in a language standardization effort. It could be the ANSI C++ committee, or it could be deciding if your local coding style will have 2 or 4 space indentation levels. Either way, you learn about what other people like in a language, how deeply they feel so and perhaps, even a little about why they feel so.