Wednesday, December 22, 2010

2010 Rundown by Jaime Bueza

2010 has been a great year. Here's a rundown of the things I did.

* Gave an introductory talk on NodeJS to the front-end team at Blast Radius
* Explored test automation with Selenium and NodeJS using SodaJS + Kyuri
* Created a free cross-platform app built on PhoneGap (CoffeeCheck.In)
** Iteration 1 Video
** Iteration 2 Video
* Contributed to the HTML5Boilerplate (Pull Request 209)
* Learned NodeJS (Express, npm, etc)
* Learned MongoDB
* Learned CouchDB
* Read "The Fifth Discipline" by Peter Senge
* Read "Getting Things Done" by David Allen
* Read "Rework" by Jason Fried
* Read "The Mythical Man-Month" by Frederick Brooks
* Read "Peopleware: Productive Projects and Teams" by Tom DeMarco and Timothy Lister
* Read "The Tipping Point" by Malcolm Gladwell
* Built a NodeJS Pokemon demo with HTML5/CSS3/JS/WebSockets
* Built a jQuery Omniture plugin
* Released a more sane way of doing IE6 Warning with localization
* Released Blast Mojo Framework: Episode 2 tutorial
* Released Blast Mojo Framework: Episode 3 tutorial
* Released Blast Mojo Framework: Episode 4 tutorial
* Contributed to Blast Mojo Lite, scalable JS microframework on top of jQuery
* Half constructed a World of Warcraft addon "Ninjalist" using Lua
* Quit World of Warcraft!

Upcoming goals for the new year 2011:

* Write and contribute more open source software
* Build some really kick ass test automation software
* Do more python projects (django)
* Play with more Tornado, Scala, Erlang
* Play with more Kinect hacks using libusb and NodeJS (Minority report h4x)
* Build more Android apps
* Give a talk on SodaJS to the technology team at Blast Radius
* Give a talk on WebSockets (real time apps) to the tech and front-end teams at Blast Radius
* Give a talk on NodeJS to the technology teams at Blast Radius
* Give a talk on regressive enhancement/polyfilling techniques to Blast Radius
* Give a talk on tips with SASS, such as, easy minification and deployment
* Give a talk on RequireJS or HeadJS to the teams at Blast Radius
* Give a talk on data-uri (base64encoding images) to reduce http requests with strategies for cross-browser functionality at Blast Radius
* Give a talk on how to use Git at Blast Radius
* Start company hackathons to improve mental agility for developers?

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, December 20, 2010

How to push forward as a large software development corporation

The Art of War has taught us that when a skilled general decides on a strategy to execute on, they either move quickly, or stay in a position that yields a tactical advantage over his/her enemy. Incidentally, we can apply the same concept in corporate culture. If you take a second to disconnect yourself from your environment, zoom out to a birds eye view, you'll realize how really slow your team is progressing in comparison to the rest of the world.

Naturally, human beings can only see what is in front of them and they need to be constantly reminded of where they are and how they're progressing within their environment. That said, dispelling the blindness of corporate software development is like fighting against an enemy on his own turf and consistently having a positional disadvantage.

The question we keep trying to explore is: what can we use as leverage against such a tough and determined enemy? This is a vicious opponent that not only flattens the spirits of your teammates but paralyzes your abilities to think quickly, act quickly, and move quickly.

If your corporate culture finds itself in quicksand, take a moment to really assess the situation: as time goes by, you're sinking to your inevitable death. In order to really get around your slow and painful demise, you need to use leverage. The answer I believe is in the tools. Tools provide leverage. Much like a lever, you're able to use a minimal amount of effort but exert an incredible amount of force. As a software developer, my job is to write programs that are supposed to be useful. I've decided to generalize the role of a software developer because we are essentially builders, designers, crafters, wizards of the arcane, and automaters.

Examples of leverage are

- a tool that provides an intuitive user interface that all masteries (project management, engineers, and designers) of your team can use for software defects. (bug tracker)
- a tool that provides easier visualization of software requirements (diagramming software)
- a tool that provides sanity and health checks on your software (automation testing)
- a tool that provides a hub for knowledge sharing (wiki)

Since these examples are just tools, we must also understand that there is no such thing as a silver bullet. In some corporations, these tools may be used incorrectly, which wouldn't benefit the company at all; however, if you're able to maximize the potential of these tools and build a shared vision with your teammates, you'll find your company slowly dispelling its entanglements and pushing forward.


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, December 8, 2010

Ideas are useless without proper execution

So stop saying you have ideas and start executing.

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, December 5, 2010

Advertising companies need to catch up with how the Web platform is expanding. Location-based services is the next natural step

Mobile app spendings are consistently increasing as we push forward into the future. Incidentally, there are advertising agencies that are still stuck on desktop customer experiences. The future is going mobile and I feel like Apple is the only company that is scaling with the growth of Mobile advertising with iAd.

The biggest trending mobile web services at the moment are location-based. FourSquare and Facebook Places aim to drive local advertisement throughput by being able to notify users which locations are hot and which are not. From fine dining to parties--location-based services will shape our reality by changing our views on our local environments. A simple use-case would be if I were in the area and one of my Facebook friends was at nearby Coffee Shop that I've never gone to before. I would be inclined to meet up with my friend and grab a coffee. Since I've never been there before, I would be rewarded with a badge or an achievement (FourSquare).

A simple reward system is so addictive and I believe that rewarding users will be a primary piece of functionality in most social networks in the future.

The next question is, "will there be a bubble burst like in year 2000?". My thoughts are "no" for a couple of reasons. In 1999, 99% of starters didn't have profitable business models and the Web as a platform wasn't viable for the business models they wanted to exercise. Today, we have smart phones that have fully capable web browsers and more users on the internet on massive social networks like Facebook, Twitter, Yahoo, and Google. Since most people are connected in someway to a larger network, the rise of 3rd party APIs came to be as a way of "connecting the different universes". Think of it as a way of achieving warp speeds and getting to different parts of the universe--This eventually led to the construction of useful mashups which would consume these APIs into centralized systems.

What does this mean to the user? As technology constantly improves and design becomes more innovative with touch and spatial interfaces, we'll see a rise of newer strategies for targeted, location-based advertising. Context is always a huge win when it comes to online advertising. With location-based social networking, users will have full confidence in the decisions (s)he want to make because their friends are doing it. It's not something that you're forced into doing like TV and Flash video advertisements.

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

Saturday, December 4, 2010

Building teams based on passion

After being in a meeting on how to increase team effectiveness and increase the quality of the products we're trying to build, I thought of the process of building teams based on a common passion.

Diving deeper, have you ever met a creative person that loved designing social networks? What about a designer that loved creating interfaces on Mobile platforms? Have you ever met a developer that loved building software that connects people? Why is it that teams in the agency realm with multiple disciplines can't grab a group of people who have a common passion. This is totally different from basing it on "skill set". It's about what they love to build. For example, my skill set ranges from backend (multiple databases, multiple integration languages, localization) to frontend (html, css, js) on different platforms like web and mobile; however, I love building social networks on mobile platforms and how you can integrate with different 3rd party services like Flickr, Facebook, Google, and Foursquare. I strongly believe that the world is moving towards Mobile and some form of secure way of sharing data between different services.

In our current ways of doing things, employees (designer/developer/project manager/quality assurance) are just "resources"--they're thrown around on to different projects with barely any context. Context switching is so expensive--ramp up time, meetings, discovery, and rebuilding a shared vision.

If the overall goal is to secure projects so we can gain revenue (what comes in is what comes out) without knowing exactly what we're trying to build then the designers and developers should have full rights to opt-out of the project. As in, they shouldn't have to build something they're not passionate about. What does the company need to do then? Hire contractors. I'm lucky to have landed a few projects that I've been quite passionate about but I've also had to deliver projects which I totally wished I wasn't associated with. The quality is quite obvious.

My only suggestion to companies that are paralyzed in this state is to try and interview your designers and developers. Figure out what they really love making. Ultimately, humans intrinsically love to build things on their own--why not leverage this aspect of human behaviour to build better software?

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.