I Believe...

A recent reorg at my company left me with a new manager - and a different approach to software development than my team had been previously following.  Our new approach is one that I don’t necessarily agree with, but it led me to think about - and reevaluate -  those tenets of software development that I think are important and that I believe lead to increased quality and productivity. This post will consist of fairly high level discussions about how to organize code, teams, and projects - but contain very little actual code. Many of these ideas will not be my own.  They are mostly ideas I’ve learned from others and their willingness to share their experiences with me.  They are, however, ideas that I’ve practiced and hardened as I’ve worked to build my own ideal environment for delivering value through software . Many of these ideas I now take for granted as commonplace (even though they aren’t).  I felt a need to document them anyway - so people can understand what to expect (a

Forbes: Why Companies Lose Top Talent

Interesting article on Forbes titled " Top Ten Reasons Why Large Companies Fail To Keep Their Best Talent ". As a person whose changed jobs a number of times in my career, many of these items rang true. Here are the ones I identified most closely with: 1. Bureaucracy - it a shame when corporate politics and policies get in the way of delivering the best products we can to our customers. This drives me crazy! 3. No Performance Reviews - we crave feedback on our work. We want to know if we're doing a good job and how we can do an even better job. 4. Lack of Career Development - who wouldn't want to hear that they fit into the company's future plans? 7. Tolerating Mediocrity - there's a reason why the Yankees are "The Yankees". Everyone wants to work with the best and for the best. "A rising tide lifts all boats" but when members of a team aren't accountable for pulling their weight, it can really sink morale and productiv

Thoughts about a different StackOverflow reputation system

I love StackOverflow . It's my "go to" place when I run into a tough programming problem. Reputation on StackOverflow can be a bit intimidating, however. Even when you have a few thousand reputation points (placing you in the top 20% of all StackOverflow users) - the top users have 100x that many points! It can make you feel pretty insignificant. "Catching up" to the leaders doesn't feel like a realistic option. This week, I listened to a podcast about Cortes' conquest of the Aztec empire . During the conversation, the Aztecs were described as a civilization founded on war. Warriors were celebrated. They earned their own "reputation" - in the form of feathers and other ornaments - by conquering neighboring peoples. What I found most interesting, though, was once a warrior earned a badge for conquests on a particular village, they couldn't earn more rep by sacking the same towns again and again. This forced their warriors to become f

A few quick notes

It's been a quiet few months. I haven't worked on too many things I've felt like writing about. That's not to say I haven't been busy. One thing I've been reading more about building great teams and delivering more to our customers. I'm just starting to read Creating Magic: 10 Common Sense Leadership Strategies from a Life at Disney . Obvious from the title, this book outlines the approach Disney teaches all of it's Cast Members (employees) on how to be great leaders and provide their visitors with great experiences. I've been wanting to read this for some time and I'll be sure to write more as I work my way through it. Some related blog posts I've enjoyed recently are: The Duct Tape Programmer from Joel on Software where he reviews a chapter of the book Coders at Work . The post basically talks about doing the simplest thing possible to get something out the door and into people's hands. Amen to that! I've also been enjoyi


I was inspired by this talk from RailsConf given by Robert "Uncle Bob" Martin. It's a really entertaining talk and you should check it out if you haven't already. During the talk, the topic of professionalism came up and what it means to be a "professional software developer" (maybe 2/3 of the way through). Professionalism in software development is a topic that's not well defined and certainly has different meanings to different people. Can you be considered a pro, for instance, if you don't provide a set of automated tests for your code? What if you don't use source control? Do you feel the need to always create a custom build file (make, ant, or maven script) so you can build independent of an IDE? Do your "professional" standards change depending on if you're creating "prototypes" rather than designing code for production? I know which things I strive to do on every project I work on. But the standards for the t

More stuff to get excited about

Chrome OS I'm excited about Google's announcement to release what sounds like an ultra lightweight OS to basically surf the Internet. I'm hoping this device will allow me (and others) to breathe new life into old, underpowered laptops, allowing them to essentially work as netbooks. This could also open up new and inexpensive opportunities for schools to recycle or prolong the life of expensive computing equipment and expand horizons of their students. I've been watching the One Laptop per Child (OLPC) movement for some time and I see this as another avenue toward their goal. I don't share the optimism that this OS will somehow replace Windows. Sometimes you need extra horsepower and functionality. I edit a lot of photos and create some simple video, but the web tools I've tried to do either task can't hold a candle to the four-year-old version of Photoshop Elements I own. I'm not sure CPU intensive apps like this will port very well to the web.

Interesting Tidbits

It's been a while since I had a post to talk about some of the new(er) technology I'm just hearing about. Here are three things that got me excited recently. First person user interfaces I came across this article on First person UIs . Basically it works like this: you have a location aware device like a smart phone with GPS and a camera. You're walking around and you see a historical building, business, or other point of interest (POI). You point the device's camera at the object and WHAMO - you instantly get a bunch on info about the object. This can include the name of the POI, how far it is away, a phone number to call, a history, and a bunch of other interesting tidbits. It will be like having a virtual tour guide in your pocket. This is very cool! This concept is also called "augmented reality". Google App Engine, Big Table, and more on the Cloud I recently watched this talk on Google App Engine . I've been watching Amazon's EC2 for s