Saturday, 26 April 2014

With a little help from my friends…

Much to the disgust of my nearest and dearest, I am not the greatest fan of the Beatles, however, I am happy to use this particular lyric of theirs as the title for this blog post title because can definitely relate to this song.

Awww, fwend!!
I am fortunate to know some cool people who already work as computer programmers and who have helped me at various stages of this adventure to try to become one myself.  In my previous post, I wrote about my decision to take a conversion course at university in order to start my path of becoming a programmer, however, many people have taken alternative routes into the industry that have not involved formal computer science qualifications.   Having never been a journalist or reporter of any sort, I thought it would be fun to try my hand at interviewing one of my closest friends who has recently become a developer and turning it into a blog post! 

Quick Profile

How we met: At the first day of university, we were put into the same “college family” - this was kind of like a mini-social-network, set up by our college so that freshers would get to know at least a handful of other freshers (“siblings”) .  Our “parents” were second year students, who were meant to look after us and help us settle in to university life.  Like some families, we have not done a good job of keeping in touch with most other family members, but this brother and sister have been firm friends since our first family gathering.

Programming experience: Dabbled in HTML and CSS as a teenager, some C and Matlab as part of university courses, less than 1 year of Python and Java.

Job Description: Android app developer at Detroit Labs

Life before becoming a developer: Studied a lot of Mathematics – first at the University of Cambridge (undergraduate), and then at the University of Arizona (postgrad).

Favourite dessert: Banoffee pie 

Other blogs you follow:
  • Android Developers Blog ( - official Android news and announcements. 
  • Android Weekly ( - weekly newsletter, combines platform news with tips & tricks. 
  • Colossal ( - really inspiring art/photography blog. 
  • James Allen on F1 ( - my sporting fix. 
  • Gamasutra ( - video game industry news, tech articles and opinions.

Newb_girl: How did you get into computer programming and what was your learning path like?

Stuart: I’ve always enjoyed tinkering with programming. I remember using Logo a lot in primary school! When I was 15, I picked up HTML and CSS for fun and built a few websites in Notepad. These included a site for my local scout group, and a page where you could download a P2P version of the board game, Kensington that my friend Steve wrote in Visual Basic.  

During undergrad, we had the opportunity to work on computing projects in C designed to test both our mathematical and programming skills. This was my first exposure to a 'serious' programming language (though we were provided with a customized library that shielded us from some of the lower-level functionality). I completed as many of these optional projects as possible, because I liked that (a) progress was easily measurable, and (b) programming both required and rewarded a structured and logical approach to problem-solving.

In grad school, I used the MATLAB programming language and environment daily in my research. The MATLAB language is procedural and relatively high level programming language, which allows mathematicians, physicists and engineers to simulate model problems without needing extensive computer science backgrounds.

After graduating, I decided to leave academia in pursuit of a career path involving more immediately applicable work. I like to feel I have achieved or created something at the end of every single day. Based on my previous experiences with coding, I felt that working as a developer would satisfy this desire.

After my PhD, the first widely used programming language I learnt was Python (as I knew it was extensively used in the scientific community) and I made a few small projects of my own.  I used the same Codeacademy and Udacity courses as you, as well as the internet at large.
Newb_girl: How did you land your current job, and why do you think they picked you for your current role?

Stuart: After moving to Detroit last year, I simply googled companies in the area to get a feel for what the pool of employers looked like.  Not surprisingly, the Detroit area is home to a lot of companies related to the automotive industry, but I also found out that there is a vibrant tech scene comprised of many younger companies. I was wary of applying to very early start ups, since I assumed they wouldn’t be able to spend the time training someone from (almost) scratch, so I decided to target slightly more mature tech firms.

A month or so into my job search, I came across a tech teaching initiative in Detroit called Grand Circus that hosts 1-2 technical seminars each month.  I attended an evening talk on the architecture of the internet, purely out of intellectual curiosity (I did not really anticipate that this would eventually lead to a job!).  The talk was run by Nathan Hughes (co-founder of Detroit Labs, where I now work) who was an excellent instructor and obviously passionate about his field.  After the talk, I checked out Nathan online and discovered his association with Detroit Labs. Labs makes an explicit point of not being hung up on resumes, instead prioritising cultural fit and the ability to pick up new concepts when assessing prospective employees. The cultures outlined on their website definitely resonated with me, and I felt their approach to hiring would suit my planned transition into software development. Attending a second talk by Nathan soon after, titled "Life of an App Developer", confirmed my positive impressions of the field in general and Detroit Labs in particular. I applied there soon after.

The application procedure at Detroit Labs is not totally standard.  The first step involves sending an email saying hello, and filling in a “get-to-know-you” questionnaire rather than a resume, which is then emailed to every employee to gauge your cultural fit with the company.  If the reaction to the get-to-know-you is positive, then you are invited for a cultural interview with existing team members to talk about life and your motivations, and to find out a bit more about the company.  Having now conducted some of these interviews myself, I would like to stress the importance of researching the company you are applying to before heading in to an interview. When I prepped for interview at Labs, I made sure I was familiar with their app portfolio, listened to podcasts the co-founders had recently been guests on, etc. If candidates don't do this, it's hard to believe they are excited about joining us.

If you are deemed a good cultural fit, then the last step is a technical interview.  This typically involves some relatively straightforward pre-interview coding exercises that are extended in the actual interview. The objective is really for the interviewers to see how a candidate approaches new problems and to check out their coding fundamentals (good code structure, refactoring, logical approach to implementing several new features at once, etc.).  During the interview this seemed like a daunting task, but because I had written clean code (broken into smaller methods, with checks for invalid input) I was able to incorporate the changes relatively easily. This is another must-do for interviews - if you are writing code, make sure it is structured and commented very well!
Newb_girl:  Tell us a bit about a client project you've worked on 

Stuart: I'm currently working on an app for an energy company that allows customers to pay their bills, report power outages and receive updates on their services.  I've only been on the project for a couple of weeks, so I've had to spend a fair bit of time familiarising myself with the existing codebase.  I've been asking lots of questions and trying to figure out why previous developers chose the structure and implementations they did. So far most of my work has been on bug fixes, but we are now beginning an overhaul of the entire app design.

Besides learning Java, the Android framework, and a bunch of other tools oft-used by programmers (e.g. version control), I've also had to learn a bit about the world of business, how companies work and what they are driven/motivated by.  It's also interesting to see how the decision making process differs within a large company vs at the very agile Detroit Labs.

Newb_girl:  And now for the cliched closing question: what do you wish you knew before you did your career change and what advice would you give to programming newbies?

Stuart:  I think my advice would differ depending on how much people know already.  For someone who knows absolutely nothing: I would say it's best to sample lots of online learning resources, and find one that teaches in a way that complements how you learn.For someone who knows a little bit already: when I was at that stage, what I found difficult was bridging the gap between writing a Tic Tac Toe game and understanding/working as part of a project that has thousands of files and moving parts.  I would suggest searching for user groups (programmer meetups, often categorized by language or application area) in your area, and then attending a few meetings to see how your language of choice is used by professionals.  It’s fine to not understand what is going on at first, but immersing yourself in the environment will help you learn (and make connections), just like living in a foreign country helps you learn and absorb a new language.  

Also, sign up for a free GitHub account and familiarise yourself with Git – this is a popular version control used to track code changes and enable multiple developers to collaborate on codebases.  Add your personal projects to GitHub repositories to (1) get used to the workflow and commands, and (2) build a portfolio to demonstrate enthusiasm and commitment when applying for jobs.  Because many open source projects, both large and small, host their code on GitHub, you will also be able to check out custom libraries for your primary language and begin to contribute bug fixes and suggestions to real projects.

Newb_girl: Thanks for sharing your advice, bro!

No comments:

Post a Comment