Posts

Showing posts from January, 2010

Business Analysts and Software Developers

Of all the relationships within a software development organization, the one that seems to cause the most friction is the one between the business analyst and the software developer. I find this is often caused by a lack of understanding about who is responsible for what. A BA where I'm currently working spelled it out best in a meeting a while back (Brian D). In our organization, the business analysts own the "who, what, why, where, and when" and the developers own the "how". Not sure how this maps into other people's organizations, but it seems to be a good starting point. Very often I read requirements with a lot of "how" in them. Examples of this sort of thing include: Create a web service to enable validation of item information Build a screen with 4 fields (create date, last modified date, historical cost, deleted flag What I would expect, as a developer is something more like: We need to be able to run the mainframe part validation routin

We're going crazy with all this service stuff

I heard this statement today and it stopped me in my tracks... It came from a developer who was trying to explain to me why it was a good thing to embed our job postings as static files in our main corporate website. "After all, it only takes 15 minutes to get the new files and deploy the new version of the application" he continued. "After all, how often will they change?" I had to resist the urge to say "sooner than you might think"... At that point I should have realized that perhaps this guy was unreachable . I say that because when I attempted to explain my position he just waved me off and immediately stopped listening and started doodling on his notepad. Upon reflection, a number of problems were evident: I have done a really bad job explaining the value of using reusable components or what a "service" is I have done bad job of explaining why decoupling the content of an application from the code is a good thing I have forgotten that I

Pandora

Image

media cache (with caching)

Image
I supposed the title of my previous post was a little bit misleading. The original (OK version 2) of that code actually didn't cache anything, but just acted as a reverse proxy to resize images. I added some code to perform some rudimentary caching. You can now add cache=1d to have the browser cache the image on the local disk for 1 day. Similarly there are other combinations:. To cache for 1 week add: cache=1w To cache for 2 hours: cache=2h What this means is that after the browser initially loads the image it will hold it on disk and not request it again for the amount of time that was specified. This doesn't apply if the user hits "reload", but works great for normal navigation. Warning This means users won't see a new copy of the image unless they explicitly hit "reload". You may need to use unique urls for changes to images once you start do this. example (cache for 42days and resize to 256x256: <img src="http://mediacache.appspot.com/

App engine media cache

Image
Ever needed resized images on your site but didn't really want to run batch resize operation? Did you try setting the css settings to resize the image, but realize you where totally hosing your low bandwith users (or generally killing your user experience to begin with). In response to these problems (and the general expense of tools like scene7) I began building a google app engine cloud computing service that will do this and ultimate enable caching. It is essentially an intelligent reverse proxy that will enable image transformation and caching via google app engine. As an example, suppose you want to see the following image on your page But you want it resized to 150px wide One way (the css way) would be to apply style="width:150px" and you would get the following: <img style="width:150px" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDJu46SDigVQUkrf_LtMuFWkm935LJ4SuqHIhwKwtLPy_Z4n5Ey-v_bdRTK7N83LoAlevsAtHAjopQcTt1gSjazArRm2_lK4li

The Road to Enterprise Cloud Computing

I'm at a company that has a number of fairly high traffic web sites. Essentially, there is a holding company that does the "IT Stuff" and there are a number of brands that we support. Problem is, all these brands want the same sort of stuff, but just slightly differently. For example, they all want a store locater, they all want to search for things by categories and attributes, they all want a movie player, new/blog service... Historically, we'd get the request for a "rewrite" of a brand site. We'd spin up a project, start copy/pasting code from other sites and assemble a fresh new application from the pieces of the old ones. This is good, we're at least reusing some things instead of simply recoding everything from scratch.... but, it's also bad. Why? Because we're creating independent copies of code that does the exact same thing (see copy/paste coding ). Our previous solution to this problem was to not really update anything after

Leadership - Followership

Good leaders MUST be good followers. All to often people will get drunk on the idea of "being in charge" and forget that they're still part of a larger team. I've seen teams work on projects that are completely counterproductive to the objectives of the larger organization. You are a piss poor leader if you do not follow your leader. Without followers you are not a leader. You might be "in-charge", but that doesn't necessarily make you a leader. Many folks make the mistake of assuming that having their name at the top of the org chart makes them the leader. This is not so and is a myth that should be dispelled. Good followers are not necessarily good leaders. Perhaps the best example of the peter principle at work is to have people try and "groom" good followers into becoming good leaders. While this may work in some situations, there are people who are perfectly happy to follow and not take on the responsibility of leadership. EGO wil

Information Architecture

Information architecture (IA) is a relatively new field that is absolutely critical for building effective information systems. The best definition I can find for IA is from www.interaction-design.org . The goal of Information Architecture is to improve information access, relevancy, and usefulness to a given audience, as well as improve the publishing entity's ability to maintain and develop the information over time This definition is OK, but it seems to be heavily biased toward software user interfaces and web design. Most folks, if they think of IA, want to know which button should go here and which field should be next to which other field. While this is an obvious and important application of IA, it is the equivalent of worrying about the order of the words in the title of a book, but ignoring the other 200,000 words INSIDE the book. As a person who working on projects that exist almost exclusively in the mind, a large part of my time is spent trying to get people to wor

T. Boone Pickens, Bill Gates, Warren Buffet, Steve Jobs, Eddie Lampert

I'm reading a book by T. Boone Pickens The First Billion is the hardest and I heard the same old story repeated. Mr. Pickens, as well as the others mentioned above are similar in that they are all fairly wealthy; but digging deeper, they are hard workers who take big risks and subsequently have reaped great rewards. When you look at the sorts of things these guys do, it's striking that they are in different industries and have different techniques for success within their industry. A few are crappy leaders (of people), they've all made various and arguably large mistakes. More importantly, however, they also all observe the world around them, seek out opportunities, take calculated risks, and succeed where others are not even looking. None of them "got rich quick", they moved forward at what some might actually consider a snail's pace. Each tiny step forward, however, built upon previous successes and failures. When studying these guys, the 80's mo