Self-teach? Go to a bootcamp? University? Bachelors degree? Masters degree?
When you want to learn software development, there are many options. Which should you choose? It depends...
Grade School & High School
If you're in high school or younger, take the self-teaching approach! You have time. You're curious. You don't need the quickest path. You should take the most fun path.Mark Twain once said "Find a job you enjoy doing, and you will never have to work a day in your life.” The best coders are the ones who love coding. This will set a good foundation for enjoying your career.
Take any classes available at your school and extend those learnings on your own. If your school doesn't have any classes (or you've taken them all), find some online tutorial classes. YouTube and blogs are great for this. Udemy, Lynda, Coursera, etc may have courses in areas that interest you. Books are also great, if they fit your learning style.
Learning on your own is important, but find other people who like coding, too. Learn with them. They'll help you & you'll help them. Shared interest will help you discover fun aspects of coding and that discover cool things you can do.
Build as many fun side projects as you can. Launch as many of your side projects as you can to the App Store of your choice or onto the web.
These self-learnings and projects will will give you excellent experience and perspective. These may even be used for school projects, college applications, and/or resumes - maybe even the next Snapchat.
Set your focus on getting into some University that offers a decent computer science (CS) degree. A University CS degree will be invaluable to securing your success in the software engineering industry.
Just make sure to stay curious & keep learning, as that’s my biggest complaint with CS grads - many seem to lack curiosity & interest in learning or trying new things. People with that attitude often get left behind the industry progresses. Don’t get burned out from being in school.
Your degree is important, but it is not the end of the road. It forms your launchpad. Coding gets even more fun after you launch. Your ability to do great things will open up to a world of potential. Don't forget, with computers - if you can think it, you can do it!
University - Bachelors
Sorry, bootcamps, I love you, but your shortcomings guarantee that Universities will rule the CS career path for the foreseeable future. Although bootcamps will tell you the University computer science degree is obsolete, it's just a marketing tactic. It's no where near true.
Taking the University approach is (currently) hands-down the best way to launch yourself well into the software engineering industry. You’re going to learn everything that a software company expects you to know.
You’ll have NO problem with the interviews if you understood your data structures & algorithms classes. Your resume will get quick attention. You'll likely have had internship experience. You’ll be hired at a much higher salary. You’re much more likely to get a signing bonus and/or relocation bonus. You may even get stock. You’ll likely start at a higher position in the company. You’ll have a great foundation to learn from. The rest of your career will be much more secure than if you took another path. You'll always carry the ethos of your degree.
Here's the thing, companies will KNOW what you know if you have a CS degree. They'll question what you know if you took an alternate path. They'll also wonder if you're a hard worker and capable of handling complex concepts. Most "proofs" of your capabilities are subjective... except a CS degree.
If you’re single or even married without children, I would highly suggest getting a CS degree. Often the competitive schools are competitive because they're good & more people want to join than they have room for. So, if you can get into one of those, do it! If you are concerned about the competitive nature of the CS degree programs, find a university that does not have competitive entrance for CS. That ensures you won’t get “rejected” from entrance into the program.
This means, you’ll get the most practical learnings in the shortest time (usually less than 2 years), and with it you’ll get the credibility of having a Master’s degree in CS. Pretty legit! This gives you the ethos you need for a strong resume, and the training you need to excel in interviews.
This was the situation I was in. I was the primary income in an expensive area (Seattle). I had a mortgage and other living costs that would eat up savings quickly. Plus, I had one child - with another child on the way. There was a short window to make this switch. Time was ticking. I needed a more creative approach. This is where bootcamps come in.
Bootcamps get their name from the intense amount of focused time you will need to put into them. But, while focused, it's shorter. Much shorter. Most bootcamps range from several weeks, to several months. It’s a very “practical” way to learn practical programming.
Remember that many bootcamps will require you give 100% effort… and then some. Many of us worked 12+ hours a day, 7 days a week for the entirety of the bootcamp. This will be the fastest way INTO the industry, but there are some notable drawbacks:
Tech industry interviews are rooted in assessment of academia mastery - data structures & algorithms. Interview questions poorly represent the work you will be doing on a day-to-day basis.
An applicant's ability to interview well does not necessarily indicate whether they will be a driven & high-performing employee. This is unfortunate. But it’s how things have always been, so don’t expect it to change anytime soon.
Some companies factor this in for “junior” or “associate” level job opportunities. If so, that can help bootcamp grads get “in the door”, but don’t expect that kind of leeway to continue at higher levels.
You’re going to have to overcome your lack of knowledge by lots of study & training. If you don’t train to master interviewing algorithms approaches, as you get promotions & move up in your company, you may feel “stuck” there because you are not well prepared to interview for a similar-level position anywhere else.
Independent of your ability, you may not be perceived to be as “expert” as the CS grads. This stigma is more common in large tech companies. It may or may not be as prevalent in smaller companies.
I would only recommend taking the bootcamp approach in cases where University is not an option for you. In such cases, bootcamping-in is better than not getting in at all, and it's a completely viable approach. Just be aware of the drawbacks I mentioned above, so those don’t come as surprises to you later on.
Taking the University approach is (currently) hands-down the best way to launch yourself well into the software engineering industry. You’re going to learn everything that a software company expects you to know.
You’ll have NO problem with the interviews if you understood your data structures & algorithms classes. Your resume will get quick attention. You'll likely have had internship experience. You’ll be hired at a much higher salary. You’re much more likely to get a signing bonus and/or relocation bonus. You may even get stock. You’ll likely start at a higher position in the company. You’ll have a great foundation to learn from. The rest of your career will be much more secure than if you took another path. You'll always carry the ethos of your degree.
If you’re single or even married without children, I would highly suggest getting a CS degree. Often the competitive schools are competitive because they're good & more people want to join than they have room for. So, if you can get into one of those, do it! If you are concerned about the competitive nature of the CS degree programs, find a university that does not have competitive entrance for CS. That ensures you won’t get “rejected” from entrance into the program.
University - Masters
If you already have a Bachelor’s degree in something OTHER than CS, you may want to consider a Master’s degree in a program that is setup for people switching into CS. Some Master’s programs are geared towards reinforcing the basics of Computer Science like you would get in a bachelor’s degree, but without having to go back for 4 years of study (or at least not having to get a ton of non-cs-related classes). There are many Colleges and Universities now offering programs like this.This means, you’ll get the most practical learnings in the shortest time (usually less than 2 years), and with it you’ll get the credibility of having a Master’s degree in CS. Pretty legit! This gives you the ethos you need for a strong resume, and the training you need to excel in interviews.
Bootcamp
But maybe you are in a position where you don’t have the time-flexibility to go back to school. It will never be convenient, but maybe it's not even possible for you to go for a Bachelors degree. Maybe you don't have a Bachelor's degree to go get a Master’s degree. Maybe you have too many responsibilities on your plate to go back to University PERIOD.This was the situation I was in. I was the primary income in an expensive area (Seattle). I had a mortgage and other living costs that would eat up savings quickly. Plus, I had one child - with another child on the way. There was a short window to make this switch. Time was ticking. I needed a more creative approach. This is where bootcamps come in.
Bootcamps get their name from the intense amount of focused time you will need to put into them. But, while focused, it's shorter. Much shorter. Most bootcamps range from several weeks, to several months. It’s a very “practical” way to learn practical programming.
Remember that many bootcamps will require you give 100% effort… and then some. Many of us worked 12+ hours a day, 7 days a week for the entirety of the bootcamp. This will be the fastest way INTO the industry, but there are some notable drawbacks:
1. Interviewing
An applicant's ability to interview well does not necessarily indicate whether they will be a driven & high-performing employee. This is unfortunate. But it’s how things have always been, so don’t expect it to change anytime soon.
Some companies factor this in for “junior” or “associate” level job opportunities. If so, that can help bootcamp grads get “in the door”, but don’t expect that kind of leeway to continue at higher levels.
You’re going to have to overcome your lack of knowledge by lots of study & training. If you don’t train to master interviewing algorithms approaches, as you get promotions & move up in your company, you may feel “stuck” there because you are not well prepared to interview for a similar-level position anywhere else.
2. Industry/Company
CredibilityYou don’t have the core data structures & algorithms training that other CS grads will have. This will have some impact in your ability to analyze complex engineering decisions, but for the most part will be a hit on your credibility and not on your actual ability to code.Independent of your ability, you may not be perceived to be as “expert” as the CS grads. This stigma is more common in large tech companies. It may or may not be as prevalent in smaller companies.
3. Engineering Capabilities
You will have to do a lot more side-learning on the core foundations of the industry, if you hope to overcome those missed years of CS fundamentals training. Long-term, the lack of this fundamental knowledge of the lower level complexities of computer systems (hardware & software) will play out as you move up in your responsibility.
You may be expected to design complex systems that help your company stay on the leading edge (high efficiency, maximization of algorithm & processing capabilities, complex parallelization of processing, high scalability, etc). It is here that your knowledge gap will show most clearly.
It's hard to tell how your potential compares to the average CS grad, because your education was not equal. You may get an “imposter syndrome” mentality - thinking that you’re just faking it until you can catch up.
The benefit of this mentality is that it drives you to press in, press hard, not settle for mediocrity, and overcome your weaknesses with ever-progressing excellence. The drawback is that even with much learning, you are always wondering how you really “stack up” against the other people & their knowledge.
When will your side-learning be equivalent to their degree? Will you be ready for that bar-raising technical challenge? Who knows.
Your worst enemy is "not knowing what you don’t know". On the other hand, this issue isn’t exclusive to non-CS engineers - CS grads also deal with this.
Unfortunately, companies realize that your lack of a CS degree means the upper hand is in their court for interviews & negotiations. They often use this to justify lower salary offers and slower promotions.
4. Confidence
When you’re around a ton of people with reputable degrees (and good capabilities from that knowledge), it can impact your confidence. They're probably pretty smart.It's hard to tell how your potential compares to the average CS grad, because your education was not equal. You may get an “imposter syndrome” mentality - thinking that you’re just faking it until you can catch up.
The benefit of this mentality is that it drives you to press in, press hard, not settle for mediocrity, and overcome your weaknesses with ever-progressing excellence. The drawback is that even with much learning, you are always wondering how you really “stack up” against the other people & their knowledge.
When will your side-learning be equivalent to their degree? Will you be ready for that bar-raising technical challenge? Who knows.
Your worst enemy is "not knowing what you don’t know". On the other hand, this issue isn’t exclusive to non-CS engineers - CS grads also deal with this.
Unfortunately, companies realize that your lack of a CS degree means the upper hand is in their court for interviews & negotiations. They often use this to justify lower salary offers and slower promotions.
5. Compensation
As an employee, your compensation may face similar hurdles. The company may justify this by your "need to increase your core tech knowledge"… but more likely than not they cannot qualify or quantify the specific "core tech knowledge" necessary to appease their desire... and even less likely to shed light on how that knowledge will tangibly impact you delivering better results.Conclusion
In recap, a University degree (Bachelors in CS or CS Masters) will give you the training & credibility to bolster your career, credibility, capabilities, and confidence. It may take a little longer, but I would argue that the end-result on a career is worth it if you can make the time.I would only recommend taking the bootcamp approach in cases where University is not an option for you. In such cases, bootcamping-in is better than not getting in at all, and it's a completely viable approach. Just be aware of the drawbacks I mentioned above, so those don’t come as surprises to you later on.
Comments
Post a Comment