Last Saturday I was lucky enough to participate on a devLink discussion panel on “Has Software Development Gotten Too Complex?” The panel was hosted by, and recorded for, Dot Net Rocks and posted early this AM as show #476. The panelists were Billy Hollis, Kathleen Dollard, Josh Holmes, and me.
We spent a bit of time talking over various topics, then opened up for audience questions. Some of the questions and comments were pretty interesting, particularly those around the vast increase in power we’ve seen through advancements in our technology. We’re far, FAR removed from the days of having to do minutia infrastructure work (as opposed to choosing to do that when we have no other choice).
There was also a very weird undercurrent that quite frankly brought me down. We heard complaints about FrontPage hitting its end of lifecycle, we heard laments about the confusing amount of choices for technologies, we heard complaints about Microsoft “forcing us to use three ‘servers’ for all our applications,” we heard complaints about the lack of plain Notepad-based examples.
The Twitterverse had lots to say on the topic, some supportive, some negative, some exhausted. “DNR” means lots of things, so that results page has lots of chaff. Regardless, read through it.
Here’s some tough love from Jim, folks. God/evolution/whatever built an amazing piece of equipment in your body: a brain. Moreover, that brain has a wonderful, but far too underutilized ability called Critical Thought. Use your brain and Critical Thought. Use them to solve problems. Use them to decide how to stand out above your competition. Use them to figure out how to crush your enemies, see them driven before you, and to hear the lamentation of their women.
Yes, many things in our industry can seem overwhelming at times, but you know what? You are utterly, absolutely capable of dealing with all this. Moreover, you’re likely capable of not just dealing with it, but succeeding – but only if you’re willing to invest in yourself for the long haul.
The harsh reality of our industry is that the vast majority of folks in it aren’t concerned with improving themselves, so just the fact that you’re reading this blog, or attending conferences like CodeMash or devLink means you’ve got a great start.
Take that start and run with it. Get involved with a local user group. Hit more conferences. Expand the list on your regular blogroll. Work hard at your place of employment to carve out time for regular training sessions – and I’m talking on a weekly basis. Lunch and learns are a powerful way for you to ensure you’re keeping in touch with the changes in the industry.
Oh, by the way, I’m not just talking the hard technology issues of what you build, I’m talking about you learning to improve how you build software. Learn about testing. Learn about the *DD du jour. Learn how to improve your processes.
Jesse Liberty wrote a nice blog response with some of his ideas. I enjoy Jesse’s writings and presentations immensely, but I have one huge issue with his suggestions: his ideas are all 100% Microsoft-centric. That’s OK, but we as problem solvers absolutely cannot limit ourselves to using only what Microsoft provides. For example, if you’re evaluating what data access strategy to use, then you’d darn well better not limit yourself to looking at LinqToSql or Entity Framework. You’d better include the much more mature alternatives like NHibernate, SubSonic, or rolling in some variant of the ActiveRecord concept. Furthermore, you’d better be asking hard questions about how any examples or “best practices” coming out of Microsoft fit in to your particular environment.
Use your brain, folks. Turn your discouragement into an opportunity to improve your ability to stand out from the others. Turn that into an opportunity to help your company or organization differentiate itself.
(I’ve written and re-written this post a number of times since coming home from devLink and the panel. I’m still not satisfied with it, but here it is. The lack of clarity in this post is a sign of how conflicted I am about the episode. Sorry, but it is what it is.)
Now listening to "Hare Krisna" by Thievery Corporation
6 comments:
"The harsh reality of our industry is that the vast majority of folks in it aren’t concerned with improving themselves..."
Such a disappointing fact, isn't it.
Love this post, Jim. I only wish that you would have brought more of this "tough love" to the panel as well. :) But that's just me... I love when people stir the pot! hehe
Seriously, wonderful post.
Jim, great post, couldn't agree more. I spent Wednesday at Software Craftsmanship conference in Chicago, and the underlying theme there was take the bull by the horns, and make yourself a software craftsman. Learn the basics. (Or even re-learn the basics.) Practice your craft.
Listening to DNR 476 after scna was tough to do, to be honest.
Is software dev complex? Hell yes! The guys that wrote apps in the 70s and 80s had a complex job, it was just different complexities.
Great post Jim. I definitely agree of using the right tool for the right job and thinking should be tops.
My problem with the panel discussion (I was in the audience) was I felt that each panelist was talking about distinct problems that were not really the same - so the conversation went all over the place. Also each panelist (of course) has different assumptions of the knowledge of the audience. It was quite diverse. I think Carl and Richard could have done a better job preparing the panel and the audience for what we were focusing on and with keeping the conversation on track.
"Moreover, that brain has a wonderful, but far too underutilized ability called Critical Thought. Use your brain and Critical Thought. Use them to solve problems..."
Amen.
Excellent post Jim! Thinking about software complexity reminds me of the couple videos I watched from the Structure and Interpretation of Computer Programs Video Lectures by Hal Abelson and Gerald Jay Sussman. They were recorded at MIT in the 80s and are all about coding in Lisp. They say many of the things that we talk about today when it comes to software craftsmanship and keeping things simple. For example, the contested idea that programming is more of an art than a science is mentioned in this video. With the modern focus on Software Craftsmanship it's good to know we're trying to get to the simplicity that was only dreamt of in the 70s and 80s.
Post a Comment