A Plea to New Communities

Posted by Ryan Baxter Wed, 21 May 2008 13:57:00 GMT

Mark Pilgrim, a Technical Writer at Google, explains his new project, Google DocType.

According to Mark, Google DocType will be an open resource for sharing web programming knowledge. As of today, it contains HOWTO articles on CSS (Cascading Style Sheets), DOM (Document Object Model) manipulation, and Web security. Links to CSS and HTML references round out the site’s content. I have no doubt that DocType is just the beginning for Google, but will this be just another W3Schools?

In numerous posts on codinghorror.com, Jeff Atwood has suggested that programmers no longer read books. Jeff believes the Internet is most programmers’ first reference choice. He has since announced a partnership with Joel Spolsky to create a community for developers. In his words:

There’s far too much great programming information trapped in forums, buried in online help, or hidden away in books that nobody buys any more. We’d like to unlock all that. Let’s create something that makes it easy to participate, and put it online in a form that is trivially easy to find.

My plea to both of these fledgling projects is best stated in the last sentence of the above quote. Please make the information trivially easy to find. I’m one of those developers using the Internet as a programming reference and I’m tired of searching for the proverbial needle in a haystack.

SEO (Search Engine Optimization) isn’t the only answer. Too many times keywords return results containing solutions for yesterday’s problems. What worked yesterday may not be today’s answer. Operating systems, software dependencies, and programming languages all change. How do we keep content relevant? Unfortunately I don’t have an answer to this problem, but perhaps Mark, Jeff, or Joel can come up with something profound. I wish them luck.

Automated Build Flurry

Posted by Ryan Baxter Tue, 12 Feb 2008 22:39:00 GMT

Quite a few automated build articles have been cropping up this week over at CodeBetter.Com. The first, How do you build your application?, by Kyle Baley, asks Developers of the .NET community how they manage builds using the NAnt toolkit. Jeffrey Palermo responded with a helpful post including a link to his own NAnt build template. Kyle then followed-up with a few humorous links to graphics of common build scenarios.

CodeBetter.Com has provided me with an overwhelming amount of great .NET content over the years and the above articles couldn’t have arrived at a better time. My spare cycles at Primus Technologies Corporation have been few and far between, but those found have been spent configuring the companies Continous Integration system. I must admit that I was pleased that my own NAnt build script looked remarkably similar to Jeffrey Palermo’s template. :)

Of all of the work involved in developing software, build automation and Continuous Integration are my favorite. When Continuous Integration is implemented correctly it should function like an assembly line. Just like Ford Motor Company, your software will see improvements in efficiency and development time. If you’re a .NET Developer and confused by what I’ve written thus far then you should definitely familiarize yourself with these concepts. At the very least, I’d recommend researching the following tools:

In addition, Scott Hanselman has a few podcasts that could also be helpful. Listen carefully, read diligently, and improve your software. Be better at your craft.

The Way to Becoming a Better Developer Addendum

Posted by Ryan Baxter Thu, 13 Sep 2007 12:55:00 GMT

Peter Norvig's Teach Yourself Programming in Ten Years better describes what I was trying to illustrate in the martial arts analogy of my last post, The Way to Becoming a Better Developer. Great article Peter! Keep up the good work.

The Way to Becoming a Better Developer

Posted by Ryan Baxter Fri, 07 Sep 2007 19:13:00 GMT

Wikipedia defines shibumi as “a Japanese word which refers to a particular aesthetic of simple, subtle, and unobtrusive beauty”. Ruby, 37signals, Nintendo, and Apple all have it. As a developer, I can often find shibumi in programming languages, websites, and applications, but have a hard time characterizing what it takes to be a master programmer. I don’t think I’m alone. The blogosphere is full of the self-help affirmations of programmers wishing to better themselves at their craft. How can we become better at what we do?

I don’t have the perfect answer, but borrowing from my experience in teaching martial arts may provide a clue. A frustrated student once asked me how he could become better at performing his kata. I responded by telling him that practice by repetition is the best way to improve form. Under his breath he muttered, “Practice makes perfect, but nobody is perfect”. Apparently it wasn’t the answer he was looking for. I suspect that most programmers would react similarly if told to keep practicing.

Judo, Taekwondo, and Karate-do all end with the letters “d-o”. “Do” is the Japanese pronunciation of the Chinese word, ”Tao”, meaning “Path” or “Way”. Each of these martial arts is merely a set of instructions for following a path. What the young student didn’t understand is that practice, in martial arts, is not a means for perfection. Practice is the goal. The key to becoming a better programmer is accepting that practice, focus, and attention are the only way to improve.

Knowing When to Unplug

Posted by Ryan Baxter Tue, 24 Jul 2007 02:38:00 GMT

If you’re a geek like me then this may sound familiar. Like you, I work the typical 8 hour work day at my “for pay” job. At home, my second job begins. Another 4-5 hours is consumed by one of my half dozen personal projects. An additional 2 hours is devoted to reading blogs and other online technical resources and about an hour is sacrificed for e-mail. When my wife and I have a commute that’s longer than 15 minutes, she drives so that I can read. Her only request for putting up with this is that I leave one night on the weekend for her. She’s a keeper.

Needless to say, I probably spend too much time online. Sustaining this lifestyle is not easy. I can keep this up for about three months before my body starts telling me to unplug. Some of my warning signs include:

  1. Insomnia – How can I not be tired? It’s 4 AM? Am I the owner of a soap company?
  2. Increased blood pressure.
  3. Irritability – I don’t really notice this, but my wife tells me that I can be “grouchy”. She tends to use more colorful words.
  4. Exhaustion.

In the past, I’d ignore the warnings and keep working until sooner or later I’d start falling asleep everywhere. I’d come home from work and sleep on the couch, or the middle of the living room floor, or even face down on my keyboard. It didn’t phase me much until my blood pressure started going up. Six months ago I began to notice a faint buzzing in my right ear. The buzzing grew louder and became persistent. It soon turned into a sort of rhythmic pulsing. I could hear my heart beating in my ear. Weird. At this point I decided it was time to take a break.

I don’t often take vacations. At former jobs, my vacation days would often accrue and I’d be forced to use them. I’d take a day off here and there, but I never had any planned vacations. A few weeks ago my wife and I spent a weekend with some friends. I had a great time and came home feeling recharged. My wife mentioned during the trip that she hadn’t seen me smile so much in years. You may have heard this before, but take a vacation. Get a life. Visit some friends. Just a couple of days is enough. Intentionally leave all mobile devices at home and don’t bring any programming books with you.

Try going to bed one hour earlier. I know this may be hard to do, but you can start in small increments and work your way up to an hour. Is that one hour before bed really that productive anyway? This has made me less ornery and more alert at 8 AM.

Get more exercise. Twice a week my wife and I teach a children’s Taekwondo class. I can tell you that lambda expressions are not at all on my mind when people are trying to kick me in the head. I sweat buckets in the Dojung. I often wake up feeling like I got a hit by a bus, but my mind is remarkably clear.

IANAD, but I can say that these things have worked for me.

What life skills have benefited your software the most?

Posted by Ryan Baxter Wed, 11 Jul 2007 16:39:00 GMT

A question was asked a few weeks ago within the blog community that I read. “What are the three things you learned about software in college?” I’d like to expand upon this question and ask, “What life skills have benefited your software the most?”

I will try to keep my list short.

  1. Reading Comprehension. Not everything can be solved with a Google search. You may have to open a book once in a while.
  2. I’m often heard saying that the single most valuable skill that I learned in high school was typing. This needs no explanation.
  3. Writing is not unlike programming. Obey grammar rules and write clearly.
  4. The developer lifestyle is not glamorous. If others tell you to get a life then you probably should. Take up a hobby that involves other people. Get a job in retail.

What life skills would you put in your list?