I’m happy that you are considering a jump over to a career in programming. Designing, coding, and releasing software products is a rewarding experience, and the demand for developers will let you take on a job that will compensate you well for your work. Software developers come to the field for many different reasons, but, whatever your reason for deciding that you’d like to learn more, welcome.
This advice will be generally directed towards someone learning about becoming a web application developer, but the fundamentals and basics of development and development as a career that I’ll point you towards here are useful to know regardless of what kind of developer you want to become. Before I get started on some practical advice on how to begin to learn about programming, let me first ask you to think about the actual day to day experience. Consider this carefully! It's important to have an idea of whether you will enjoy the work or not - if spending a lot of time by yourself thinking about technical problems is not for you, this might not be the best career path to go down.
A day in the life
I usually start my day by getting to my office at a reasonable time, between 9:30 & 10 am, going to a standup or daily meeting, and then spending the rest of my day programming and going to meetings, before I leave work at 5:30 or so. I typically work from home 1 or 2 days a week.
The largest part of my day as a developer is spent writing code by myself at my computer, trying to complete a task or feature that is involved in whatever project I am currently working on. This could be tracking down and resolving a bug, adding a button and interface for an application view, writing tests for the programs that I’m writing, or integrating an external api into my code. It’s a fairly solitary task - I go hours without saying anything, just lost in my own thoughts and the development tasks I am working on. I sometimes listen to music or a podcast while I am working, but often I am just sitting, developing. I enjoy development - it’s a bit like writing, and a bit like playing a game, and I get a great feeling of accomplishment when I complete a task, solve a hard bug, or release a well received product. Does this sound like something that would appeal to you? If it does, then programming might be for you.
The rest of my work day is mostly spent in meetings: planning, prioritising, and giving feedback on the products I’m working on. Most of the places that I’ve worked have split up the work calendar into some version of one-, two-, four- or six-week units of time (called sprints or cycles) over which a team will have a specific objective or product feature that they will be working on. These objectives and product features will be planned by, updated on, and then reviewed by the team as a whole.
Most of the teams I’ve worked on have been made up of other employees who broadly fall in the following categories:
- product owners or managers, who are the drivers of the product direction of the team;
- engineers, who build the products;
- designers, who design the look and feel of the product.
The teams I’ve worked have tried to make these processes as collaborative as possible - the worst teams I’ve worked will usually slant power too much in one direction or another.
Working with product managers and designers can feel like the best kind of collaboration - like a film, the screenwriter, director, and actors can all come together to create something more than the sum of the parts.
I typically feel good about the development part of my job. The place that I can get the most down or up is in the collaboration aspects. If I feel like my opinions and thoughts are being heard, I feel good. If they are being dismissed, I lose interest and check out.
How do I get there from here?
There’s a lot of different paths to becoming a developer. You can take it slow, and start off just doing online courses at your own pace, or you can jump in, and take a coding bootcamp course to make the career switch as quickly as possible. You can also go back to school for a computer science degree, or, if you’re just entering university, you can major in computer science. The path I will lay out here, though, is directed specifically at people who want to do something similar to what I did: learn to program and learn about computer science mostly as an adult, and then, from there, get a job in the industry and turn it into a career. With that in mind, I’ve divided this up into a three step journey: before a bootcamp, during the bootcamp, and after the bootcamp.
Before a bootcamp
Before a bootcamp, I think it’s good to learn a few things - since you are considering committing to spending a good amount of money on a course to teach you a specific skill - you should be sure that you don’t totally hate doing it. With that in mind, assuming you don’t have much programming experience, I recommend doing some of these things. I would say do them in order, but if you know one of them you can skip it, and move to the next one.
Learn HTML & CSS
There are a lot of HTML (Hypertext Markup Language) and CSS (Cascading Style Sheets) tutorials out there. This is a pretty good one: Learn to Code HTML & CSS.
Why learn HTML and CSS? HTML is a markup language - it tells a renderer (the browser) how to display information. With only HTML, you can build a lot of the the things that make a webpage and a web
application work. Forms, videos, text, buttons, and more are all created with HTML. CSS complements HTML - it allows you to add styles to the bare bones of an HTML page.
Doing these introductory tutorials, you might find yourself getting discouraged, and feeling like the gap between you and being a developer is too big to overcome. But this is the place you should persist. The very beginning of your journey towards becoming a programmer is awkward: there are a lot of basic tasks and strange vocabulary to learn, and there is a lot of repetition. I remember feeling that learning how to print some text on the screen was all well and good, , but being anxious about how to turn that into developing something with a real interface, or creating something that I can show to my friends?
I won't lie: getting to the point where you have things to show off takes a while. Like learning a new musical instrument or starting a new sport, you’re not going to naturally be a developer - you have to learn how to do it, and the learning part can feel pointless and demoralising as you write another piece of code for reasons you don’t understand. But, through it all, you’re building the blocks of foundational knowledge and understanding that will serve you for the rest of your life as a programmer, wether you do software development professionally or not. So, you should persist. Once you’ve gotten through the course and read the book, take some time to think, and then, if you’re ready, move forward.
During the bootcamp
The first steps that you made in the last step should now prepare you for finding and choosing a bootcamp. I went to a bootcamp called Hack Reactor in Austin, Texas. Since I went to my bootcamp in 2015, they’ve popped up all over the world, and there are probably some near you. Also, since I went, the proliferation of b0otcamps has led to a lot of differences in quality - I can’t vouch for any particular bootcamp anymore, even the one I attended. If you’re looking for advice on which one to attend, there are recent reviews on social platforms like reddit that should help you. Your best resource, however, is contacting the school and asking them to put you in contact with a recent graduate or two, who will be able to provide you with a real review.
Bootcamps can be intense - they almost all involve 5+ days a week of study and coursework, with the same cohort of people, trying to learn something difficult the entire day. This sort of high intensity learning environment can be daunting, but don’t fret! There are all kinds of people at a bootcamp and you should not try to measure yourself relative to the other people in your cohort. Learn as much as you can, for you, and you’ll be fine.
I enjoyed my bootcamp. It taught me a lot of computer science fundamentals and also taught me how to build applications and collaborate as a team. The skills I learned at the bootcamp became building blocks of knowledge for my career. Did the bootcamp teach me anything that I couldn’t have learned on my own? No, but it did give me a system through which I could focus myself, and it connected me with other students who I could relate to, learn from, and study with. I was eager to learn, and I didn’t have to think about how I was going to go about learning, and that was definitely worth it.
After the bootcamp
Once you’re done with a bootcamp, you’ve got to find a job. This is where my advice breaks down, and I am least useful to you. Most bootcamps will set you up with some interviews, and some will lead to jobs - my first job was found through my bootcamp, and it lasted for 6 office moves, 4 years and 2 continents. More often, people find their own ways and their own jobs. If you've applied yourself, people will hire you, and the market is still good for developers. Coming out of my bootcamp, I was probably overly naive about development, but I had enough of the tools to be able to do work the first day that I got to my first job.
I've used the following sites to find work, and they are good jumping off points to start your job search:
- https://hired.ca/ - recruiting site - they will match you with candidate employers - takes the "search" out of the job search
- https://www.vettery.com/ - recruiting site - they will match you with candidate employers - takes the "search" out of the job search
- https://whoishiring.io - aggregator of job listings from Hacker News
- https://angel.co/ - startup job aggregator
After you’ve gotten a job, it’s on to a career - and from there, there are a lot of options available to you. Do you want to become a senior software engineer? A team leader or manager? Do you want to become a technical product manager? I’ve seen developers transition to all of these roles and more in my career, which should just tell you something: once you’re a developer, you can stay a developer, but you don’t have to. The most valuable thing you’ve done is opened the door at countless technology companies, where you will now always have a place thanks to your technical skills. Beyond that, you can do whatever you want to do.
I'll talk a bit about career paths in my next post. Until then, good luck, and don't be afraid to reach out to me - my email is firstname.lastname@example.org, and I will try my best to get back to you.