The modern Notes Developer ( submitted from socialbiz)

At Red Pill Development we have a saying that "Modern is not a destination, but a journey". I'm not going to go into why we say this, but in order to partake in this journey the modern Notes Developer will need some tools at his/her fingertips and to re-think the development process.

The typical development process for a change to an existing application probably goes something like this:

  1. Create a copy of the production app on the development server
  2. Copy whatever element needs to be changed by creating a "Copy of Element"
  3. Make your changes
  4. Create a copy of the app on the Staging or QA server
  5. User Acceptance Testing
  6. Repeat steps 3 thru 5 until UAT is accepted
  7. Replace the design in the production application

This process actually creates some issues. The copy you make in development will probably be named something like mydb-08122013.nsf. So we have our new copy which is accompanied by the last 5 years worth of changes. You'll have several copies of the same design elements in each of these copies with the only clue to their usefulness being the modification date (which isn't accurate because the administrator has to sign the app when put into production and/or staging which changes all of those dates).

So the answer to this problem is to use a Source Code Management System of some sort. This is actually a post all its own and there are some excellent ones out in Lotus Community to cover this. If you use Git, which I highly recommend, I also suggest Source Tree from Atlassian as your Git client. Since I've started using SCM, I don't know how I ever got along without it.

Now another issue you'll need to tackle is troubleshooting your applications. There are several tools here that you'll probably find useful:

While not a tool but just more of a convenience is having a local Domino Server instance to develop against is priceless for troubleshooting efforts. This allows you to turn on java debugging and use the Eclipse Java Debugger, easily see print and System.out statements, read log files locally without a logging tool and not worry about crashing a server and the headaches that go with that in a corporate environment. I would like to call IBM to task here to come up with a free development license like they did with Domino Designer to attract people to the platform.

Another technique for the modern Notes Developer is the use of JS Frameworks, CSS Frameworks, alternative data storage databases and OpenSource Java projects. With XPages we can use all of these without much hoop jumping. Some of the more popular and powerful ones:

  • jQuery - a Client Side Javascript framework - A great framework with many plugins to address about anything you might need
  • Dojo - a Clients Side Javascript framework - Another great framework and included with Domino
  • Twitter Bootstrap - A CSS Framework - Great for producing good looking UIs in a short amount of time
  • Apache POI - A Java Microsoft documents API
  • Google GSON - A Java JSON API - Great for producing and reading JSON
  • JDBC - Java ODBC type drivers for almost all relational databases
  • Neo4J - A Graph database - Great for social/analytical sites
  • OrientDB - A Graph Database - Another great graph database for social/analytical sites
  • OpenNTF Domino API - A replacement for the Java lotus.domino API - Excellent project that makes working with the lotus.domino api a joy

My final recommendations for the modern Notes Developer is to start learning Java, HTML5, CSS and Client Side Javascript. I can't stress this enough. If you've been writing LotusScript for any length of time, you already know the lotus.domino Java API. If you plan on creating XPage applications, this is the perfect excuse, absolutely doable and nothing to be afraid of. It will open up your options as a developer on what you can deliver in a timely manner and also result in much more maintainable code. Also, start embracing client side javascript, CSS and HTML5. All of the items I listed here are the backbone of XPages. By learning them you also open yourself to being something other than a Lotus guy/gal as all web development shops use these technologies. Yes it'll make you a modern Domino developer but more importantly a modern Web Developer which just makes sense in today's corporate environment.