Some advice for a beginner programmer
One of the most hard working and sincere developer I ever worked with, recently came back to ask for some advice to resolve his career dilema.
He said, he was only getting to work on bug fixes and minor enhancements at his current job. His manager has offered to move him to a different project, which is the core of their company’s business, but he knew the kind of work available there was similar. His current project was in Ruby on Rails where as the legacy core app was in C++. His asked if he should switch over to C++ or remain a Ruby developer. Also, he noticed that all large and complex projects at his company were done in Java. So, should he switch over to Java instead? Also, whether he should remain in his current company or look out.
From my own experience managing and mentoring developers, I know this is a common question. We had several email exchanges, which gradually became generic career advice that I have given to lots of people. Here’s what I said:
- Don’t aim to become a RoR developer or a C++ developer or a Java developer. The industry labels people by the language they know. But, you should aim to rise above that. You should aim to become a good programmer instead – be known for your system architecting, problem solving and coding skills. Language is a tool and you should know 2-3 languages very well. But, then you should be able to learn any language required.
- Have a side project or two. A good way to become a better programmer is to do more of it. Office work is of course exposing you to a particular language and domain. But, you should keep learning on your own, in your free time. Read books, magazines and blogs. Side projects are a good way to learn more languages, algorithms, data structures, databases and try out new technologies & methodologies.
- View your job as a learning opportunity. Depending on your company and team, you can learn how a small organization works or how a large organization gets work done. Watch and learn how a big project is maintained or what methodologies are followed for a large multi-year project. You will not get to learn these from books or working on personal projects. So, learn these by observing at your job.
- Don’t job hop unless there are no other options – you should have a maximum of 3 companies, preferably less, on your resume after working for 5-6 years.
- Aim long term. In 5 years time, you should be able to write your resume which has 2-3 languages that you know very well and 2-3 domains that you have been exposed to. In that time, aim to build lots of software from scratch and also work with legacy systems. Its very good to have diversity rather than get branded by any one language or domain.
Also, I wrote something long back about working on legacy projects which might be useful.