I’ve always been very open and honest with my struggles with computer science in an effort to document my journey through this twisty and windy field.
For so long, I had put off taking any initiative outside of class to try and learn any computer science related things, specifically out of a fear that I wouldn’t do it “right” or I wasn’t “smart enough” to process it.
In December, I dual booted my laptop to run both Windows and Ubuntu, but decided I would never ever touch Ubuntu again after fiddling around with it for 10 minutes and finding it horribly disgusting.
But with my move to DC and my newly found CS internship, I’ve found this sudden new vigor and confidence in learning actual CS things.
I’m really proud of myself for doing these things, and even though it seems kind of minor, it’s a really big character development for me.
To start off, I started just opening up Ubuntu rather than defaulting to my usual Windows. I had talked with Raymond previously about “making Linux pretty” since that was my biggest turn off from the moment I had originally booted it.
For me, the hardest part is figuring out where to start. I started scouring sites like Reddit to try and figure out what the CS Bros recommended. I eventually found a post that recommended I downloaded a tiling manager. At this point, I was already somewhat familiar with the idea of tiling managers, as Raymond had raved to me about the power of them in comparison to the shitty window managers that I had been exposed to. After doing more research, I ultimately settled on i3.
Before downloading it, I watched a series of videos (x, x, x) to help me get more acquainted with i3 and how to use it. Along with installing i3, I also installed vim in order to customize i3, per the instruction of the videos. After using i3 for a week, I can confidently say it feels SO much better than what I’ve previously been doing. Having split workspaces to essentially visually sort out my mind and thoughts is incredibly convenient and something I didn’t know I needed in my life. Also, it was really nice not having to move my hand to my trackpad to switch tabs and applications, as well as having automatic resizing of windows and being able to place them vertically or horizontally or even collapse them.
But then I decided I needed m o r e. I moved on to installing vimium so I could continue the trackpad-less experience even in my browsers, which has been…an absolute gamechanger. With every package install, I felt my pull into the CS Bro world grow stronger and stronger, as I slowly descended further into the very realm I swore I would never join.
In addition to this, I’ve been making an effort to practice coding every day, even if it’s just barebone basics. I created accounts on LeetCode and HackerRank and have been doing their “easy level” questions to try and build up my confidence in my coding abilities. After doing a question, I always check the suggested solutions and discussion section to see what I could’ve done to improve my code, documenting new things that I just didn’t know about into a MarkDown file in order to keep track of ~cool CS things I did not know about~. Right now, I’m working in Python, but I hope as I increase in difficulty, I can start coding in C++ since I know it’s pretty important especially for competitive coding (not that I’d ever do it, but it’d be neat to answer q’s in it.) I also have been reading books like Cracking The PM Interview since I don’t know much about PMing and such, but so far it’s been an interesting read and I’m really happy I picked it up!
I’ve also been planning to watch The Missing Semester of Your CS Education lectures, which were actually the inspirations for why I started using Ubuntu again in the first place. (The first lecture says that they’ll be using Linux for the most part, which made me be like ‘FUCK SHIT I GOTTA LEARN LINUX NOW’ and here I am, one week later, with a preference for my Ubuntu boot.)
And, I don’t want to jinx myself, but I really want to try watching 6.006 lectures on OCW since I know pretty much nothing about algorithms and it would be nice to know where to start. I did okay in 6.042, 6.006’s prerequisite that taught Discrete Mathematics, but I wouldn’t say I’m the most confident in it. I should probably study 6.009 (Fundamentals of Programming) instead of 6.006 if I’m being honest, but we’ll see how this summer goes.
Honestly, I don’t know if I’ll get to these goals in time, since I know that my internship will have me working super duper hard since I’m going to be learning React, TypeScript, and basic HTML/CSS and making apps and alllll of this stuff. But I really want to work hard this summer.
Overall, I’m really proud of myself for overcoming these initial fears of “not being smart enough” to try and do some CS things on my own. I was talking to Raymond last night about how I essentially now spend the majority of my days either coding, reading about code, writing about code, or thinking about code, with the occasional YouTube and Reddit break here and there. And the scariest part was that I found it really fun. I was thoroughly enjoying my deep dive in to CS and exploring all these little nooks and crannies I had originally been too afraid to traverse. I know I have a long, long way to go until I really reach my full potential, but I’m really happy to see how far I’ve come in this process. I hope that with each day I gain a little bit more confidence in my skills, as I know that my confidence is what most likely will hold me back from pursuing what I want to do in CS. I’m just really happy I have a place to put all this progress, and a place to show y’all (and myself) that you can really pursue whatever you want, regardless of your experience.
So come along with me as I go on this funky dunky journey to becoming the CS Chad I’ve always dreamed of being! And if you have any tips or recommendations, they are always greatly appreciated.