Managed World

Techno-babble from yet another babbler RSS 2.0
# Monday, February 06, 2006

In an earlier post of mine, I linked to this article by Jim Shore on how building software is nothing like construction. This is a topic I've been thinking about a fair amount lately and I've come to a conclusion: I don't agree entirely with Jim. Here's one of the quotes that have been hanging around in my noodle as of late:

"

In the software world, there is no reason for us to follow the practices of an industry limited by Newtonian laws. We have no gravity. There is no inertia. Lines of code have no weight.

If we want to dig a metaphorical hole after pouring metaphorical concrete, there's nothing to stop us. If we want to flip the software upside down and build a foundation after we've built the building, we can do it. Our only limits are in are (sic) heads. Once we stop thinking that software development is like construction, we'll have one less limitation to struggle with.

"

While it is technically true that we, as software developers, are not governed by Newtonian laws, I think there is one statement where Jim's hammer misses the nail's head: "Our only limits are in are (sic) heads". This is where I disagree.

It is indeed true that we are not governed by physical, world-bound laws. However, that does not mean that we are not governed by any laws whatsoever. This is not a logical conclusion. There are most certainly laws that we are bound by depending upon the context in which we are developing within. It is just that the laws are software-bound instead of physics-bound. Sometimes these laws are relative (like trying to build a new Enterprise-level application in .NET and SQL Server at a company whose entire infrastructure is built upon Unix and Oracle). I'm sure sometimes there are software laws that are absolute as well. The only limits are not in our heads. There are very real-world limits that will scope and change a possible solution. To me, that is one of the key points behind using the right tool for the right job. If we didn't have these constraints, we could use any solution for any problem no matter what the context may be (which unfortunately, I have seen done before).

To me, the interesting piece of research would not be researching the fact that we are not bound by physical laws. I think the interesting research is finding out what laws we are bound by in the virtual world. Who is going to be the Descartes, Newton, or Einstein of computer software?

Posted in Programming
 #       Comments [3]
# Sunday, February 05, 2006

If you've been reading my blog for a while now, it's probably no secret to you that I'm a fan of Open Source Software. I enjoy the benefits of using many open source products like NUnit, NCover, NAnt, etc. At the same time, I also believe that you need to be careful when modifying code in an open source product for use within the enterprise. Why? Because there are several hidden costs associated with modifying OSS that are not realized by your average company or developer. For the sake of this post, I am making an assumption that the developers making the modifications are not involved with and contributing back to the open source production in question (as I have seen this happen before).

The first of these hidden costs is the maintenance cost. When modifying an open source product, you have to think of the long term impact to the company of the changes you are making. As soon as you modify the source, your upgrade path becomes a bit more complex. Usually when a new version of a product is released, you can install the new version, do some testing of your dependencies and call it good (granted, this is, at at times, a gross oversimplification of the process (especially when there are API changes in that upgrade)).

However, when a new version is released of an open source product that you have custom modified for your company, you now need to not only upgrade the code but also make sure that the changes you made before are brought over if necessary. If the change is small, this may be manageable. However, if the change is not trivial this can be a huge investment of development time (that most likely could be better spent elsewhere). What happens if there was a good amount of refactoring that took place in the new release? Well, now you have to do the investigation again to understand the new code base and make any necessary changes again. To complicate matters, what happens in the all-too-common case of when the original developer has moved on and is no longer at the company. Now you're requiring the person(s) doing the upgrade to not only comprehend what and how the original changes were made, but to also understand how those changes are integrated into the new release (and remember, reading code is a lot more difficult than writing code).

Another hidden cost that is not often realized is a cost that younger developers are susceptible to. When developers become eager to modify source code and lean toward modifying source code as a solution to every problem, their skills as integrators are often degraded. One thing I have learned when working with Enterprise software is the rule "if it ain't broke, don't fix it". There has been a lot of time put into writing that code base and getting it to work the way it is. If the company needs to use that product with some additional functionality and you can provide the additional functionality without modifying the existing source code base, do it :). Please realize though that this is just a _general_ rule and is dependent on the context of the necessary changes.

The impact of this degradation of skill becomes more obvious when it comes to maintaining the company's current code base. I believe an important object-oriented development skill is to be able to write code that adds functionality by extension, not through modification (check out the Open-Closed Principle if you're not familiar with this concept). When your first tendency as a developer is to _modify_ the existing code to do what you need to do instead of _extending_ that same code, I believe you are doing the company an injustice as you are introducing more risk into the change. If the change you are making is similar to changes that have been made in the past, you should contemplate refactoring the code base so that the changes (and future changes along that same vector) are done through extension instead. To me, it's a sign of a mature and pragmatic developer to think along these lines. But then again, I'm still a youngin' and I'm sure some of you might disagree with me on this point.

So, is modifying OSS a "Bad Thing"? Not at all. You just have to realize that modifying the code comes with some added responsibilities. Can the company handle those added responsibilities? If your company can handle these and has the capacity to manage the upgrade path, then you can do so if necessary. Just remember though, just because you can modify the software doesn't necessarily mean you should. Are you and the company ready to pay the costs for your decision?

Posted in Programming
 #       Comments [3]
# Tuesday, January 31, 2006
I just came across this post of Hanselman's lately. It appears that Jamie Cansdale added some more functionality to TestDriven.NET. Now you can actually run your tests within Visual Studio with Test Coverage results directly from TDD.NET. Pretty darn cool I must say. I think it's time to plug this stuff in at work :).
Posted in Programming
 #       Comments [0]
# Monday, January 30, 2006

I came across this distro yesterday. What can I say? Okay, yes, I'm a geek :). I'm wanting to learn the game Go and get into it a bit so I was looking for free Go resources. What did I find? Well, a live cd linux distro specifically tailored for playing Go :). It comes with a slew of tutorials, a full local copy of a popular Go wiki, a Go server, a bunch of Go clients as well as Go game file editors/viewers.

I downloaded it last night and captured the ISO into a Virtual Machine in Virtual PC. Now I'm rocking and rolling :). If Go has ever caught your attention, give Hikarunix a go (pun intended (yeah, I know, I suck at being funny sometimes (okay, all the time, I admit it))).

P.S. See folks, I'm not dead :). I've just been _really_ busy with work and family lately. Not much else to post as of yet.

 

Posted in Personal
 #       Comments [0]
# Tuesday, December 20, 2005

I was reading an article (blog post, really) from Jim Shore today that got me thinking. In the past, I've kind of boughten into the whole idea of "building the foundation first". Because of this, I wasn't really agreeing with him on all points in this article. However, there is a certain quote at the end of the article that not only got me on board, but served as a swift metaphorical kick up the side of my noggin' (Thanks Jim :D). Without further ado, here's a quick realization to have in order to understand Jim's frustration:

BEGIN_QUOTE

In the software world, there is no reason for us to follow the practices of an industry limited by Newtonian laws. We have no gravity. There is no inertia. Lines of code have no weight.

If we want to dig a metaphorical hole after pouring metaphorical concrete, there's nothing to stop us. If we want to flip the software upside down and build a foundation after we've built the building, we can do it. Our only limits are in are heads. Once we stop thinking that software development is like construction, we'll have one less limitation to struggle with.

END_QUOTE

All I can say is that I never really thought of it in those terms before. I think I might be thinking about this for a while now.

Posted in Programming
 #       Comments [2]
# Monday, December 12, 2005

Well, I got some more studio gear in last Friday. I got a new pair of Studio Monitors and nice Condenser Mic. Along with the software I have I am almost done. Well, now that I have a lot of the gear I decided to put together an arrangement together. It's still *extremely* rough. There is no real mixing, or EQ work done yet. The drum track is laugh-out loud funny and the sound I'm using for the bass is hilarious. There is also a lot of polishing work that needs to be done with the piano. There are of course complete missing tracks right now (like a good acoustic guitar track). I'm basically one piece of software short of really filling out the tune.

Anyways, I thought I would share it with all of you. This is the first time that I'm really sharing "my" music that hits close to home so take it easy on me :).

So, here it is: Linky Linky.

Posted in Personal
 #       Comments [5]

Contact

Email Me Send mail to the author(s)

Calendar

<February 2006>
SunMonTueWedThuFriSat
2930311234
567891011
12131415161718
19202122232425
2627281234
567891011

About this site

Jason Olson's thoughts on Programming, Games, Music and Life in General

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.

© Copyright 2008
Jason Olson

Sign In
All Content © 2008, Jason Olson
Theme based on 'Business' created by Christoph De Baene (delarou)