POST #03
Welcome back folks! Last time in What is software development we talked a little bit about the different kinds of software development out there. Now, I mentioned something I recommend you do in that article. That is, research the different kinds of development that are out there beyond my list so you have a better idea of what’s out there and, can better decide what kind of developer you want to become . I don’t only make this recommendation so you know all of the potential career paths there are but, more importantly, so you have an end goal in mind when learning how to become a software developer.
I’d venture to say, one question that every software developer out there asked when they started out is…well… how? Figuring out how to start learning to become a developer is probably going to be one of the most important, and difficult questions you’re going to have to answer because let’s face it, you’re starting something new and, if you’re like I was, something you have virtually zero knowledge about. Answering that question though, is half the battle. Once you start and stick with it for a little while, you’ll be off to the races in no time.
where do i start?
Languages. Most resources I looked at when I was trying to answer that question for myself recommended picking a language to start learning and just go. This might seem like the obvious answer for someone with a little more knowledge on the subject than I had but, if you were anything like I was you promptly would have gone to google and searched; what is a software language? Well hold on… before you do, I’ll save you the trouble.
A programming language is essentially what is used to write software/programs (I use these terms interchangeably). Don’t panic, you don’t have to learn French or a second language. Well, I lied there. You do need to learn a second language but not like you might think. You won’t need to learn French or Spanish however, you will have to learn computer speak. Don’t worry! Despite what you and I might have thought, computers are incredibly stupid things and learning a programming language is not as hard as you might think. Sufficed to say, you can’t just write something in plane English and expect your computer to understand what the hell you’re talking about. It won’t understand those plain English instructions that you gave it, remember, computers are made up of a series of 0s and 1s. Now I’m sure we’ve all seen a movie where we’re shown a hurricane of 0s and 1s flying across a computer screen that just looks like an absolute mess but again, don’t worry. Unless you’re going in for a deep dive into computer science you won’t have to understand what 001101001 means in computer speak.
A programming language is something somewhere between 0s and 1s, and plain English. Something that with a little bit of help, both you and the computer will be able to understand. When writing a program, you’re essentially writing your computer a series of instructions for it to execute and wam bam you got yourself some software. Of course, it’s not quite that simple but, that’s the main idea. The programming language is the “language” you use to write those instructions for the computer to understand. A simple set of instructions might only be a line or two long and you’ve got yourself a very basic Hello World program. A large set of instructions and you’ve got a program like Microsoft Word (try somewhere in the ballpark of 40million lines or more. Woah, right?). This is far from a low-level look at what programming languages are and how they work but for now, I’ll spare you from trudging around in the programming language weeds.
Here’s the catch and why I disagree with the “pick a language, put your head down and go” strategy. This something I didn’t even think about or even consider before I picked which language I was going to start with but I believe it to be a very important point. There are hundreds of languages out there, likely even thousands. Sticking each language on a dart board, closing your eyes, throwing a dart and learning the language the dart sticks in isn’t exactly the best way to go about picking a programming language. “Well duh” you might be thinking. Yes of course, there are some languages that are considered “beginner friendly” and are more recommended for beginners than others but I still think picking one of the dozen or more of those languages and running with it is still not the best way to go about it.
Therefore, I disagree when someone says just pick a beginner friendly language and run with it. Sure, in the grand scheme of things it doesn’t really matter what your first language is. The reason behind that is, once you’ve learned one language some of those skills will translate to another language making it much easier to learn. But, why would you start learning how to build the walls for a house when you want to become a roofer? Sure, you’ll learn to use a hammer, and a measuring tape which are both useful in both areas, but you’ll also waste valuable time learning things unrelated to your end goal. Focus on that end goal and once you’ve mastered that area, put those focused skills to good use, then branch out and learn something else if you so chose.
The main point here is to pick and end goal and work toward learning the skills, languages, and other tools that will get you there in the most efficient way possible. If you read the last article, took my advice, did a little more research into the topic and found something specific you want to do, congratulations, you’ve taken the first steps to becoming a software developer. Another approach which I think is just as good if not better is to look at jobs. Maybe there’s a company out there or a specific type of job you want to do in the software industry. Take a look at those and see what kind of requirements are needed and start learning those core concepts. Be efficient, you’ll progress much faster, that progression will be much more obvious and I think, you’ll be much more satisfied.
Not only does staying focused on your end goal allow you to hone specific skills faster and with more direction, it also prevents you from feeling overwhelmed. If you start learning language A, then a couple weeks or months later you think language B is better and keep jumping around you’ll start to feel like you’re not making progress and become tired of treading water. The temptation will come and sure, I would never discourage someone from looking at something new just to see what it’s all about. But as a beginner, I’d advise you stay as focused on your end goal as possible. Then once you get that first language under your belt you can move on, have fun and experiment.
how do i learn?
When I started looking at how to go about learning software development, I thought my options were simply between which school was the best to attend. Everything else I tried to do with my life required some certification obtained via college or university so, naturally I thought the same would go for software development. Let me tell you, I was wrong. Very, very wrong.
I did a lot of google searching and talking to anyone I could that might have known something more about software than I did (which was pretty much anything). I came up with two different approaches. Firstly, college/university came immediately to mind. Then after talking to some people that knew a little bit more than I did, self-teaching became an option that I had no idea was even possible.
Software development is different than anything else I had ever tried to do as far as learning a craft and working towards a career, in the way that you didn’t really need to go through school to be successful. It came to my knowledge that there are people, apparently a great many people, that never went through a brick and mortar school. Many people go their whole career without having any diplomas, degrees or any paperwork from (insert college name here) and still thrive as a developer. What a revelation!
When I was looking at schools to attend, cost and time were my biggest factors that would dictate where I would go which, I’m sure we all have those things in the back of our minds when thinking about schooling. I didn’t want to spend a small fortune learning a new skill and I also needed to keep working my full-time job while learning. Someone just told me I could learn at the low, low cost of free and do it on my free time? I was hands down all in for teaching myself the skills I needed. There was one problem though. I didn’t follow my own advice. I had no idea about what a language was, I didn’t think it mattered what kinds of software development there were or any idea how broad of a term software developer was nor, did I have an end goal in mind. I just wanted to be a “Software Developer”.
Back to Google I went, searching for “Teach yourself software development”. At this point, shock set in. Learn Ruby on Rails free! Teach yourself web development. Java courses here! Learning how to code? Learn JavaScript here! Free PhP courses. Becoming a Data Scientist? All different kinds of results offering all different kinds of things I had never heard of. If I asked someone what Ruby on Rails was, they could have told me it was a mobile game that was a Bejeweled spin off and I would have believed them. Totally and completely ignorant, I flipped through my search results becoming more and more slack-jawed, wondering, what the hell I was getting myself into?
School seemed like a better option for me because I thought, I would have some structure to follow. Some set path. Had I known what I know now and had my time back, I think I would have taken the self teaching road. If you’ve taken my advice above and in previous blog posts, it’s safe to say you wouldn’t be as overwhelmed when researching how to teach yourself code. You would know the skills you’d need to become the type of developer you want to be, therefore, able to narrow your search when looking for material to teach yourself code. More to your benefit, you won’t be like me, eyes wide, mouth open, drooling in awe of all the things that it seemed a software developer needed to learn. I was stuck on that very general “Software Developer” and was amazed that some one person could know all these things that came up in my search results, let alone a whole industry’s worth of people. Save yourself some trouble and do your research! Trust me.
Another option that I was totally unaware of until months into learning how to code is code bootcamps. Be weary here though. If you decide to take this route DO YOUR RESEARCH. Coding bootcamps are the most heavily debated way of learning to code. Boot camps are a relatively expensive, short term, high intensity, hands on way of learning to code. They’re not called bootcamps for no reason.
Bootcamps take a 2-4-year course and jam it all into 3-6 months of learning. You will eat, sleep and s**t code. Learning 10-14 hours a day 6 or 7 days a week for 3-6 months, you can safely say good-bye to whatever life you have. The main goal of bootcamps are to take you from minimal knowledge of software development, teach you cutting edge, relevant technologies and how to put them to use by building and deploying real-world applications.
Because of the high intensity, long days, and cost, this method of learning might not be for everyone. Some sacrifices might have to be made that you might not be willing to make. Aside form personal, financial, and relationship sacrifices you might find yourself needing to make, you need to be a fast learner. You need to have the ability to work with a very limited amount of time to learn something potentially very complex and confusing at a very expedited speed. It takes a very particular kind of person to make the kind of commitment required by bootcamps and I myself, am not that kind of person so don’t feel bad if the idea of coding bootcamp is a little scary.
Bootcamps are a newer way of learning how to code compared to the rest. Not only are bootcamps a new way of learning but they’re shooting up and closing all over the place. Bootcamps don’t need any accreditation to operate. Meaning that I could advertise as a code bootcamp, take your $20,000, teach you sub par skills and there’s not much anyone can do about it. These types of “take your money and run” scams, sadly, are out there which is why if you do take this route, do your research on what bootcamp you attend. Make sure they have good reviews and I suggest to even go so far as talking to some early and recent graduates of those bootcamps and get their opinion on their experiences. The last thing I want is for anyone to throw their time and money down the toilet before doing a little bit of due diligence.
pros and cons
I’ll go much farther in depth on each of these learning paths in their own dedicated articles but for now I’ll leave you with my list of pros and cons for each.
college / university
Pros:
- Structured learning
- Instructor help
- Slower learning pace
- Certificate / diploma/ degree upon completion
- Ability to easily network with students and staff
Cons:
- Might not be as fast paced as you like
- Attending full-time classes (if you don’t take an online course)
- Outdated technologies
- Potentially more expensive than the other options
- Less learning options (limited technologies offered)
self teaching
Pros:
- Pay what you want
- Learn at your own pace
- Learn from home / no full-time attendance
- Learn technologies of your choice
- Tons of online resources
Cons:
- No degree / diploma
- No structured learning curriculum
- Minimal help from instructors/anyone
- You’re the only one holding yourself accountable you have to keep yourself on track!
Bootcamps
Pros:
- Learn cutting edge technologies
- Fast paced learning
- Learn by building real-world apps
- Networking with students and instructors
- Work placements for top students (sometimes)
- Structured learning curriculum
Cons:
- Extremely fast paced (to fast for some)
- Long days / weeks / months
- Large one-time cost
- Personal life sacrifices
- No diplomas / degrees upon completion
Keep in mind that this is not an exhaustive list of pros and cons for each, but I just wanted to get you a little bit familiar with all the potential ways you can go about learning to code. The following articles will take each way of learning and go in for a deeper dive. As always, I’d encourage you to do further research on the topic. Also, I can’t stress enough how important it is to have your end goal in mind. If you’re not sure how to pick and end goal I’d like to refer you to the previous post for a little more insight What Is Software Development?
Hopefully by now you’ve decided what software development offers you that compelled you to jump in headfirst, know how to, and picked an end goal, and what options are out there to help you learn to become a professional developer. Thanks for stopping by and as always if you liked what you’ve read, want to leave some feedback, or have ideas on what you’d like discussed feel free to contact us via the contact page we’d love to hear from you!
Next time we’ll go into a deeper dive into what you can
expect when going to college/university to become a developer. Followed by
bootcamps and self teaching. Until then, remember, keep learning, keep coding
and keep creating!
-Dorian
One thought on “HOW TO GET STARTED”