The absolute most asked question I receive from readers and subscribers is how can they become a software developer or engineer. I feel this is not an unreasonable question and I applaud anyone who has the ambition and desire to jump into a professional role as a developer outside of just being a coder.
I usually try to understand where the individual is with his or her training and understanding of development before providing recommendations but in this article, I would rather discuss not just how to become a developer, but how to become a successful developer, so this article should comprehensively provide anyone with the direction needed to become a professional developer.
This article will go through the possible roadmaps of how to become a professional software developer/engineer and then discuss what to do after becoming a professional developer to make yourself successful. This article is for anyone who knows he or she absolutely wants to become a software developer.
If you are not sure if you want to be a developer, I would recommend reading Do I Have What I Takes To Be A Computer Programmer. The question of how to become a professional developer is probably the most common question I am asked by readers and subscribers, so this article should comprehensively provide anyone with the direction needed to become a professional developer.
This article will start with what I define as successful in the context of a professional developer because the term successful is such a subjective term and may mean something completely different to you. After clarifying what I define as successful, I’ll go through a roadmap with multiple paths starting with education, then to transitioning to a professional development career, then growth as a professional developer, and last establish yourself as a successful developer.
I want to be clear that there are a few caveats to these roadmaps. The first caveat is that these recommendations and roadmaps are based on my experiences of working as a software developer in the United States. I have worked for companies that are based outside of the United States, but I am not familiar with the requirements for professional software developers outside of the United States.
My second caveat is that this will not cover every possible path that someone can take to being a successful professional developer. For example, this roadmap will not cover the scenario where someone’s relative or friend owns a software development firm and directly hires and/or trains the individual for the position, but the roadmap should cover the vast majority of individuals looking to become successful professional software developers.
I would also like to add a disclaimer that this roadmap will not guarantee a specific job or title. Each software development firm is different and there is no way to anticipate how each firm hires every employee. All recommendations are based on personal experiences from a professional developer meant to help others to decide how to best become a successful professional software developer.
With all of that housekeeping out of the way, if you have questions or concerns about your specific situation in determining your best path to becoming a successful professional developer, please feel free to comment at the bottom of this article or contact me and I guarantee I will reply.
Please feel free to download and share the infographic below for a high-level roadmap of how to be a successful developer.
My Definition Of Successful
The word, successful, is so subjective that it bears a need for clarification on its definition. When hearing the word, successful, some people think of success as a developer in the context of finances while others view it in terms of being completely proficient in a particular coding language.
While I would never say these or other interpretations are wrong, my definition of being successful as a developer is the ability to use the known programming knowledge to understand and master almost any unknown programming skills/concepts while being able to mentor and advise other on the programming skills/concepts. The reason why I don’t view success as a financial or popularity goal is that these are relative to a specific perception and not necessarily stable.
Things such as pay rate, notability for work in a field, and language proficiency will ultimately change over time. What remains stable is a deeper understanding of programming principles and constructs that help someone to become successful in almost any programming capacity. You can think of it this way: there are a lot of people who speak and understand English, but when it comes to learning a new language, someone who has a deep understanding of linguistics will have an easier time learning the new language than someone who simply understands English.
The Roadmap To Successful Development
Now that you know what type of success this article is striving towards, it’s time to navigate through the roadmap to determine the best ways to become a successful software developer.
When considering a career in software development, it’s important to understand the magnitude of considering available education mediums to learn how to code. I feel that software developers are so fortunate that there are so many different options for software developers to learn how to code, that each type of education medium deserves an equal and fair comparison.
Giving It The ‘Ol College Try
Certainly, one of the most traditional education routes is going for the college degree. Most people who are looking to pursue a career in software development will major in fields such as computer science, computer engineering, or software engineering. Based on StackOverflow’s 2018 survey, 64.4% of professional developers have degrees in these fields.
There are successful software developers who have degrees in other fields, but many employers prefer degrees in these fields because the coursework of these degrees generally provide the base concepts and principles needed to be a successful developer. According to StackOverflow’s 2018 survey, 70.9% of professional developers have either a bachelor’s or a master’s degree.
There is a lot of dissent among those striving to become developers about whether a college degree really provides value for coders when there are other options that focus purely on development practices and syntax without all of the other non-programming courses taken in a traditional computer science bachelor’s degree such as networking, calculus, etc.
Most employers look for the bachelor’s degree in these fields because of this well-rounded curriculum. Every project may not require everything learned during the coursework of a bachelor’s degree, but I can say from experience that over time, there will be some projects and requirements that will require you to have a deeper understanding of how systems work.
A bachelor’s degree in any of the fields mentioned above usually take anywhere between four and six years to obtain and can range on average from $40,000 to $200,000 depending upon whether you are attending a public or private school and whether you are attending in-state or out-of-state. I am still a firm believer that investing in a bachelor’s degree is a solid investment, especially when it is so often a prerequisite for such a lucrative career.
If you’re asking, but what about an associate’s degree? Can I save money by just getting an associate’s degree instead of a bachelor’s degree? Well, I believe any education is better than no education but based on the results of StackOverflow’s 2018 survey, only 3.1% of professional developers have an associate’s degree. Below are some schools that provide excellent computer science degrees.
Why Not Try Camping?
I completely understand that college is not for everyone. There are plenty of boundaries when it comes to a college education including financial, time and other boundaries. One alternative to the traditional college route is a coding boot camp. Coding boot camps usually take about six months to a year to complete.
The focus in coding boot camps is to help students who have little to no knowledge about coding learn real-world coding practices and syntax. The average cost of a coding boot camp is around $11,000. According to the results of StackOverflow’s 2018 survey, only 10.5% of professional developers are coding boot camp graduates.
Coding boot camps are intriguing because they are so much cheaper than college and only 8.7% of graduates do not find a job as a developer after graduating. Many boot camps are popping up and promising jobs after graduation because so many employers are accepting coding boot camp graduates. Most boot camp graduates will start their career with lower incomes than those with college degrees, but as I mentioned before, I feel there is more to being successful than just making money. Below are some great coding boot camps with amazing programs.
Become A Self-Learner
One of the most common ways people start coding is by doing it themselves. I’ve met A LOT of coders who consider themselves “self-taught”. However, I do feel this is a misnomer since almost everyone learns from someone else whether through watching videos of others coding or reading tutorials that others have written. There may be some people who actually sat down at a computer, found an IDE and figured out how to code without reading or viewing any tutorials, but I have not met anyone who learned that way.
Being able to take the initiative to read or view tutorials and learn new technologies and languages is invaluable as a developer. Even if you have five technical programming degrees, you should still work on learning something new by yourself because I guarantee you will have to do it at some point in your coding career to be successful. According to StackOverflow’s 2018 survey, 87% of professional developers had learned a new language without taking a formal course.
I can, unfortunately, say that if you do not earn a college degree or complete a coding boot camp and only learn a coding language on your own, it is very difficult to get a job as a software developer. The StackOverflow’s 2018 survey recorded that only 22.2% of professional developers do not have a degree and even fewer who also did not complete a coding boot camp.
Most “self-taught” developers I know were given opportunities from their current employers to take on some coding responsibilities because of an interest in the job or they had a connection that would hire them as a developer because the connection trusted him or her. Even though learning to code without any official course is faster, it is more difficult to receive a job as a software developer and even if you do, you will likely start as a contract-to-hire or at a very low entry level with lower than usual compensation. Below are some great resources to learn new languages. You can also view my other blog post about the best website to learn how to code.
Got The Job?: Transition Into A Professional
It’s finally time for congratulations! All of that studying and learning has paid off and you landed a job as a software developer, so now it’s time for the fun coding part without all of that annoying learning, right? That could not be more wrong.
Now is the time to ramp up your learning. When starting a job as a professional developer, you need to go into the job with the mindset of how you can provide the most value for your employer because that is exactly why your employer hired you. Your employer obviously believed you could provide value to the company. In addition to putting yourself into the mindset of providing value to your employer, there are a few actions you should take to show you are ready to provide that value.
Show Interest In Your Employer’s Interests
The first thing you should do is show interest in any technologies your employer shows interest in investigating further. You don’t need to be an expert in the technology or even know that much about it, but showing you are willing to learn it will mean more to your employer than having all of the answers.
Don’t Be Afraid To Ask Questions
As mentioned before, your employer is not going to expect you to have all of the answers on your first day of working as a professional developer, but your employer will expect you to be able to ask the right questions. Most of the questions you will have will likely be asked up front, but it is okay to ask some as you progress through your tasks.
You must also be aware that there is a fine line between asking reasonable questions and being counterproductive. As a rule of thumb, you should always try to figure out any technical programming issues you are having yourself before asking someone else, but do not jump into a rabbit hole that wastes your time and requires you to take even more time later to catch up on your tasks because you wasted so much time trying to figure out one issue.
My general rule of thumb is if something takes me more than 20 minutes to figure out through some good old Google or StackOverflow searches, then I’m going to ask a subject matter expert (SME) on my team. At the same time, you should not constantly ask questions to others on your team to the point that you are significantly impending on your other team member’s work.
One classic example of an appropriate time to ask questions is when assigning story points to sprint stories if you are unsure about what to assign the story because you have little knowledge about the type of work or technology, it is completely fine to ask others on your team who have knowledge about their ideas about the efforts regarding the technologies or processes of the work related to the user story.
At the end of the day, make sure you ask questions because it is always better to be a developer who asks too many reasonable questions to get the work done as opposed to being someone who does not complete your assigned tasks because you do not bother to ask questions.
Improve Your Developer Skills
Well… now that you are an experienced developer and you have a few years of professional development under your belt, then you have no more learning to do and you can call yourself a successful developer, right? Unfortunately, you would be wrong again.
At this point, you are likely at a mid-level and surely ready to take on more advanced development tasks and advance your technical skills with advanced subjects like API integration, minor application architecture and even high-level environment set up and deployments. So how do you learn these new skills?
Lucky for you, your years of experience with learning how to learn new technologies and processes have put you in a position to have no problem learning these new skills and what’s more, you can still use the same comprehensive resources mentioned before to improve your skills again. These resources include Pluralsight, Udemy, One Month Coding Academy, Coursera, and Ed2Go.
Establish Yourself As A Successful Developer
After going through your share of advanced development practices such as API integrations, application architecture, and deployments, you are ready for establishing yourself as a successful senior professional developer. You may be asking how much more advanced can the programming skills as a senior developer/team lead be than what you are already doing?
The answer is it is not much more advanced than what you are already doing, but you will be taking on new responsibilities. As a senior or lead developer, you will take on responsibilities such as code reviews, mentoring team members, and assigning tasks to team members. These are obviously not all technical skills, and there are only a few things within each skill that resources such as the ones discussed above can help with.
There are some exercises you can do to help with these soft skills you will likely be responsible for when being a senior developer. When it comes to performing code reviews, the two things that will help you and your team during code reviews are having coding standards across your team and review the task or user story tied to the code review.
Create A Programming Blog
When it comes to mentoring team members, there is really nothing that can be done to help other than practice. I recommend using mediums such as a programming blog or videos to practice teaching or mentoring. One of the best places to start with a blog is to get great hosting. I recommend Bluehost as a great source to host a blog since it provides very cheap and reliable hosting with easy WordPress installation and setup. Having a programming blog not only helps you with training and mentoring other developers but helps provide yourself a capstone for your employer to use as a reference.
Leading A Team
From personal experiences, I have found one of the most difficult tasks most technical individuals deal with is becoming a leader of a development team. Recommendations for leading a team could be a complete book in its own. As a matter of fact, I would recommend reading Leading a Software Development Team: A developer’s guide to successfully leading people and projects by Richard Whitehead. This book provides absolutely everything you will need to know to properly assign tasks, communicate with team members, managing timelines, and much more. If you would like me to write a post about my experiences and advice with leading development teams, please leave a comment below.
Hopefully, this article provided you with the information and a roadmap needed to become a successful developer. Success is a subjective concept and likely varies from my interpretation of the word. I would love to hear everyone’s perception of how a successful developer is defined through the commenting below, so please do. Also, if you have any other suggestions to help other developers become successful, please comment below.
If you like the shirt below, you can view more about how to get it here.