Archive for January 3rd, 2009
Lotus Notes
I’ve had the, um, privilege of writing a lot of code for Lotus Notes applications (native and web). It is a horrifically painful experience. Some simple things are easy, others are impossible. Don’t get me started on how it goes when you try to do complex things.
Do I hate Lotus Notes? Not really. I hate the way the platform is inflexible and encourages bad development practices. Lotus Notes is also riddled with what some might call “convention-over-configuration” features. Others would call these “wildly inconsistent, undocumented behaviors” or even “bugs.” I just love having no programmatic access something mundane like the querystring without adding a special field to all of my documents. Seriously, why isn’t this just in the NotesSession object?
I am halfway through reading The Pragmatic Programmer (It’s as good as everyone says). And I haven’t found much in it that I can apply to my Lotus Notes development work. Andy and Dave’s advice isn’t deficient. It’s usually immediately obvious how and why you would want to follow their suggestions. Instead the limits of the Lotus Notes platform actively work against good development practice.
For instance, I’m converting several MS Access applications to Lotus Notes web applications, so it would be nice to be able to generate NotesForms from the database schema. This isn’t possible because you can’t meaningfully modify a NotesForm object programatically.* Instead of being able to write some code to alleviate this pain, I have to go through a long, tedious process involving delimited files, format listings, and mouse clicking.
So, contrary to my constant exclamations, I don’t hate Lotus Notes. I hate the restrictions it places on me as a programmer. I hate that it encourages people to be really, really crap programmers, while still considering themselves programmers.** And I hate that it could be so much more, but isn’t.
* Is there some sort of black magic that will let you do this? If so, nobody I’ve ever worked with knows it and Google doesn’t know it.
** Okay, so most of my co-workers consider themselves “Lotus Notes Developers.” Being a Lotus Notes Developer apparently entails lots of copy and paste.***
*** It seems that every Lotus Notes application borrows the same broken code. I have some real fun stories about this — more later.