Learning to build
I spent the first five years of my life traveling the world with my family. Flying from place to place, my only toy was a big box of LEGO bricks. I loved them because they let me build, destroy, and rebuild—each time making something more ambitious. Those early lessons still shape how I approach web design and development.

If you can dream it, you can build it
You’re five years old and you’ve just been given a huge bucket of LEGO bricks. At first, you sit there staring, confused. There are so many pieces with no rhyme or reason. Then something magical happens. You grab two pieces and realize they can stack. You add another piece. And another.
I like to think of the internet as a big bucket of LEGO bricks. There are billions of tiny, disconnected pieces that don’t make much sense on their own. But once you start making connections, things get a lot more interesting. Great developers can look at those separate pieces and envision how they might work together.
Build for the joy of building
I like to build things. Sometimes for clients, sometimes for others, and sometimes for myself. Building for yourself is one of the most rewarding experiences. You can take your time or stay up all night; use a completely crazy color palette or go super-simple; ignore IE6 or support every browser known to man. When there are no rules or expectations, you get the rare opportunity to experiment without worrying about timing or perfection. That’s a recipe for innovation. Why wait for an assignment when you can invent one? Follow the instructions word for word, and your LEGO creation will only ever match the picture on the box. Anyone can do that.
Embrace constraints
When I was around 10 years old, I went to a LEGO competition where contestants were given a small bag of assorted pieces and told to build something. I expected a huge bucket of bricks but got only a few odds and ends. That day, I learned how to work with what I’m given and still create something great. Screen sizes, load times, browser support, and mobile devices are just a few of the constraints that shape how I approach a development project.
Complexity is made of simple tasks
If you’ve ever built something with LEGO bricks, you’ll know that the instructions included in kits are generally easy to follow. They break highly complex projects into a series of simple visual steps. They show you what to do rather than tell you. LEGO taught me that anything is possible if you take a step-by-step approach to problems. Having trouble learning CSS? Google a new technique each day for a year, and you’ll be a master.
Have a vision, not a plan
As a kid, I never began a LEGO project with an exact end product in mind. I always had a general idea, but I stayed open to discovery along the way. If I wanted to build an airplane, I would find a photo for reference, but I wouldn’t sketch it out or estimate the number of bricks. There’s a distinct difference between a vision and a plan. A vision helps guide a project. A plan just guarantees you’ll get frustrated when you can’t find the perfect brick. I’ve never had a web project go exactly as planned. They always evolve—almost always for the better.
Buy the Star Wars kit for the parts
I’ve never been a big fan of Star Wars or sci-fi in general. So naturally, when I got a LEGO Starfighter kit as a birthday present, I was thankful, but I also kinda wished it was a train set. I never actually built the Starfighter, but I did harvest it for parts. Turns out, it had some unusual parts that I later used to build the train of my dreams.
Web developers need to be resourceful and approach everything by asking, “What does this do well?” It’s rarely a good idea to reinvent the wheel, so I scour the web for open-source code that can be repurposed. I rarely find exactly what I need, so I assemble smaller pieces of code to get things working.
Choose your bricks wisely
There are only so many bricks in the bucket, so you have to choose the right one for the job. The web may have infinite possibilities, but that doesn’t mean you should go crazy. LEGO bricks come in many shapes and sizes for a reason, just as some web technologies are better suited to certain tasks. If you’ve ever visited a website where all of the text is embedded in one huge JPEG, you’ll know what I mean. There’s no single answer to a problem. Today it’s Flash versus JavaScript; WordPress versus Drupal. Tomorrow it will be something different—the key is choosing the best technology for the job.
Build it, break it, build it better
A box full of bricks is a lot more fun than a shelf full of completed LEGO sets. Every time I built a LEGO set, I’d play with it twice, and that was it. At that point, you can (a) let the set collect dust forever or (b) tear apart your work and start over. I advocate the latter.
The web is a living, breathing, fast-moving creature. Designers and developers need to evolve with it. When you do your best work, take what you learned and build something even better.