Archive for February, 2006

Why New Features Don’t Matter

Tuesday, February 28th, 2006

Since the adoption of the web by the general public, we’ve seen a rapid shift in the way companies think about software. Have you noticed how pretty much any device that needs firmware now seems to be /maybe/ 30% feature complete compared to what’s printed on the box and is typically very buggy when it’s put on market? If not, you must have not used any sort of DSL router or wireless switch in the past few years. It’s strange to think about now, but products with firmware actually used to not suck, and engineers even had time to implement firmware into scanners which would allow them to play music.

Personally, I would much rather have a small subset of functionality in trade for a stable product (both in what I write as a software developer, and what I buy as a consumer), and this article agrees with those sentiments as well.

In the seemingly never-ending debate about Apple’s successes, announcements, new products and predicted-but-unannounced über-gadgets, features and technical specifications often seem to dominate the debate. Yet if there’s one lesson to be learned from the company’s recent successes, it is a very simple one: features don’t matter any more.

I can only cynically giggle when I find myself producing some new whiz-bang butterfly chasing or bouncy-shiny ball chasing type feature which will soon be replaced in two months after it’s somewhat completed by another equal feature because each new one is “teh new hotness” that 8 billion customers will buy or whatever rather than focusing on making core functionality better if not stable. Each of these new half-baked features are rarely used and is only good for presentations– sort of the software equivelent of taking a car with extra stickers and shiny wheels on it to SEMA claiming that it’s faster.

I think another analogy (alebeit a poor one, but bear with me) is to look at is the product cycle of soft drinks. Each year it seems like the big soft drink companies come-up with some new flavor like Cactus Mint Cola. At first there are some xtreme commercials that make people want to go skateboard up a mountain while skydiving, a little buzz is created with consumers, and some people go out and buy it who usually just drink the plain Cola. Rarely are they repeat customers, or if they are, they get tired of the Cactus Mint and just want plain Cola again. Eventually the Cactus Mint Cola is not moving at all, and they pull it off of the shelves. This is followed by marketing/product development coming-up with the next new xtreme flavor which will make new people their customers forever– Orange Salmon Cola. Rinse and repeat.

What IT Managers Can Learn from Developers

Tuesday, February 28th, 2006

I came across a fairly succinct article about what IT managers can learn from software developers which is a good read if you find yourself in a chaotic environment with no issue tracking, documentation, etc.

There are various practices associated with software development that can be of great benefit to an IT department, but since few IT managers follow what goes on in the software engineering field, and even fewer come from a software engineering background, most managers are unaware of these ideas and technologies. This is unfortunate, as there are so many tools and techniques employed by programmers that could be put to good use in IT.

If you’re looking for a free solution to solve similar issues in software development, I’d personally recommend using Subversion and Trac, or if you have a budget, both JIRA and SourceForge Enterprise are good ways to go (still using Subversion of course) which are still flexible enough to let you get things done. Of course there’s always Bugzilla, but something just doesn’t sit right with me with that Perl beast– perhaps that I think the usability is terrible?

I can easily say I agree with the article based on experience of organically starting to do all of the things listed over the past few years. I know that not everyone is a Wiki fan, but it does actually make documentation sort of fun and if anything, easy to do. Rather than worrying about formalities you end-up with a lot of information which otherwise wouldn’t have made it into any sort of documentation, thereby making the “hit by a bus” factor a much less catastrophic event (except for the bus part of course).

SourceForge Enables Subversion Support For All Projects

Tuesday, February 28th, 2006

As reported earlier, SourceForge has finally enabled Subversion support for all projects. Perhaps this is the proverbial kick I’ve needed to post a few very minor open source tools I’ve been working on in CF, Python, and Java somewhere in a workable manner (with documentation– *gasp*).

Free Software Tools for Computing & Automata Theory

Sunday, February 26th, 2006

Well, wouldn’t you know it, I’m currently in finals week for my Computing Theory class and I finally came across a list of tools to help with the class when looking for some CFG to CNF examples to make sure I understood said translation correctly. I wish I’d came across these earlier to check my work–doh! It looks like they’ve combined most of the tools into one Java application titled JFLAP which will basically create and transform both regular and context-free languages. From my limited use thus far its certainly lacking in usability, but it does seem to do what I was looking for weeks ago. Given that it’s a cross-platform Java GUI app, I didn’t really have big hopes as far as the interface goes anyway. ;)

If you haven’t taken a similar class or aren’t very familiar with Computer Science theory, let me just say that this is the most challenging CS class I’ve taken thus far. I’ve spoke to a few other people with CS degrees and they seem to agree with my sentiments– it’s one of those early “sink or swim” classes that usually separate the wheat from the chaff as far as CS majors are concerned.

Anyhow, to summarize, my interpretation of this class is that it’s essentially math theory that was mostly invented before computers existed which represents ways to parse and generate languages. This allows you to mathmatically express a way to generate language parsers from language generators and vice versa. I think I’m finally coming to have a pretty good understanding of it, but those first few weeks of class were pretty difficult until I got my head wrapped around the material. Aforementioned weeks were certainly quite humbling– I’d highly recommend self-studying it if you’re a non CS major yet are confident in your abilities as a programmer. Then again, I’m not one of those uber brainy MIT type geeks for which I’m sure this class was a breeze.

It’s been an interesting but challenging class, and if anything it’s nice to know that there is actually some sort of math theory wrapped around Regular Expressions rather than them being the brainchild of some basement dwelling Perl wonk. I’m now a little interested in attempting to create a ColdFusion Parser Generator using something like JavaCC, but I doubt that will be happening anytime soon…