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.

Tuesday, November 23, 2010

Unionization for Developers and Designers

There was a time in the past where I actually thought developers and designers would benefit from unionization. I realize now that it would shape a devastating reality to the overall advances of technology and design. Unionization would paralyze our ability to innovate because the level of protectionism inherent in unions encourages laziness.

By looking at different disciplines, such as, carpentry and construction, we can observe that there hasn't been any real innovation in toolsets. Carpenters still do not have any robust tools that'll make their jobs 100x more convenient. I compare that manual labour to a programmer writing in binary just to build an eCommerce site. It is puzzling how other technology sectors have little to no progression. Another example is economic airline technology--20 years ago we had super sonic jets and now we're stuck with slower airplanes. How do they fix this problem? They improve the fuel efficiency in the engines. Aircraft technology needs another Howard Hughes--someone who can really push the industry in the right direction and really make lives better. Without Howard Hughes' achievements, we would never have had commercial flight.

In software, there are many heroes that have Howard Hughes' determination to prevail: Steve Jobs, Mark Zuckerberg, and Bill Gates. While Steve Jobs has been leading the efforts in consumer software and hardware (computing and mobile), Mark Zuckerberg has been leading the efforts in social networking. Facebook has revolutionized the way humans interact with each other by allowing people to build new relationships, rekindle old relationships, and share life's timeless memories through videos, photos, and status updates.

One of the primary reasons I design and develop software is because the environment changes constantly. It's an evolving ecosystem to be in. Problems are surfaced and solutions are executed against those problems at different angles. It's fast-paced.

Imagine a world where developers could work 8 hour days and be confident about his unfinished/untested work. What about his teammates? Don't they depend on his code being feature complete? Nothing would ever get done because of the level of protection unions provide people -- It's a shield for the lazy.

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.

Monday, November 15, 2010

Leadership

Words by Lieutenant General Hal Moore:

There are four principles in leaders conduct in battle. First is three strikes and you're not out. There's 2 things a leader can do, either contaminate his environment the unit with his attitude and actions or he can inspire confidence. He must be visible on the battlefield. He must be in the battle. Self-confident, positive attitude, must exhibit his determination to prevail no matter what the odds or how desperate the situation. Must have and display the will to win by his actions, his words, tone of his voice on the radio and face-to-face, his appearance, his demeanour, his countenance, The look in his eyes, he must remain calm and cool--no fear. He must ignore the noise, the dust, smoke, explosions, screams of the wounded, the yells--the dead laying around him, that is all normal. Must never give off any hint or evidence that he is uncertain of a positive outcome even in the most desperate situations. Again, the principle that must be driven into your head and your head's of your men is 3 strikes and you're not out.

And the corollary principle which is interactive with one is there is always one more thing that you can do to influence any situation in your favour, and after that one more thing, and after that one more thing, etc.

In battle, I periodically detach myself mentally for a few seconds from the noise, the screams of the wounded, the explosions, the yelling, the smoke and the dust and the intensity of it all and ask myself: what am I doing that I should not be doing and what I am not doing what I should be doing to influence the situation in my favour?

The third principle is when there's nothing wrong, there's nothing wrong except there's nothing wrong. That's exactly when a leader must be most deliberant.

Finally number four, trust your instincts. In critical, fast moving battlefield situations, instincts and intuition amount to an instant estimate of the situation. Your instincts are the product of your education, your reading, your personality, and your experience--trust your instincts. When seconds count, instincts and decisiveness come into play. In quick developing situations the leader must act fast impart confidence around him. He must not second-guess the decision--make it happen. In the process, he cannot stand slack-job when he is hit with the unexpected. He must face up to the facts, deal with it, and move on.

Inspirational words for team leaders on any project.

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.

Sunday, November 14, 2010

Why Boxing Is In Decline And Solutions To Increase Viewership

After watching tonight's fight between Manny Pacquiao and Antonio Margarito, I decided to explore why boxers are able to duck out of fights (Mayweather). The boxing federation, as a company, has it structured all incorrectly. In all honesty, boxing is in a state of decline and the only real way to re-energize the fans and really get some growth in the boxing community would be to revise the fight policies.

In the UFC, fighters are employees. The organization constitutes regular fight schedules so that the fans of the sport can be assured consistent fights (something to reliably look forward to). Conversely, in the sport of boxing, fighters are treated as separate companies where they're able to decline fights and employ an army of lawyers to ensure they win negotiations.

While Floyd Mayweather is able to stir up the declining boxing fans with his ridiculous galavanting and trolling in the short term--the long term integrity of boxing as a sport suffers. Slowly but surely fighters with dishonourable, immature behaviour will transform the sport of boxing into a WWE (World Wrestling Entertainment). Incidentally, a sport has always been about the people that are passionate about the sport.

Moving forward, I believe that if they revised the fight policies as so:
  • Fighters should be treated as employees, not separate corporations. There shouldn't be 'negotiations' that involve lawyers for an event.
  • Fighters should not be able to choose their opponents. Boxing allows boxers to hand-pick their opponants to inflate their win records.
  • Fighters should be disciplined for racial discrimination as an employee of the World Boxing Federation.
  • Regular fight schedules so that boxing analysts have better data and fans are consistently given the entertainment that they want.
  • Standardize Olympic-style testing to prevent fighters from 'juicing up' (steroid usage).
  • Reduce from 12-rounds to 8-rounds to spark more action.
  • Reduce the number of weight divisions to match UFC-style weight divisions. There are far too many weight divisions in boxing--this would increase the pool of fighters competing for championship titles.
  • Change point scale to be binary (0 or 1) instead of out of 10 from each judge for simplicity.
  • Employ stricter referees for stoppages. If the fighter has a closed eye (swollen), the fight needs to stop ASAP for their own health safety. It's a sport, not a murder scene.

With these revisions, boxing could theoretically become more action-packed, competitive, and structured in a way that helps the boxing community's growth and increase global viewership.

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.

Has Ajaxian Gone Down Hill?

Recently, Ben and Dion (the main guys who started Ajaxian) have left Ajaxian's helm to concentrate on other projects. One thing I've noticed is that they've reduced the frequency of posts to about three times per week. Prior to Ben and Dion leaving, there were sometimes 2 posts per day. Furthermore, since the articles on Ajaxian aren't that interesting, I've gone ahead and subscribed to Dion Almaer on twitter. Dion posts about 10 tweets a day on average with really interesting works out there in regards to front-end development.

Twitter is the #1 source for technology and design trends. I barely even open reader.google.com anymore as 140 character tweets can be more informative than walls of text.

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.

Wednesday, November 3, 2010

Job Hunting Tips for New Developers Out of University

Open Source projects on your resume are more important than your co-op or education. I've seen brilliant developers that shatter walls of constraints by being strictly committed to the vision of the project. If there was ever an issue that constrained the team's ability to move forward, there was always that developer hero that would step up to the plate and do what he could to resolve the issue. These types of developers don't play by the rules of the game. They change the game.

Software development companies don't want drones. Drones are people who have jumped through the hoops, ran the courses, and are ready to get paid. Drones aren't creative, confident, or committed. Once a company starts to accumulate too many drone programmers, your company starts to grow "corporate arthritis". Corporate arthritis paralyzes your company's ability to deliver your products efficiently with a degree of quality and reduces your company's ability to keep your customers happy.

The first thing a technical hiring manager will do is Google your name. Then, he or she will try to figure out what your Github is. By looking at how many pull requests / tests / gists / repositories you have, we're able to discern the following characteristics:

- How you write your code
- How you inspire your teammates through your ideas and participation
- Why you make certain technical decisions in your projects
- Why specific decisions need commitment from your teammates. Are you able to get commitment out of your teammates on volunteer software development?
- Can you really convince your teammates that your technical decisions steers the team in the direction that best suits the teams' needs?
- How committed and passionate you are about your discipline
- Do you act as a mentor to your teammates?

Since open source software development is solely based on building a shared vision and aligning everyone's personal masteries (design, development, quality assurance, technical writing), you're essentially putting yourself as a developer on the map for smart companies to hire you. There's nothing more important to a company than hiring heroes that really understand the meaning of shared vision, commitment, dedication, hard work, creativity, inspiration, and mentorship.

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, 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.