« Could Notes/Domino's Greatest Strength Actually Lead to its Demise? | Main| Lotus Notes Environments--One-Tier, Two-Tier, Three-Tiers and More! »

The Undisciplined Notes Developer


Bookmark : del.icio.us  Technorati  Digg This  Add To Furl  Add To YahooMyWeb  Add To Reddit  Add To NewsVine 

For my first post I would like to draw your attention to this article by Jeff Atwood.

This references Scott Koon's blog entry on developer discipline. I basically want to echo the sentiments expressed, and say that nowhere is this more relevant than in the Notes/Domino development world. I would argue that Notes developers have always had a tendency to a lack of discipline, largely because the way Notes itself grew up permitting, or what some would say encouraging, a do-as-you-please approach.

But what do I mean by discipline in this context? Well, I think it is fairly well summed up as "spending the time and effort to do things in an orderly way in accordance with best-practice." This means in each project actually planning for, and doing, requirements gathering and evaluation, design, and testing. It means having in place and using a robust change management process, source code control, version management and release cycles. It means having and enforcing coding and documentation standards.

Now you may say that your timescales are always so tight you can't do all of this. I say that not to do this is always a false economy.

Comments

Gravatar Image1 - Yes, but what source code control and versioning tools really work with Notes? Is TeamStudio the only option? Does it really fit in well with people's corporate processes?

Especially in shops with mixed technologies, the question is not IF we should have good discipline, but HOW?
Is it really effective to store a .ntf into VSS, CVS, Subversion, etc?
What if an app update had 100 changes, 99 of which were perfect and one failed. You cannot roll back just one change when working a binary, like you can (carefully) with text-based source. Nor would you want to keep 100 binaries to allow such function. Where is the appropriate middle ground?

Likewise, where do we draw the line between code and data? I've seen great apps with profile docs that control the program logic. Do you store versioned profile docs?

So it is all fine and dandy to declare that we should all follow best practices and be good little disciplined developers.

But unless you give details on HOW Notes people would do so, it is a fairly empty sentiment.

I look forward to continued posts here that may shed some light on these details...

Gravatar Image2 - Hi Dave,

Thanks for the comment. In response to your early points about options for source code control and version management in Level Notes, the answer is yes, as far as I am aware, Teamstudio does provide the only element level (rather than file level) solution. Our product is capable of roll back for an individual form, view, subform, agent, profile doc etc. to any previous version of that element. It also handles database level versioning and can be successfully integrated with other systems.

However, all of that is beside the point really. It is far from ideal, but you can establish an effective version management system for Notes .ntf files in ‘standard’ file based version management systems such as the ones you mention. In truth, you can even create a perfectly viable manual system that is reasonably robust.

What I was trying to say was that the disciplined developer will expend the time and effort investigating the issue and devising a system for (in this case) source code control and version management that provides necessary and sufficient control for their Lotus Notes designs. This is what ‘Just Enough Governance for Notes’ is all about – doing enough to meet the business needs, be more effective, mitigate risk and comply with regulatory requirements within the Lotus Notes environment. The undisciplined developer will just ignore the issue and hope it goes away.

I take your point about making such statements without backing it up with ideas about how to do it is an empty gesture, and in upcoming posts I and my colleagues will be offering more practical advice about tackling key issues.

Gravatar Image3 - I am wondering if Domino Designer in Eclipse will allow us to use CVS as a repository for domino design elements..

I am sure once in eclipse IBM could pretty easily do this.

It would be great then I would not need to run 2 systems CIAO and CVS.

Or if CIAO supported non notes elements that would be cool.

Thinking about it maybe with Domino in Eclipse CIAO will do that as I would like CIAO to be an eclipse plug-in and utilise the eclipse framework for dialog boxes etc...


Gravatar Image4 - My pet hate?

Squillions of lines of LotusScript with no comments to tell you what it was meant to do.

Notes is just another development environment and it's false economy to cut out the spec. Later on down the maintenance cycle some poor sap will be struggling to work out what the code was meant to do, then fix the bug. Using comments to say what the code is about is very good practice as far as I'm concerned.

(I recently saw a 10 year old Notes system with no comments at all in the LotusScript, how the **** is anyone going to pick that up & fix/change it.)

Gravatar Image5 - Where I work we simply use a Notes document library to store our templates. Each incremental version of a design has the version number in the database title, the design hook AND the filename. Numbers are not reused. Design changes between versions are itemised in the About This Database document, and in the test plan (stored with the template). Simple but effective.

Gravatar Image6 - I agree in some respects, but with great caution.

Anything that takes weeks or months to develop deserves the full documentation write-up and complete use of all controls. Hands down.

However lets not forget that Lotus Notes is a RAD tool meant for nimble turnaround. If the full weight of the "traditional" SDLC process is put on projects that take only hours or days development are we doing anyone a favor? Does a developer 2 years later need documentation for a 2 form and 6 view app? Would anyone ever choose Notes as a solution if it cost as much time and money as a .net app?

Gravatar Image7 - #6 - 2 comments :
1) RAD does not have anything to do with deployment. Just because you develop it in 2 hours doesn't mean you have to deploy that change instantly.

2) You make the assumption that the SDLC is a heavy bureaucratic process - but it doesn't have to be. No one can argue that the change you made doesn't have to be tested because testing is a continuum of activities. Sure, fixing a spelling error (which I am often found doing Emoticon ) does not require a full regression test of the application, but other things might. Nor can you argue that the request for that change shouldn't be logged as a bug report or enhancement request. These are all part of the SDLC that is perfectly in line with RAD. If your process cannot make the distinction, then its a problem with the process and circumventing it doesn't make the problem go away because now you have 2 problems.

As for the documentation comment - why shouldn't that application have documentation? Who developed it and for what purpose? Who owns it? This is all documentation that should be required for applications in production. If you don't have this, you don't manage your server or IT department very well. What I suspect is happening is that you *DO* have this documentation, but just isn't as formalized as it should be.

Final point is that non of this has to be expensive or time consuming....in fact , as an example, Agile practices don't ignore any of the SDLC, but help with processes that allow change to happen fast.

Post A Comment

:-D:-o:-p:-x:-(:-):-\:angry::cool::cry::emb::grin::huh::laugh::lips::rolleyes:;-)