When I enrolled in The Flatiron School, it was so much more about getting a job than anything else. I already knew a lot about code from my 2 engineering degrees, however the internet wasn’t really my wheelhouse. I had some work experience from my time at Lockheed and sailing with the Logos Hope, but it was time for a remote job, so I thought a remote coding school would help. Needless to say, after finishing the program when they offered me a part-time job helping other students, I was thrilled. It seemed right up my alley. I love solving puzzles and I love helping people. Getting paid to have people bring me their coding/environment/platform puzzles to solve seemed perfect. And it was for a time, but my time has come to a close. Here’s some things I’ve picked up along they way, helping over 3500 students in over 10,000 questions.
“Anyone can learn to code”
To say this is a fallacy or a marketing ploy is quite far from the truth. It’s equally as far from the truth to say that all you have to do is stare at your computer and you’ll learn. It is technically correct though, anyone can learn to code. And if you’re interested in learning to code, you should absolutely try it. But I’ve seen very unexpected people both excel and struggle while learning to code, so I would rephrase it a bit: “You can’t learn to code if you quit or don’t have time.” Learning any new skill from underwater hockey to ultimate frisbee takes time and dedication. You can’t give up if you (feel like you) suck at it, and you have to put in the hours. We’ve all heard the “10,000 hours theory”, but it doesn’t always hold true. It’s not automatic. You have to have people outside yourself that are there to push you on towards something better than where you are. Not to mention people who will applaud you for how far you’ve come. Community and Curriculum are equal partners in a real learning scenario and neither can stand on its own.
“Back End”, “Front End”, “Data Scientist”, or “Solutions Engineer”. It really has so much more to do with who you are as a person, as a worker, than what tools you’ll use, what languages you know, or what company you’ll work for. It’s so much more about getting that first gig than it is about being doing ground-breaking work or being best-in-class at anything. What you like has a great deal to do with what you’ll pursue passionately, so be sure to stay in tune with who you are as a person before you spend 10,000 hours on anything.
I’ve been asked a couple of times in job interviews something to the affect of “How do you plan to keep up with the changing technology in this field?” The first time I heard it, I was oddly thrown off by it. I’m always one to keep up with the news, but never really had to quantify it. While Reddit and Hacker News are not bad sources, I personally think Podcasts are a decent way to keep up to date. Plus, you don’t have to be sitting at your computer staring at a screen to absorb them (going outside is a huge plus!). Here’s a few I highly recommend, some of which are very bent towards my field, but all of which are great.
Steve Gibson, a Security Specialist with over 30 years experience, summarizes the week’s technology news. This one is a great source for fun stories as well as software vulnerabilities that you might not otherwise hear about. He’s also EXCELLENT at explaining complex systems like Apple’s FaceID and WhatsApp’s encryption scheme.
Katie and Ben talk about computing issues, mostly in the data science field, but often the concepts scale out to other areas.
Another one where the discussions are typically specific, but often applicable more broadly.
Ok, this one is probably not broadly applicable. Don’t judge me!
I’ve done hundreds of screenshares and seen as many desktops. “To each his own” is basically what it comes down to, but it’s always good to be able to save a whole wad of 45 tabs and pick-and-choose which ones I want to re-open at a later date.
I only just discovered this one a few months ago and wish to high heaven that I had discovered it the day it was released. Cross-platform, cross-device; notes, links, lists, everything. I love it.
I’m one of the most distractable people I know. Ooohhh, shiny object! This helps me at least keep a handle on things. Lots of nice features.
Ever want to download something to a server, but you don’t have the right cookies in the command line (or the file is too big to download locally and then upload directly?)? Say no more! This extension will copy all the necessary cookies and headers into a
curl command that you can then paste into a terminal and it will download the file(s) you need right to the command line! Super handy when you want to download a few gigs of CSV files or text data.
As I’ve said before, I’m a
vim addict and love it to death. Sure, it has it’s downsides, but this extension is SUPER handy for people who’d rather keep their hands on their keyboard whenever possible.
Practice interviews with other people who want practice interviews. Reputation and feedback both ways, as well as provided problems and solutions.
Whether you’re looking for practice at front-end, back-end, data-science or all-around interviewing practice, keywords here should be ‘short’, ‘periodic’ and ‘focused’. You can’t do all the exercises, that would take a ridiculous amount of time. You’re better off building a project or something to show off. Seriously.
Just because you’re not learning Python (which you should) doesn’t mean you can’t use their visualizer (which you also should). Sometimes things in computer science and computation don’t make sense until you can see them. This helps you see them.
Several times students would get jobs outside the topics of focus of the curriculum at Flatiron and frantically look for material in their new wheelhouse. This is a good one-stop-shop for a lot of languages. Here, this takes the shape of “download a challenge, do it, then turn it in”.
Same as above, only lots of frameworks are included as well as videos are linked from here in addition to exercises. The whole ABC’s are here from Angular to Bitcoin to CSS.
This is another good one-stop-shop for lots of things from job boards to communications tools.
GitsGuts and GitForAges
One thing I’ve seen almost every student get hung up with at some stage/level/degree or other is
git. Emilie Xie gave a superb talk that gives a quick view of
git with the hood open. Michael Schwern gave a wonderful talk several years ago that is a bit deeper dive. I’d say the most important thing to know is how not to screw stuff up. Once you know that, you just muck around with it until it’s screwed up.
+Don’t be afraid to ask for help, but if you refuse to struggle on your own for a while, you’ll fail just as hard as somebody who doesn’t ask for help. Struggle, but also ask. Ask, but struggle first.
+Get a flipping duck already. Rubber Duck Debugging is what you should do at the end of your struggle before asking. Don’t ask without struggling first, but don’t forget to formally ask the duck before asking. It will help you ask in a much more mutually helpful way.
+If you’re afraid/frustrated/downtrodden by doing your own googling, you aren’t going to get anywhere. Why do you think Google even exists?
+Try it. You can guess, stipulate, and estimate all you want, but until you try it, you won’t know.
+Guess. Just because you don’t know, doesn’t mean you shouldn’t guess. It helps, I promise.
+You’re going to get frustrated, but remember, if it were easy, it wouldn’t be so lucrative.
If it’s called “Computer Science” it should be called “the Art of Debugging”. This is a deeply personal thing, and what works for you, you should keep doing. You can read test results, (re)write tests, manually emulate the tests, and
console.log until the cows come home. However, if you can’t come up with an interesting, new, or nuanced way to quantify and debug a difficult problem that’s stumped multiple people, then you probably won’t get to the bottom of it. There’s no way to teach that from paper or in a classroom, but you do have to have sufficiency in 2 things, only one of which is solely up to you: determination and time. If your project is on a deadline, truly solving the problem might not be as important as using a workaround to make a deadline. But if you are determined to get better at debugging, helping other people solve their issues is a really great way to improve your skills. Environment issues are always tricky, but also the most satisfying to beat (or watch somebody beat them).
Learning by Playing
We’re all born scientists. Experimenting with bodies, blocks, balance, and bugs. But sometimes we forget that we humans learn best when we’re playing. Especially for some who were classically educated in a “less than fun” environment. Learning to code is no different. Figure out what’s “safe” and then just explore. Feed your curiosity and always let your imagination run wild!