It's been a while since writing my last post. Thanks for baring with me :)
Let's talk about software development bootcamps shall we? I've been really interested in the act of learning lately. How to learn different types of things, optimizing for efficiency, mastery, and enjoyment. Something really close to my heart is learning how to program, because I too went to college not knowing what to do, and then I found software a little too late (for traditional educations sake), so I had to improvise and find a non traditional path.
Everyone and their mom (yes their mom's too) has signed up for a software bootcamp. We all know, traditional education is fucked. The bootcamp model has been a refreshing change of pace, where they've "adopted" the older trade school mentality of preparing people for a trade or specific skillset (go figure). Except, we're banging on keys instead of laying bricks. But, are we optimizing for education, learning, and productivity?
I honestly don't think so.
You show up, spend 100 hours a week, pay a bunch of money, and then they promise that you WILL get a job. How do they know you'll get a job? Well, they run a statistical analysis based on past grads and their employment. Though, it can be a bit unclear how they define "job". Hopefully, you now feel comfortable enough to hand them thousands of dollars.
You spend all this time learning everything from basic command line commands, git, some trendy javascript framework, and maybe a backend technology. They put you through the machine and spit you out going from nothing to a software engineer in 8-12 weeks. Okkkkkk?
Though, bootcamps aren't all negative. There's always something to be taken away from any experience. Bootcamps are excellent for allocating dedicated and uninterrupted time to spend with like minded people, projecting you into an unstoppable momentum after the program is over. As long as you're not burnt out.
In addition, the people you meet will likely change your life. Meeting people from all walks of life, people who said, "Fuck it, I'm going to do this". Which is an amazing and powerful ecosystem to be apart of, and you will likely come away with some really close and long term friends.
Ya ya we get it Scott, how would you run a bootcamp?
I would start by making a basic course for yourself based on advice people you respect and whom are competent engineers recommend. While we're here, I'd say "specializing" at this stage is better than generalizing to increase your chances of landing your first gig. For example, lets say we're just going to focus on frontend development. It's ok to thrash around, your course should be your map, it's ok to get lost. A mentor of mine once told me, "it's ok to pick up a book thats way over your head. When you find something you don't know in that book, go find a resource to learn that thing, come back to the original book when you're ready". This has worked exceptionally well for me and my learning endeavors.
Next, find a mentor. Not sure how to find one, read here. I think having a GREAT mentor is exponentially more valuable than going through a program. That being said, the mentor should have some impressive shit on their resume and be a good teacher. You'd be surprised, there are a lot of great athletes, engineers, writers, who suck at teaching. Make sure your mentor isn't one of them.
I think to get started some basic Javascript course and CS course will do. Like the free one on edx from Harvard? IMHO learning React is too complicated and shouldn't be the emphasis. Learning what React is built on top of, will get you much further long term. You should wield JSX like a sword, not use it because create-react-app
came with it and you can't tell me what a package.json is.
Too harsh, but someone needs to say it.
Another great learning tool is reading the MDN docs. The best and most frustrating advice I constantly receive is to read the docs :) Go find a sandbox and play with what you learn! Sandboxing new concepts is a great way to make sure you grasp that concept and you can use it in a vacuum. My personal favorite tools are CodePen, CoderPad, and Repl.it to name a few.
Next step, CONTRIBUTE TO OPEN SOURCE.
It's literally the closest thing to working on a team you can possibly get to. Thus, getting you closer to your goal. If you want to learn how to "speak" a language you wouldn't learn using Duolingo, would you? No you wouldn't. Well, maybe you're a masochist and love doing things that don't directly influence your success and progress towards a specific goal. I'm kind of kidding, I love Duolingo and think it has a place in the learning ecosystem. If you ask yourself, what am I optimizing for in this case? I am optimizing to "speak" to people using a different language. Talking into an app and clicking on pictures is pretty far away from that. So a better language learning solution would be to hire a tutor, and talk to them in that language. Go fucking figure.
This software education learning experience is not a 12 week stint, this is a lifestyle. It's always going to be challenging, your challenges are just going to change, and your challenges will get more complicated. Get used to it.
Here are some things to consider when contributing to open source:
- Look for the "Good First Issue" label
- Find a well supported and active open source project
- Pick an open source project that people interviewing you have heard of. For example, Eslint, Gitlab, Nodejs, Babel etc.
- Find a mentor
- Read my contributing to open source blog post :)
Get to work! Get going!
If you have any question, comments, or things you want me to expand on in future posts please let me know
Thanks for reading, it's good to be back! :)
Scott
Top comments (4)
Scott,
Solid advice, my man! The most value I personally received from this is looking up "Good First Issue". I have had a very hard time finding active open source projects. If you havent written one already, I would be interested in a blog not just about contributing but about the most efficient ways to FIND active open source projects. I haven't seen to many blogs about that, and it might set other developers ahead in the employment game!
Hey Matthew!
Thank you so much for reading the post and sharing your thoughts. It means a lot to me :)
So, I have written a blog post about contributing to open source scottistern.com/how-to-make-your-F..., but it doesnt really deep dive into HOW to find a project like you're requesting. Ill go ahead and get writing that, thats a great idea.
But so you don't have to wait, let's get this done on here. Are you looking for frontend work or backend work?
Hi Scott,
I'm open to both, but mostly front-end work. I'm a full stack developer with a lot of experience working with Rails as a back-end API, but I really enjoy the front-end more using JavaScript / React.js
So I think eslint is a great first open source project. The code base is organized and the community is very active and helpful.
I also recommend Gitlab, everything is open source and you can pick between frontend issues and backend. The engineers at the company are more than willing to help get your local env running and help with any questions.
Does this help?