photo 28 Nov 2007 05:18 pm

When to learn, and when to outsource

Photographer/Blogger/Doctor (I think) George Barr put up an interesting post a few days ago about revamping his webpage. I started to reply but it got more involved than usual and I figured I’d continue the conversation here.

I’m a photographer by night and a web-developer (mostly programming, some design work) by day. My company writes fairly complex enterprise-level digital asset management applications so when it came time for me to redesign my website, it was almost a relief to try and assemble it in the most spartan way possible. I did it by hand in notepad and vi.

What I find utterly amazing is this statement from George:

I realized this was no walk in the park, but over three years I wrote my own medical office software including clinical notes, appointments, lab, documents and so on, all together more than 150,000 lines of code, so you’d think that I could put together a website.

As a professional programmer, I would tend to agree. Medical office software is something you typically buy from Medical Manager (now owned by Sage) or Epic Systems. Customized medical software would probably cost as much as a house. The fact that George wrote some by himself is indicative of the fact that he must enjoy doing it. I’d call it being a tinkerer. Doctors probably have a fairly good idea of what their time is worth and spending three years writing medical software is not something I think they’d do just to save a few bucks.

The question is this: is it worth it to do it yourself? I gather that George would like to display lots of images, say more than a hundred, and I also infer that he would like to be able to sell prints through the site. So you’re looking at a content management system with merchant functions and some UI customization options. You have to be able to make it look pretty.

George goes on to say:

I was aware that with hundreds of images and wanting to avoid fixed size templates, I would really need a database of images. Turns out that means I have to learn SQL, oh and PHP or such.

The first thought that springs to mind is, “You wrote medical office software and didn’t use a database?!” After thinking that over for a minute I addressed the next issue: databases aren’t the best place to store images. They’re actually pretty bad. Static files work better. You’re better off making 10 different sizes of image and storing it in the filesystem than… well, I don’t really know what the alternative would be. You could store a large-ish version in a database and resize it on the fly, I guess, but that really isn’t feasible. You’d be better off storing tons of different sized previews in the database, but then you’re not really gaining anything by using the database.

That’s not to say that a database isn’t necessary. Many content management systems use them. This Wordpress installation I’m using has a database. But you certainly don’t have to know any SQL to use it. You just need to have someone set it up for you and give you access. The Wordpress software takes care of the rest.

But I didn’t really start this post to babble about all the minor technical issues. Although George, if you’re reading this, I’d be willing to trade emails with you about these issues. What really got me started on this was just the whole question of when to learn, and when to outsource. Professional software developers run into this question all the time. There’s even a name for it: The Not Invented Here Syndrome. There’s a great tendency to want to reinvent the wheel all the time. It’s more comfortable to use something you’ve created. I know the feeling, but you can’t create everything yourself and sometimes you’d be better off spending your time some other way.

One Response to “When to learn, and when to outsource”

  1. on 28 Nov 2007 at 6:25 pm 1.George Barr said …

    Chris:

    thank you for taking the time to write a thoughtful essay on my concerns. I did use relational database software for the office - 4D. I would be happy to accept the challenge of writing the software to create this website but the concept of learning half a dozen programming languages doesn’t appeal - even if they are similar. I’ll keep looking for an easier way - people have given several suggestions, including wordpress. I’ll get it right, eventually.

Trackback This Post | Subscribe to the comments through RSS Feed

Leave a Reply