I got some great questions from Joseph who wants to be a programmer. He sent me this email:

Hello David, my name is Joseph. I came across your website in search of an expert computer programmer, and I was wandering if you could help me. I am relatively young and already know that I want programming to be my life. You say you are an expert in your profile, so I wish to learn straight from experts. Could you give me a few tips about programming? What is the best field of programming to get into, what languages to learn, and being successful as a programmer.

Thank you, I hope to hear from you soon.

See my reply below.

Hello Joseph,

You may not believe it, but you’re already on the right track and way ahead of many other programmers:
  • you have a clear focus that you want to be a programmer
  • you are ready to learn what it takes to be a expert
  • you take action:
  • you ask for help from more experienced programmers
If you’re wondering what’s the best field of programming to get into and languages to learn, I don’t have exact answers for you.
As an example, I specialize in building backend applications in Java, but I know quite a few frontend developers who would hate to go to work every day and do what I do.
Just like there are successful plastic surgeons, anaesthesiologist and paediatrists, there are many different types of successful programmers, too.
You can be a successful frontend or backend developer or specialize in big data or game developement. You can also be successful in C#, Javascript, Java, Android, etc. It doesn’t matter. The only thing that matters is you have to enjoy what you do and success will follow.
Life is too short to do something that you’re not passionate about. If you don’t wake up in the morning feeling excited about programming, it’s not worth doing what you’re doing.
Look at Bill Gates, Warren Buffett, Sir Richard Branson or Elon Musk, you’ll find that all of them are passionate about what they do and would probably do the same job even if they had to work for free.
If you’re not sure what field of programming you’re most interested in, that’s ok. Most of the people start out that way.
Just start with something. Learn javascript, or C#, or Java, etc. I found the best way for me to learn new technology is to apply it in practice. Come up with a project, for example build a basic website for someone in your family or build a mobile app, etc.
Break that project down to smaller tasks and then try to figure out the next step that will take you from point A to point B. The smaller the task it is, the better, as it will keep you progressing and the more tasks you complete, the more condfidence you get in your skills with that technology.
Anytime you hit a problem, dig deeper, search for a solution on google, stackoverflow, etc.
After spending some time with a particular programming language or technology you can decide for yourself if you want to stick with it or give a try to something else. There are no bad decisions here. The worst thing to do is not doing anything.
If you stick with something long enough, you may end up as a specialist, or if you keep trying out many different technologies, you may feel you’re more like a generalist. There’s nothing wrong with any of these and you can be successful in both cases.
And last but not least, here’s a few ideas that may help you progress in your career as a programmer (they worked for me and you may want to give them a try, too):
Every day strive to learn something new
If you improve by 1% every day (1.01 ^ 365), you’ll be 37.8x better in a year’s time.
Learn from the best
Whether it’s another programmer, tester or manager at the company you work at, or authors of books on programming, or programmers who blog about what they do. Those people spent many years mastering their skills and by learning from them you can skip those trials and errors and only apply what worked for them. That will put you on a fast track
Try to figure out what they do differently than you and see how you can apply that to yourself. Read the books they wrote, subscribe to their newsletter and even better, read what they read.
Whatever you do, you might as well do it the best you can
Otherwise you may miss some important lessons to learn.
Look for patterns
Look for patterns in coding, solving problems, working with others, etc. The more patterns you can recorgnize and handle, the more complex problems you’ll be able to solve in the less amount of time
Maximize for learning
Whenever I decide to take another job, nowdays I always look for opportunities where I can learn new skills and benefit my employer/client with skills I learnt previously.
The really successful programmers spend time with programming outside their work hours. They contribute to open-source projects, do part-time freelancing, work on startup ideas, read books, answer questions on stack-overflow, write blog posts, etc. Always look for opportunities to improve your skills and get more experience.
I don’t have much details about your current situation, but I hope you found at least one useful thought in my email. 🙂
Let me know your thoughts and I’d be happy to answer any questions you may have on programming / career.