Posts

Requirements are not necessarily required

In the grand tradition of being difficult, I'm rediscovering an antipattern that has killed projects in the past. I'll call it "too specific requirements". The symptoms are stacks and reams of requirements that you MUST implement, even if there are better ways to solve the apparent problem. Case in point: We have a rock solid requirement to build a user preference management screen. Unfortunately, most of the preferences we need to collect are (IMHO) better collected and maintained in situ. As an example, one requirement is to "enable the user to select their default payment method". Of the hundreds of possible solutions, the requirement implies that we should have a special screen where users can find this option, select it, then never see it again when checking out their items. This sounds great on paper, but I'm struck by the notion that a user would EVER know or think to go to some other screen (preferences? My Profile? not sure what to call...

Think like a genius

Questia has an interesting article about "how to think like a genius" http://www.questianewsletter.com/newsletter/volume-5-issue-5/index.htm?CRID=nullCRnull&OFFID=newsletter20091004l#bigidea . I'd have to say this is spot-on and a good Adding my own thoughts to the above, I've noticed that I rarely do new or innovative things by "trying", I'm more innovative when exploring interesting side effects. I would go further to say that lucky people are simply the ones who can creatively extract value from more situations than other people. I often hear people sharing their misfortunes with me and quite often they have a negative spin on things that happened to me that I thought where golden opportunities, but they simply saw as obstacles. Which reminds me of a story... A gentleman farmer at the turn of the century was being overrun by rabbits and went into town looking for an expert marksman to get rid of the pests. On his way, he passed a farm with doz...

The hazards of microbenchmarks

I recently had lunch with my team and had the dubious fortune of sitting across the table from Mr Knowitall. As we recently installed SONAR, he mentioned his surprise at our "critical performance" issues, namely that we're using a + b to concatenate strings instead of StringBuilder in a few dozen places. I dismissed this as "not really a critical problem", which spawned a heated discussion about the merits of using StringBuilder over normal string concatenation in Java. He ended up issuing a direct challenge that Stringbuilder is 25% faster than string concatenation. He also stated that I could build a test harness and see for myself and bet that if he was right I would buy lunch... Aside from kicking myself for getting into a ridiculously pointless argument that I've had am million times before (he also tried to drag me into the "you better check .isdebugenabled() before calling .debug() in log4j because otherwise you're taking a performance hit, b...

Hill climbing problem with your career

Chris Dixon's has an interesting post on hill climbing as it relates to career development. In short, his basic premise is to imagine your career is a 3d surface and your goal is to get as high on this surface as possible. He then outlines a couple of algorithms to do this. In explaining some trivial solutions I was struck by a common problem in people who work for a living. We are creatures of habit and we love the known. In addition, the known pulls at us due to it's immediacy, after all, it's right HERE, right NOW, I'm 100% certain of what it is. If I where to start venturing out into the unknown, I better have a reasonally high expectation of something positive happening. If I'm going into the unknown AND I'm fairly sure I'm going to have a negative outcome, it takes an inhuman (maybe vulcan) amount of logical reasoning to act counter to that intuition. Put another way, I believe the reality of life is that this 3d surface metaphor is further com...

The Curse of Knowledge

I'm currently listening to an intro to psycology course lecture series and during a lecture on intelligence, the speaker mentioned "the curse of knowledge" (it's lecture 12 in this series ocw Brain and Cognitive Sciences . This is the problem caused by a difficulty in seeing the perspective of someone who DOESN'T know it. This means that when I'm describing something to you, I inherently assume you know what I know. I have to consciously stop and think to try and figure out what you may or may not know and develop an idea about how to present what I know in a manner that you will be able to understand. It turns out that this is often difficult, especially if you have a LOT of knowledge about a specific subject. That is not to say it's impossible to see things from the ignorant party's perspective, but it requires a conscious effort to change perspective. I see this all the time and it is particularly evident where I'm working right now. We hav...

Elusive software requirements

Those who have been following know that I moved to a new position about a month ago. I took over as a development lead for a project that was "just about ready" to go live. In speaking with the guys in charge, there was some concern because it seemed like some apparently simple changes where causing HUGE pushback from the development team. In addition, the application actually didn't even work by ANY measure... oh yeah, everybody could get a little tiny piece of it to work on their machine, but there's a whole other story about how we couldn't even actually build the project without having first built the project.... So I've spent an enormous amount of time (weeks) navigating the murky waters of "requirements" looking for the iceberg that caused this hole in our development boat. At first, I was told thing like "well, the requirements keep changing", and "well, things are kinda fluid, we just gotta be flexible". In addition, ...

Upgrading Linux ATI drivers on ubuntu

OK, normally I don't do tech stuff in my blog, but this has been a long standing frustration that, now that it's fixed, I feel the need to share. Background: A year or so ago I bought a fairly inexpensive laptop from Tiger direct. It was a toshiba satellite A215-S740 and only cost around $600. This is a fairly decent machine and I intended to use it for work. It came preinstalled with Vista, but I typically run Linux (ubuntu to be exact). I thought I'd run vista for a while and see how I liked it, tired after two days of the constant interrogation. I felt like Vista was an overly agressive Gestapo agent... so I installed Ubuntu (ahhh, much better). My first problem, however was that the built in ATI driver did not support 3d. At the time I was playing with building 3d visualizations of our systems and I REALLY needed 3d (because software 3d was way too slow). I found the ati proprietary drivers, installed them, and everything seemed OK acceptable, but not quite Grea...