10 Tips for fledgling developers
Continues Study
Never think that you have acquired all or most of the knowledge existing in the world. Almost everybody in India at age of 24 starts thinking that he has acquired all the wisdom and knowledge that he needs. This should be strictly avoided. Continue study after education. Study should be habituated exactly in the same way as you are brushing teeth and taking bath every morning. A regular study, everyday, is extremely essential. Study not only computer science but also other subject in which you are interested. It does not matter whether you study for 10 minutes or 1 hour, but consistency is a must. You should always study basics and fundamentals. There is no point in going for advance topics, you can always go back and re-read or re-iterate over the fundamental concepts. There are plenty of things in computer science that you can study (like operating system, compiler, languages, networking, databases, algorithms, architecture, etc..)
For computer science, I suggest to read following books
- Structure and Interpretation of Computer Programs by Albenson and Sussman.
- Introduction to Computer Architecture by Hennessy and Patterson.
- Fundamentals of Programming by Donald Knuth
- Introduction to Algorithms by Cormen, Leiserson and Rivest
Learn Professional Ethics
As computer science professional, you are morally obliged to do a good job. What this means is that you are supposed to do your job not for your manager or company or client but for yourself.
“Doing duties of your life” — Bhagwat Geeta
The direct implication of this is: never ever write a bad code. You don’t need to be the fastest and run after deadline rather you need to write quality code. Never write junk code. Rewrite it till you are satisfied with the quality. Remember that you are writing code not only for compiler but for humans also, your code must be easy to unstandable by other developers. Writing good code is an art and aesthetic beauty build in it. You should feel uneasy at writing bad code. To judge quality of code, you should compare with good and popular open source library written in the same language.
Read a lot of code
Read a lot of quality code written by excellent programmers. Not just good programmers, like the best guy in your circle, but those who have delivered on international scale. It’s very easy because you have access to the huge amount of open source codebase today. You can either refer github or code.google.com, this is easy and helpful for you. When I was learning Java, I read code from the Tomcat project and JDK source code. I’ve read lots of good code ever since and I still refer to it. Read the code. Look at the comments, see what the authors are doing, and how they went about it.
Learn your tools thoroughly
I think the loss of programming time is not in debugging or rewriting code, but in the innumerable seconds lost here and there by developers who don’t really know their tools. I am referring to: the IDE, the language, the build system, the SVN, etc.. the IDE and the language are by far the most important. Remember maximum shortcut keys of IDE, memorize most useful methods and classes of language. for the language I suggest to read API documents. Keep the API documentation handy while developing. Sometimes, it may happen that functionality which you are trying to develop is readily available in API or there should be some class which will help in saving your efforts to a great extent.
Academic is not like the real world
Your percentage largely doesn’t matter. What matters is your practical experience you earn by solving real world problems. To the extent that it does matter to meet minimum criteria for interview process. It only determines whether your resume gets selected for job interviews. Academic is just startup, subject that you learn in college is just an introduction for language or concept, there are lot in depth things and concept you need to study for real world development. There are only three things which will help you to crack the interview — Knowledge, Knowledge and Knowledge.
Don’t focus on job security
It’s normal human behavior, everyone wants stable and secure job in large company but The thing is though, those large companies usually aren’t a very satisfying place to work. Things take a long time to get done, and the bureaucracy alone is enough to drain you mentally after a few years. our skills are outdated faster if you don’t upgrade your self with new tools and technologies. Usually large companies don’t allow that freedom to you. At that point, you’re pretty much stuck at a crappy job. If you want long-term job security, the best way to achieve that is to just make sure that you’re very good at what you do, and that you love doing it. If you have knowledge and experience, you will find job in market even if market is not booming. Make sure that you enjoy your job, If not then don’t be afraid to leave.
Build your portfolio
Your portfolio means your public presence, create account in stackoverflow and help other people, create your blog and share your knowledge and experience. create account in github and make your side project / library open source. Attend meet-up, conference or technical event in your city or nearby. Take part in technical discussion. Read technical blogs written by others and write your thought in comment section.
Working with Humans
The unexpected part is that it’s the human aspect (mostly not the technical ones) that trump everything — unless it’s a one person project for yourself :-). You need to communicate with your team members and work within their personalities, strengths, and weaknesses. And, human craziness can destroy even the most technically brilliant project. Making non-technical people understand technical insights has been a bit difficult in my experience.
Figure out your Goals
Always aspire doing bigger things in life. Viewing promotion path as your career goal is completely wrong concept. If you are really interested to study and learn new things. Never aspire of being manager but aspire of being excellent programmer / developer. Normally in Indian software company you will be promoted as some kind of managerial role after 6 or 7 years of experience. You might feel that you want to do certain things which you cannot do till you become a manager. When you become a manager, you will soon realize that now you just cannot do anything that you thought of. The three biggest mistakes that people usually make are aiming for money, aiming for promotion and aiming for fame. The moment you get some of these, you aspire for some more and then there is no end. I do not mean that you should not earn money, but you should understand how much money would satisfy your needs. Bill Clinton might be the richest person in the world; he is certainly not the happiest.
Follow your culture
I have seen the tradition that whatever junk is created in US, it rapidly spreads up in India and specially in our industry. This cultural change creates a very strong impact on everybody’s life. To act and behave like pseudo US/UK/etc. citizen is stupid thing, but believe me, there is nothing great in that. This all just makes you run away from your culture. And there is no wisdom in running away from your culture. Indian culture, which has great Vedas and stories like Mahabharata and Bhagwatgeeta is really great. You should understand that fundamental things in Indian culture teach you a lot and you should never forget them.
Finally, I would like to conclude by saying that it’s your life…don’t waste it on stupid things…develop your tests, and start the fight.