Tuesday, February 11, 2014

Crunch Time



With possible interviews looming in the future and my resume poised for release into the job market, I've been reading everything I can get my hands on pertaining to programming interviews. My familiar search of "Programming interview questions and exercises" that I've typed into Google a hundred times, autofills and brings me to a long list of purpled visited web pages that I've grown familiar with. My Chrome bookmark bar has a folder labeled "Programming" with more subfolders than anything in my bookmark bar and within that, the "Interview Stuff" folder holds the most links in any folder. As I'm reading about the Apache framework for the tenth time and attempting to memorize it for server design, I start to wonder if everybody else is doing this to get an interview. Not everybody is doing it but if there happens to be even a few, I have to look better than them and be that much better prepared.

I buckle back down and start writing out a linked list problem on my whiteboard and walk my bed through the steps of inserting and deleting elements. My bed retorts with a witty question about wether I know how to find the half way point of that list on one pass; I draw a blank. The bed may have gotten the best of me for now but after I look it up one more time, I'll know it for good. As I'm reading through it I think about how I'm not going to have my computer to look anything up during my interview and how intimidating that is. I tell myself that they couldn't possibly expect me to have memorized every single thing from these book but a bad feeling lurks inside me as I imagine a candidate who does know all of these questions. The MIT graduate would easily breeze through these questions without breaking a sweat and would be charming, wonderful, and have a portfolio that could serve as dissertation. Back to the white board and my bed.

I've found myself in this cycle for the last couple of months and am memorizing a lot of useful information but am always on edge. I can't wait for the comfort of knowing that I'm working somewhere and can start contributing real software. It's not that I feel these study times aren't valuable, it just they're not producing actual products. I feel like a Padawan who must learn the tools of being a Jedi before combining them to be a badass force wielding programmer. After being hired I can unleash my programming force powers and defeat the dark side of the force (inefficiency). Alright, this might be a little too much fandom in the Star Wars area, but it gets the point across. This stage is nerve-racking and invalidating but I feel like it's a necessary evil.

Something else that I've noticed from having read a few programming interview books such as Cracking the Coding Interview and The Google Resume is how much my school didn't teach me about programming. The one conversation that you usually hear from liberal arts majors after college is, "at least you have a skill that you can use" which is partially right. In undergrad, I learned the valuable skill of programming, but if I wouldn't had done extra research and done outside projects I never would had known enough to be applying for jobs. Undergraduate work teaches you close to nothing that you need to know for programming actual applications and if anybody has ever attempted to create usable open source software, you know what I mean when I talk about the countless hours that I've spent reading online articles and watching Youtube videos to learn how to patch a project together. It's kind of frustrating to think of how much money that I've spent on my degree and how little that I've actually learned from the school. The school did do one amazing thing for me though, and that's that it opened my eyes to the possibilities. Without it, I'm not sure I would had ever pursued the number of projects that I have.

A few more months and I'll be back in the states and ready to start interviewing and now is the time to crunch and remember that my hard work will pay off (hopefully). Good luck to anybody else who is at this same stage of your career and know that there are others working just as hard as you and if you're an employer, I'm ready for whatever you've got. Looking forward to demonstrating what hard work I've put into this.

Thanks,
Joseph Priest

Wednesday, February 5, 2014

Programmer's Jobs Search

Hello everybody (in the words of the great Dr. Nick)! It's been sometime since I've written here mostly because of work and school it's become my mission to regularly make contributions to this blog. While I may have failed in the regular part I will make posts because I need a brain dump for all of the programming concepts that I've learned recently.

I've noticed a trend about these posts and that's that they are only half about programming concepts and half about a programmer's lifestyle. This period is a transition from school to work but it's a subject that I can't seem to find very many blogs or posts about so I think it's excusable to be half and half on the subject matter. 

This week's post is about finding a programming job coming out of undergrad and the military. I'm going to try and tailor this more for just the undergrad experience because I don't think there are many computer science majors that joined the Marine Corps. For the last few weeks, I've been submitting applications and altering cover letters to fit the needs of each company and have received a rainbow of advice. I've heard a lot of weird advice lately but the most consistent and crazy one is that you should lie on your resume. Nobody that I've spoken to has told me to just lie but they all do the same chuckle and indirect head movements and say, "everybody embellishes a little bit." I can see somebody marking up their resume from something like, "programmed one time in C," to "familiar with C" as long as they have a large basis of programming knowledge because they could probably learn it quickly, but having programmed once in a language doesn't qualify you to say something like "Expert C programmer."

These statements seem like gross exaggerations of the truth and could be hurting the job market. Since so many people are embellishing and website all over the internet are suggesting to do it, it leaves the truthful applicant with only one choice; lie. If everybody is lying and you're an entry level programmer with barely any experience, it would be impossible for your, "I worked with Java once on a project" to compete with somebody else's "Java master-->barista he man."

While the last part might be a bit of a stretch, the problem still holds validity in a wave of applicants who are not sure to fib or tell the truth. I've decided to take the high road on my applications and only make claims that I can back with projects that I've hosted on Github. This seems legitimate because I can write an abstract about the project and if somebody thinks that I'm embellishing they can just check the project for themselves. 

Though I'm in week two of my job search, I remain faithful that my method will be rewarded even though my application might be against "master coders" who are fluent in every language imaginable. I've received a few reply's for my applications but they are interested in hiring immediately and I won't be out until early June so unfortunately I have to wait. If you happen to be an employer who is browsing through this to gauge me as a candidate, I'm legitimate! I've been practicing coding on a white board for the past few months to get ready for an interview so please give me a shot in your office and I promise you'll be pleased. If you're just another programmer facing some of the same issues, stay strong as there are many of us that I've spoken to from my college who are experiencing the same uneasiness; we'll prevail.  

Once again, I look forward to hearing back from anybody who has opposing or similar ideas or just wants to chat. I love networking and even if you're from a drastically different walk of the programming life, drop me a line. 

Thanks,
Joseph Priest