Ten years ago I had many, many questions and doubts about programming. How does programming look on large projects in the real world? Is it difficult? Will I be any good at it?
Over the past few months, I’ve been monitoring talented junior developers in my company, from which I started to expect great things. This experience motivated me to write this article and share it with young talents with whom I hope to work with in the near future.
Learn, Learn, Learn
You will learn some things in college, but it will not be enough to make you very good at doing or being an expert in your field. You should continue to learn new things constantly because technology is complex and is constantly changing. For each topic you are interested in, there is at least one phenomenal book full of knowledge.
One friend once told me, “If I read 10 pages of an IT book every day, imagine how many I have read in a few years and what I’ll know all about. Of course, I could not keep this pace, but I always forced myself to read a lot. I maintain a public list of things I read, a CV and motivation to continue.
Technical blogs become the main source of information and more and more what often happens, is that people publish a book by refining the content previously published on their blog. So, take your favorite RSS reader and start building your own feed collection that will keep you in progress.
You are becoming a great developer in free time.
Formally, education is good, but not enough. Work experience is necessary, but you only apply through the real problems that you solve at your desk. It takes a lot of time and passion to get deeper into problems and get to those eureka moments. Do not expect others, from a professor or a colleague, to teach you to program.
This does not mean that you will no longer have free time. It just means that programming will be one of your hobbies and that you will calm down your non-developer friends with your technical conversations.
Learn to write a code.
As a programmer, most of your workday will be staring at the editor and writing the code. You should write the code like a professional.
Some developers think that architecture and fancy are what matters and that there is only something in between, but I would not agree with that. I’ve never seen an application with good architecture and rugged code.
Lack of time is a common excuse for writing bad code. Avoid excuses. Once you master the skill of writing pure code, it will become a natural thing for you, not a touch.
So, how do you write the code as a professional? By reading the book! I read Refactoring Martina Fauler, but I heard that Clean Code and Code Complete are also excellent. I still remember how one of the elderly faces told me that when I read Refactoring, I would become a double-better programmer than I was. I still believe he was right today.
There are also coding conventions and code analysis tools for different platforms that can be very practical. Why spend time and energy on trivial decisions when you can follow the best practices.
Is it difficult?
Well, it can be, when things are not working the right way.
You can end up with an application that is very difficult to maintain due to the complexity and lack of tests or documentation. On the other hand, when the development is done properly, programming becomes more of a fun game than a job. As you get better, you will make better applications and your work will become easier.
Sometimes, you will encounter a problem that you simply cannot solve. In that case, you will either solve it and feel like you are at the top of the world, or someone will save it for you and you will learn something from him or her.
Some people are constantly running away from heavy tasks.
My advice is to do the exact opposite – look for the hardest tasks. Difficult problems will make you firm developers and speed up your learning. Also, if you accept hard things, you will never be bored at work.
OK to be scared.
And so, you start to feel comfortable in the role of the programmer as you finish your tasks successfully. That feeling is nice.
But, then one day, a new task arrives. The new task requires new technologies, tools, and knowledge of the domain in which the product will be used, about which you do not know anything. You’re getting scared. You start to doubt that you will be able to do the task.
It is OK to be scared. The only difference between you and a more experienced colleague is that he has already been scared many times so far and probably has successfully completed such tasks and now believes in himself. Everyone can sometimes feel like a cheater.
Not all in the code.
Writing code is not everything that the developer does. Your job is to create successful software. To do this, you will have to test, write specifications, talk with customers, organize tasks, install machines, motivate and mentor colleagues … Even if you are carrying equipment and much, much more … Never underestimate the value of knowledge about the domain for which the application is made. It can be more valuable even than programming itself.