One day I answered What is the best advice you can give to a junior programmer? question on Quora.com. I was shocked that my answer got many upvotes, so I thought to share my answer to this question on my blog.
First, let me acknowledge you that my answers are just my experience, what I missed during my career as software developer, and I wished someone told me this advice.
Be humble be foolish be patient, you have a long journey of learning, so keep learning. Technologies are changing so fast, so fast that you can't master everything, but you need to read about everything in software development, read blogs, news, etc. Invest your learning time in what you'll be master in.
Don’t be afraid to fail. Making mistakes is a part of the learning, so please don’t be afraid to make mistakes, but learn from them. Even great software developers got fired, made mistakes, and they feel down, but what makes them great that they get up and learn from mistakes.
Read about The Ten Commandments of Egoless Programming You will need these commandments during your journey, They helped me in my first job with a team and they are so nice that I want to print them as a poster and hang it on my home office.
Read other developers code. Github is your friends, so pick some projects and start to read their codes, when I tried to contribute to Django project for the first time, I was not understanding anything from the code, and you'll feel the same first time, don't worry ask someone (Check the next point) and learn to read someone else code. One day during my tech interview the interviewee told me that what you are missing it reading Python code, please go read Python source code, dig deep into it, and learn.
Ask, ask, ask, ask, and ask. Yes, like I said in point number 1 be humble, so keep asking your mates and other programmer and learn from them, and listen and evaluate after that, don't take everyone's advice with research, please don't do research to prove they are wrong, do the research to get second opinion and learn more about it.
THERE IS NO ROCKSTAR/NINJA/GURU developer it is a marketing word, and they are not true, nice programmers are making mistakes and they are not superheroes, there are some companies that advertise they need Ninja, Rockstar or Guru developer, no way they do not exist and they won't, developer are human who make mistakes, learn, and improve. In other words, it is a craftsmanship.
Read books about the career beside learning the tools/language/framework, programming is not about writing code only. Here is my list of books to read.
Write a blog. Start a blog and write what you have learned during your day, and write is as your source of knowledge. I started this one for this purpose and many times I'll return to my blog to get the information I need.
Contribute to open source software. You will learn a lot from contributing to open source project, so you will learn, helping the community, and the maintainers will be happy. Start small and learn more about the project, start with a framework/tool you are using, there are so many ways to contribute to open source projects, you can:
- Report a bug.
- Reproduce the bug, and write how to reproduce it on the ticket.
- Write a documentation.
- Translate the software or the documentation.
- Write some code to fix a bug or implement a new feature.
Enjoy the journey. You need to enjoy the journey, it won't be an easy one, and you will have some difficult times, but remember to be patient, and like what you are doing to keep going.
NOTE: This is was originally posted on my blog