Wednesday, November 24, 2010

What was your first programming job and were you qualified?

My tale starts when I went in for a job interview at the Vancouver Film School. The position I was applying for was "Intermediate Developer" -- Something I was completely unqualified for. The role of an "Intermediate Developer" would be to write internal applications on a LAMP stack and support the Senior Database Developer with any database scripts for different departments (admissions, human resources, accounting, etc). My first interview was a generic HR meeting. Incidentally, I studied everything about the different programs of VFS prior to meeting with HR and she asked me, "so what do you know about Vancouver Film School?" -- Boom. I recited everything that was on Wikipedia. I even listed out all 10+ programs from acting to game design to entertainment business management. I felt like I completely dominated that interview.

That very day while I was on my way back to BCIT to finish off a project, I was called in for another interview the following day. This was with the Senior Database Developer--in other words, my future boss and mentor. The interview was held at the VFS Cafe (392 W. Hastings) and it was a super casual conversation. He asked about what projects I did at school, what my favourite text editor was, and technical questions about MySQL that I didn't know but I gave it a shot. I remember questions regarding JOINs and subqueries--Things I learned at BCIT in an Oracle course. While on my way to the bus loop (130) to go back to BCIT, I got a call from HR with an offer. I accepted it.

As an Intermediate Developer, I ended up doing the following:
- Being introduced to Mac OS X's awesomeness (I was a PC guy)
- Being super comfortable with terminal, ssh, and MySQL command-line
- Exploring the business value of better user experience (ajax, animation, rich components)
- Optimizing sql queries
- Importing/exporting data between different environments
- Developing internal web applications that help the business users with their day-to-day needs (tracking systems, inventory systems)

5 years ago, the technology scene was basically "Ruby on Rails vs PHP". Along with Ruby on Rails came PrototypeJS and Scriptaculous for making "Web 2.0" sites. There was no jQuery. MooTools and Dojo had no documentation and were in their infancy. The only solid UI library with sufficient documentation was YUI. That said, I took on the initiative of implementing rich user interface components (autocomplete, data tables, modal dialogs, drag drop) on existing internal web applications. Student searches were far more productive and intuitive for the business users. After doing several upgrades on the user interface, I found myself transitioning into a front-end developer instead of working on database-related work. I was able to do it but my passion for interface development was growing.

After a year of working at VFS, I asked myself, "we have all these internal systems on different locations, it's gotta be painful for the business users, why not just create a system that integrates all of them?" After the idea sparked--a web application of drag-drop modules (Web dashboard) that are mini-views into different systems. This dashboard would be fully customizable, as in, you would be able to add/remove specific modules from your dashboard and add cooler ones, such as, a weather module or a YouTube search module. Not only that, it was fully integrated with the web mail client. Ultimately, this system was the one stop where employees could go for their daily tasks: student searches, employee searches, cafe menus, support tickets, upcoming events, bug tracking, google maps, google search. The system was setup to be able to scale out with new modules. This seems like an easy-mode system to develop nowadays but 5 years ago this would be considered "heroism". iGoogle wasn't even around and the only thing that resembled it was Pageflakes or Netvibes.

After two months of development, it was officially launched internally to the business users and everyone loved it. There was widespread adoption because it made their work lives easier.

After a year and a half of employment at Vancouver Film School, I soon realized that I didn't want to optimize SQL queries, do backups, or import/export data between different environments.

I wanted to do front-end development.

To answer the question, "was I qualified?"--The answer is "no". I was a kid straight out of BCIT with only general programming knowledge. I wasn't equipped with the mental agility to solve "real world business problems". It was one hell of a ride though -- The feeling of knowing that your work has business value and your users are happy!

Things that were awkward at that work place:
- No version control for all internal systems (svn/git)
- No continuous integration
- Tightly bound code to several God objects
- No functional specifications
- No API documentation
- No ORM for a massively complex universe of internal systems

What was your first programming job and were you qualified?

Good luck and have fun,
Jaime Bueza

Jaime Bueza is a software developer in Vancouver, British Columbia, Canada. He has developed web applications for Nintendo, Starbucks, Electronic Arts, Ritchie Brothers, Kiwi Collections, Cox Communications and Microsoft. When he's not developing useful software that constantly evolves with business requirements, he's creating tutorial videos for aspiring front-end developers.