Sunday, May 10, 2009

Thoughts on development and life

I tend to be a perfectionist. I can easily get into analysis paralysis trying to figure out the ideal approach to a problem.

The idea of TDD appeals to me because it is supposed to enable rapid progress while proving the code does what it’s supposed to. You keep it simple and quick by doing the simplest thing to get it to pass the test. Once it passes the test you get to refactor to clean up the code and you know it still works if it passes all the tests. Then you write the next test.

Sounds lovely. Wish I was there. I’m not, but I’m trying to head that direction.

I’ve found that writing tests can be hard. Particularly dealing with GUIs, database access, legacy code and deadlines.

Most of our codebase is in classic ASP with few tests. I’ve written a few tests using ASPUnit, but running tests from a web browser isn’t my favorite. So I just wrote a .NET library that enables running ASPUnit tests from NUnit. (I’ll share details of that in a future post.)

I feel like I’ve learned so much over the past year. I also feel like there is so much more I still need to learn and so much room for improvement. I actually get pretty frustrated by my slow progress at times and how much I still have to learn.

I had a season where I spent a lot of time reading technical books and articles and programming and I’ve been attending user group meetings, but I let other areas of my life suffer. Then God readjusted my focus. As much as I love programming, it is not my source of joy. Jesus is.

So I’ve been adjusting my priorities and trying to put God first. But I still program at work. And I want to grow as a developer and become excellent in my craft. So now I’m trying to find the balance, where I keep God first and don’t neglect important things like sleep and friendships while still growing as a developer.

Anyways, those are my thoughts. It may or may not make sense to you, but if you have any feedback feel free to leave a comment. I think I’m gonna go hike for a bit now.

4 comments:

  1. Hey Mike, first time I checked out your blog and its good. Keep writing although most of what you talk about is out of my league.

    ReplyDelete
  2. Just remember Bill's mantra (which I've also accepted long ago):

    One. Point. O.

    Everything starts with a 1.0 version. FoxyCart was kind of a mess when we first launched, but two years later we're serving a lot of people well. We didn't refactor the code every chance we got, we just took each new feature request as an opportunity to get something out the door and learn in the process.
    No matter how good you get or how many unit tests you right, you'll always look back on it later and wonder what you were thinking. Unit tests can be good, but they are usually only as good as the actual code anyway (since they are little programs as well).
    In the end, if your code serves people well, it was successful in its purpose.
    Keep going after it Mike, God blesses the diligent.

    ReplyDelete
  3. @Bert Thanks for visiting! I appreciate the encouragement and I'm going to try to blog more consistently - and not just about tech.

    ReplyDelete
  4. @Luke How are you enjoying being a daddy? Congrats!

    Haha, I can always count on you to preach. One of my top themes is maximizer though, not achiever, so I'd rather do one thing right than five things fast. (Though it would be nice to do five things right and fast.)

    The way I work and the way I'm motivated is not the same as everyone else. I still need to get stuff done at the end of the day, but my challenge is finding the groove that works best for me.

    Thanks for your thoughts and encouragement.

    ReplyDelete