Reasons to Become a Developer
Jobs! If you check our the Bureau of Labor Statics you will see that the demand for developers is growing at above-average levels and after 2020 with every business have to embrace technology to survive there is no reason to expect that to change.
Empowerment! With developer skills, you improve your personal and business life with the ability to create automations to save time, analyze data for smart decision making, or create applications to assist your professional or personal projects.
Life! Whether it is by finding a full-time/part-time job, working as a contractor/consultant, or as a freelancer. No skill is as portable as being a developer where working remote is a very real possibility and depending on the type of work really allows you to maintain the work/life balance of your choosing.
Things to Consider
There are several things you should consider whenever attaining new skills for the purpose of changing your career.
Time: How much time will it take for me to start and get to the point where I am generating enough income to pay my living expenses, do I have savings or ways to minimize my costs during that time.
Cost: What is the cost of training, how will I finance the expenditure
Risk: How robust is the job market (in development, quite robust)
Ways to Learn
There are mainly 3 ways to prepare for a development career switch.
Self-Taught (lowest cost, highest risk, variable time)
Coding Bootcamp (moderate cost, moderate risk, shortest time)
Computer Science Degree (highest cost, lowest risk, longest time)
NOTE
Before we dive into the pros and cons of each of these options I highly recommend completing General Assembly's DASH Modules as a free way to test out the basic principles of coding and see how much you enjoy it, complete all the modules before forming an opinion.
Self-Taught
I highly discourage attempting to be a purely self-taught developer unless the following are true:
- You have a high amount of discipline
- Have a clear idea of what direction you want to go
- Are comfortable in conducting job searches
While the web is filled with blogs, videos, and courses to teach you coding if you don't have the discipline you'll find yourself building bad habits that will be hard to break later.
If you don't have a clear idea of what you are working towards you will get frustrated by the vast array of technologies and abstractness of what works with what and when.
Even if you learn all the skills, the job search is an art in itself, and without an idea of how to execute could hold you back from putting your new skills into practice.
Bootcamp
Full disclosure, after a few months of teaching myself coding I felt I needed more structure and guidance in steering my own career switch so I decided to attend a Bootcamp and still feel it was the best decision I ever made.
Bootcamps vary widely in costs, curriculum, educational methods and support. My positive experience was with General Assembly, so if you go this route I recommend attending a course with General Assembly.
With General Assembly you get:
Broad curriculum that gives you exposure to a broad set of technologies and programming concepts with a focus on teaching you how to be a forever learner (A coding career means always learning, so you better have a passion for learning).
Instructional staff that is not only technically skilled but emotionally intelligent, passionate, and eager to provide support. (I know, I'm also an Instructor at GA you can look at my upcoming classes here)
A career coach who will be a guide, mentor and resource for you from beginning to placement.
NOTE: While my outcome was probably above average, I had multiple job offers by graduation and I now also work as a Full-Time Developer on top of being a GA instructor. Timelines vary, but it truly is a matter of you get is a function what you put in. Doing self-preparation before your cohort, being an active participator in class, and not leaving any aspect of the job search on the table pays off in spades.
Ok, so now that I've proclaimed my admittedly biased opinion. Other benefits to Bootcamps in general:
- Build a foundation in development in 3-6 months depending on the program
- Flexible financing, you can either pay upfront, get a scholarship when available, take out a loan, or enter an income sharing agreement so you only pay if you're employed. (availability and limitations on these options varies on provider and program)
- Much lower cost than getting a four-year degree
- More structure, guidance, and support
The primary downsides are that there is a cost and larger enterprise type jobs (think multi-national corporations) may prefer CS Degrees, although most startups, medium to small business and some fairly large household names actually prefer bootcamp grads as the courses focus more on the skills sets and tooling used on the job.
Computer Science Degree
This is at least a four-year journey and unless you have a scholarship a high amount of debt.
The Pros:
- Much higher starting salaries
- The level of algorithmic practice and theory over four years will make technical interviews easier
- You'll walk away with a deeper understanding of the theory and concepts underlying how computers work and communicate
The Cons:
- May be overlooked by some employers as overqualified (which means they think your too expensive or will leave soon as other opportunities arise) although these probably aren't the jobs you'd want as CS graduate.
- Higher Expectations of ability
- You'll probably have to teach yourself a lot of tooling and languages which are highly used but are not taught over more complex less used languages. (Does anyone use prolog in production?)
Questions to ask yourself?
What is my timeline? The quicker you need to make the change the more compelling a bootcamp will be.
Do I want to be self-employed? If you are looking to start an agency or your own startup, then how you learn is less important than learning it well.
What kind of company do I want to work for? Most companies are glad to hire bootcamp grads and self-taught developers with strong portfolios often with a technical assessment. Although, if you are looking to be working on cutting edge technology and engineering breaking new ground, then you may want to consider the CS Degree or Engineering Degree.
Career Options
As I mentioned earlier regardless of what path you are interested in I highly recommend completing all the General Assembly DASH modules to get a feel for your ability to absorb information. Below is a list of many career paths as a developer.
Web Developer: More and more all of our software runs in the browser, so really web development is development in today's world. A web developer needs to have a strong foundation in HTML/CSS/Javascript, be proficient in a frontend web framework (React, Vue, Angular, Svelte) and be familiar with a few backend frameworks which can use any language (Javascript/Express, Python/Django, Ruby/Rails, PHP/Laravel, etc.). Web Developer create API to interface with databases (backend development) then create web applications/web sites that receive that information for users (Frontend Development)
Data Science/Data Analytics In today's world data is one of the greatest resources a business has but to really find useful insights you need to work with that data. Developers in the Data space primarily use Python (R and Julia also get notable mentions) in doing a host of tasks. To paint a picture a backend application made by a web developer may collect data on user interactions with a website and save it in a database. A data scientist will then SQL (structure query language) to find slices of data to analyze using python libraries like Pandas and NumPY. A Data analyst may then take that data and export it into excel or google sheets where it is then fed into a visualization which may be using a platform like Tableau to create.
Mobile Application Developer Most use of the internet these days is from mobile phones so having mobile applications are a must for many of today's businesses. Those who develop natively for IPhone often learn the Swift Programming language. Those developing for android phones typically learn the Kotlin programming language. Although tools like React Native, NativeScript, Kivy and Dart/Flutter allow people to use languages like Javascript, Python and Dart to create cross-platform applications.
Machine Learning Basically creating models for Artificial Intelligence to learn. This uses libraries like TensorFlow typically with python.
DevOps Code has to run somewhere and managing that infrastructure is a whole world unto itself made of Cloud Platforms (AWS, Google Cloud, Azure, Linode, Digital Ocean), Docker, Kubernetes, and many other tools. This is a very lucrative field but you should have some development knowledge and experience to help understand what role all these tools play.
There are several other fields such as desktop software development, Quality Assurance Engineering, blockchain developers, systems developers, and more and fields that don't even exist yet.
Additional Tips
Learning your Operating Systems command line in-depth (bash for mac/linux, and PowerShell for windows) is a worthwhile effort that will pay off in spades whichever field you go into.
Learning how git and github work in-depth also a must
subscribe to a lot of development podcasts, listening to people talk about code will help immerse you and get more comfortable hearing it
Don't look at it as a job, coding requires passion to maintain the level of constant learning to be successful
Don't try to learn too many things at the same time, if you are confused assess your assumptions and test them.
Google is your friend, coding also means a copious amount of reading documentation and searching on google. Expect it.