Welcome!

    I’m happy that you are considering a jump over to programming as a career, as a hobby, or just as a one time pursuit. Designing, coding, and releasing interesting programs and software products can be a rewarding experience that I have personally found to be very rewarding and that has given me a career that lets me lead the kind of life that I want to live. 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 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 ask you to ask yourself a few questions. Consider them carefully! It’s important to know yourself and know what you’re getting into.

A day in the life

    My days as a developer haven’t changed drastically across the different companies that I’ve been in. I usually get into work at a reasonable time, between 9:30 & 10 am, go to a standup or daily meeting, and then spend the rest of my day programming and going to meetings, before I leave work at 5:30 or so.
    Easily 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 development tasks. I sometimes listen to music or a podcast, but often I am just sitting, developing. And I enjoy development - it’s a bit like writing, and a bit like playing a game that I enjoy playing, and there is a great feeling when you complete a task, solve a hard bug, or release a product that gets good reviews. Does this sound like something that would appeal to you? If it does, then programming might be for you.
    The rest of my time 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 worked in some version of sprints or cycles, that is, one-, two-, four- or six-week units of time over which a team will have a specific objective or product feature that they will be working on. These will be planned, updated on, and then reviewed by the team as a whole. Most of the places I’ve worked have had product owners or managers, who are the drivers of the product direction of the team; engineers, who build the products; and designers, who design the look and feel of the product. The best places I’ve worked have tried to make these processes as collaborative as possible - the worst places I’ve worked will usually slant power too much in one direction or another.
    At its best, working with product managers and designers feels 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, the bootcamp, and after the bootcamp.

Before

    Before a bootcamp, I think it’s good to learn a few things - you’re 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.
    After you get the hand of HTML & CSS, you should move on to learning how to add Javascript to webpages. While HTML is a markup language, that just tells another program how to display information, javascript is a programming language itself, and where you can learn more about actual development practices.
I recommend going through the Javascript tutorial on code academy:
JavaScript Tutorial.
    I also recommend reading this book, Eloquent Javascript, in conjunction with the course: Eloquent JavaScript.
    Doing these introductory tutorials is the easiest place to decide that you don’t like programming, and also the place you should persist. The very beginning of programming is awkward, and also very basic. Learning how to log something in the console is all well and good, I remember feeling, but when do I get to develop something with a real UI! Or something that I can show to my friends?
    That will actually take 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 is awkward and it can feel pointless and demoralising as you write another for loop for reasons you don’t understand. But, through it all, you’re building blocks of foundational knowledge and understanding that will server you for the rest of your life, wether you do software development professionally or not. So, persist. Once you’ve gotten through the book, and one you’ve gotten through the course, take some time to think, and then, if you’re ready, move forward.

During

    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 in 2015, they’ve popped up all over the world, and there are probably some near you. Also, since I went, the proliferation has led to variable quality - I can’t vouch for any particular bootcamp. If you’re looking for advice on which one to attend, there are 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+ day a week dedication, with the same group of people, trying to learn something the entire day. This is both very useful and very 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 further build blocks of knowledge for my career. Did it teach me anything that I couldn’t have learned outside of it? No, but it did give me a system into which I could pour my focus. 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

    Once you’re done with a bootcamp, you’ve got to find a job. Again, this is where I am least useful. 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 4 years and 2 continents! But, more often, people find their own ways and their own jobs. People will hire you, and they are looking 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 the job I did get the first day that I got there.
    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 principal 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 one thing: 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.