160919 – 161002 — Total classroom hours – 23
Well, apparently Im doing something right, because I’m currently two weeks into an internship! It’s with an independent contractor, working on two client-side Rails apps. I’m working with him 4-5 hours a week, so it’s not too taxing on the already tight school/work/life schedule. It’s a completely different beast to work with an existing code base, especially when the other person built it, and knows it forwards and back. As I’m sure is common with a good portion of web development jobs, a lot of what I’m doing is dependent on my abilities to even find the necessary file that needs to be refactored. I think its actually a legitimate ‘test’ for someone in my position, something that evaluates my problem solving skills right out of the gate. When looking at a locally-run web app, how can I identify the problem and find the necessary file in a codebase with 1000+ files. Oh, and did I mention that the entire app itself is being refactored, admittedly by mentor in a very ad-hoc way, so one quarter of the existing files are non-functioning. Im getting skilled at mining for files.
Once I’ve actually found the file, with him literally over my shoulder, knowing exactly where it is in the first place, now I have to identify the code to be refactored. This has two factors that make it interesting, the first is that I have no idea how this file was written. It. Is. Full. Of. Partials. As it should be, I suppose. The idea of DRY programming is that if theres a way to not repeat yourself you utilize it. Digging into a file and its partials just ‘spices up’ the whole process on my end, which, ultimately, I appreciate. The second factor is that the entire app has been refactored from .erb to .haml. Ultimately, it’s not that much different, it’s doing essentially the same thing, but its just something that I’ve never worked with before now, and it’s a bit daunting to take it all in, especially with the other elements that are being introduced to my workflow.
AND! Those new elements are vim and tmux! I’ve known of vim for a while, but the idea of moving that direction was a bit spooky to me. Then, in the course of one week, I was told by two different people that I should give vim a try. I started digging into it and quickly found that vim has a built in tutorial (next time you’re in the terminal type ‘vimtutor’), so thats pretty awesome. The tutorial took me about 45 minutes to work through, and once I was finished I was pretty confident that I could start editing files with vim without causing too much damage. It’s still not part of my everyday workflow, I’m just quicker with a text editor, like Atom. What I did was set vim as my default editor for my commit messages and terminal aliases. This way I have to use it a little bit every day (I’ve been making a lot of terminal aliases lately) and after a while I’m sure I’ll start using it on everyday file editing.
Tmux is also a super handy tool that seems to be widely used. In a nutshell, tmux subdivides your one terminal window into as many different independent terminal windows as you need. Before tmux I was doing a similar thing, only with tabs. I had my first tab as the standard terminal (file navigation, git commands, etc), the second as the server, and the third as the console. The same setup on every project. Now I can have all that in one window. My workflow was pretty good before the introduction of vim and tmux, but now its getting even better (faster). What I’m learning is that its all about your fingers never leaving the keyboard, and when you get really serious about it, your fingers never leaving the home row of keys.
Speaking of networking, I attended Rocky Mountain Ruby last week and it was a pretty great experience. That was definitely the first time I was in a room with so many other Rubyists ( I think thats a term…). I’m also pretty certain that I was one of probably less than a dozen non-working professionals in attendance. I’m sometimes surprised at how few students I come across at events like that, or even meetups. This industry seems to be all about the people you know, and theres no better way to meet people than to go to events where everyone has something like web development in common. Almost my entire web dev network has come from events and meetups, and I’m talking to those people about one thing or another almost daily. I’m sure this is something that is obtained with less effort when attending a brick and mortar code school, but when attending an online program like Bloc I have to go above and beyond to make it happen.
I feel like I’m on a good trajectory with everything so far. Finished the first half of school with time to spare, landed a solid internship, have an ever-growing network of fellow developers, and starting the second half of school with a bang. I’m looking forward to the next few months.