Skip to main content

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.
Post a Comment

Popular posts from this blog

TextMate Tutorial: How to add a Strikethrough keybind to your Markdown bundle

Markdown is awesome for quickly generating Readme's on Github. After looking at other projects using the strike tag, I've decided to create a custom keybind for it in my TextMate Markdown bundle. Here's how:

1) Click the + sign on the bottom left and click New Command.
2) Paste this into the editbox and make sure you name your command "Strikethrough".

For the input field, select WORD in the drop down.
For the output field, select "insert as snippet".
As for the keybind, you can totally map it to whatever you're comfortable with but I chose Command-D as it is the same thing in Microsoft Word.

Cheers,
Jaime

Using Git Hooks: Prepare Commit Message to automatically prepend branch names on commit messages

When you're practicing branch by feature with distributed version control, typically you'll get assigned a ticket or issue and that ends up being your feature branch. Instead of always typing in the branch name in every commit, you can edit your Git hooks (specifically prepare-commit-msg).

Assuming that this is a brand new git repository:

mv .git/hooks/prepare-commit-msg.sample .git/hooks/prepare-commit-msg
vi .git/hooks/prepare-commit-msg

Edit the file by commenting out what was originally in the file and then add this:



Now, whenever you make a commit, it should show up like this in the log:



Since GitHub and Bitbucket both support Emojis inside commit messages, you can do something cute like this



Want more emojis? check out the Emoji Mardown Cheatsheet!

NodeJS Hack Session: MMO Pokemon with NodeJS/WebSockets

The primary focus of this proof of concept is to determine how easy it is to build real-time web applications for all iPad, iPhone, droids, Safari, Chrome users on top of NodeJS (non-blocking event driven server side Javascript platform). The proof of concept was built within 6-8 hours including the following:

Uses Express framework for server side Javascript development (inspired by Rails / Sinatra / Django)Uses EJS for templating language (much like Django templates and symfony) -- allows partials and passing parameters into partials like symfony PHPReal-time chat using WebSocketsArena Queueing System for real-time competitive matchplay using WebSocketsHTML5 AudioCSS3 transitions for all hand cards, tappable cards, transparent panels, rounded corners, drop shadowsFallbacks for Firefox, IEFirefox/IE will fall back to Flash socketIE will fall back to XHR long poll if the user doesn't have Flash installedNoSQL CouchDB for fetching users and soon cards, achievements, friend associat…