Things happen in life that we sometimes cannot explain, but looking back, we are able to put the pieces together and make sense of everything. Such has been my journey of becoming a software developer.
The paths I followed now make sense, but they were not things I exactly planned at the beginning. But they are the steps I believe can help others who want to start on this path. I would like to share, based on my personal experience, how I believe anyone who wants to be a software developer can proceed.
Set a Goal
First and foremost is to have a clear and ambitious reason for why you want to become a software developer. This can be quite subjective, so everyone does not have to agree with your ideas, but ensure that your reasons are strong enough to keep you going.
I have seen quite a number of people who have stopped programming simply because they heard or felt that it was too hard to continue, but if you have a strong “why,” it is easier to keep pushing than to simply give up when you face an obstacle. As such, the first thing you need is a strong reason for becoming a developer.
Some reasons I have found quite discouraging are “I want to become a developer to make money” or “I want to be a developer to create apps.” Are all developers not working for this reason? Well, quite a lot of successful developers simply have all these reasons as an output of what they have done, not as their main focus.
Google did not start out thinking “Let’s make a lot of money.” No, connecting the world with the information they need and in the best way possible was the dream, and now the money and everything they have is the output of that goal.
And about creating apps, you are developing apps not only to serve as repositories on GitHub, but also to make sure you are solving a problem. It is better to have an app that solves people’s problems than an app that is simply in the store with no real value. Remember, the idea is to be a problem solver, not simply an app developer.
Take, for example, savings. People find it hard to save money, especially these days when it is easy to buy so many things at once without thinking about it. Can you develop an app that can make saving simple and fun? That allows people to save as frequently and as easily as possible? Uber connects drivers with passengers, Airbnb connects homeowners with people in need of a place to stay. You can think of something.
Do Your Research
Once you have your reason in check, I believe the next most important thing is to research the language you want to learn.
Whatever area you want to focus on, take some time to understand why the language you want to choose suits you. This stage is also important because too many times, people choose languages and keep switching once they hear about a new language that seems to solve all their problems. They switch to the language and sooner or later, they realize they want to use another language.
Also, when you speak to programming friends, you want to have a strong reason why you chose your language so someone does not easily convince you to change languages without any fundamental reason. So do your research and see what the world says about the language. Take your time on this step, as it will determine, to a large extent, your future as a programmer.
Begin Your Learning Journey
After you have your “why” and a language to back it up, the next step is to seek ways to learn that language. Sometimes, people learn so much theory that they forget to develop any practical application, and some people dwell so much on the practical aspect that they do not understand why they do what they do. So you need to strike a balance between understanding the theory and the practicals of what you are reading.
To begin to learn a language, make sure to research the best resources to learn that language, then set a project in mind you want to accomplish. This is necessary so that you do not focus solely on learning the theory without practicalizing. As you learn, you apply what you have learned on your practical project. This will ensure that you not only read, but you are also applying what you have read.
In striking a balance, you realize that you are learning more than the concepts, since you are applying them on a real project. Building a project creates a progress map for you and also helps you have better conversations when you are discussing with other developers what you are doing. If you are simply learning the concept, you cannot relate as much as if you are working on a real project where you face challenges in real time and are able to solve them better.
Create an Objectives and Key Results Framework
Moving forward, as much as you would like to accomplish this goal, some issues in life come up that make us move away from what we originally planned, and as such, it is always important to track our progress over a period of time. One of the best ways I have found to achieve this goal is by developing an objectives and key results (OKR) framework.
An OKR is where you state your “whats” and your “hows.” It enables you to clearly define what you want to achieve and over what period of time you want to achieve it, so that you can always assess if you are on track.
OKRs started at Intel, but they were made popular in the tech world by John Doerr when he introduced the concept at Google. Every quarter since then, every Googler develops their OKR and has really helped Google push the boundaries for some of their finest products. Google Chrome was one such product.
Develop Positive Personal Habits
After understanding your “why,” knowing what language to learn, and choosing a way to learn and practice what you have learned, you need to develop some personal habits that will keep you going no matter how tough the battle gets.
Sometimes, you might look at your code and see no error while your computer keeps screaming that it has found an error. During those times, you need to know that you are not alone and that support is out there. You need to have the qualities of passion, patience, and perseverance to ensure that you make it work.
And if you try and it does not work, do what I call changing perspective. When you’ve been working on something for the past few hours, do yourself a favor and switch it off. Move on to something entirely different. While working on the other things, your mind processes this problem in the background so that when you get back to solving it, it becomes a bit less difficult than it was before.
Also, never forget to have friends. Join programming communities, and attend programming events that push you forward. The journey can be won alone, but it is more interesting if you have people around to share your problems with.
But make sure you take some time to work on the problem before consulting others. One day, you might be the only one who knows how to fix it, so learn how to work without seeking too much guidance.
And finally, share what you know with the world. No matter how simple what you think you know is, it might save someone elsewhere. So take your time and teach the next person. Make a small video, write an article, organize a meeting with friends, and try any other way possible. Teach as many people as you can; it simply makes you a better learner.
Every Path Is Unique
There is not only one road to becoming a programmer and many people have taken different paths to the same destination. For me, this is the path I wish I’d learned earlier, and I hope it helps someone today.
As a software developer, your major task is speaking to the computer in the language that it understands, but it is not only about telling the computer what to do, it is also about the computer doing awesome things that bring out the best in you as the developer.
So the path should be to first have a strong “why,” then find the language that supports the “why,” and begin to develop an app that supports the way. Develop the practical and theoretical knowledge, and implement the idea.
The journey seems very far, but you can start now. The most important thing is taking the first step.
|Published on Java Code Geeks with permission by Idris Azeez, partner at our JCG program. See the original article here: My Personal Experience of Becoming a Software Developer|
Opinions expressed by Java Code Geeks contributors are their own.