What's The Best Way To Learn Domino Development?
I received an email the other day where the sender asked the following:
I am trying to learn Domino development fairly quick, so do you have any recommendations for a new developer? I am from a Java background, so I am not completely new to programming.
It's not the first time I've had an email along these lines, although it has been a while (read what you will in to that).
Trouble is I never know what to say. It's normally something along the lines of:
Download some templates or freely-available databases and pick them apart. You'll learn all the tricks as you go.
Is that good advice though?! It's the easy answer, but is it the best?
Is picking other people's code apart any way to learn. I guess it might be with other platforms and if you're that type of person (I know I am -- I prefer to pull things apart than sit in a class or watch a video).
What about Notes though? The trouble with Notes development is the myriad ways of achieving the same goal. After all my years developing Notes apps I can still look at a database designed by somebody else and just stare at it nonplussed, with no idea how on earth it's doing what it somehow manages to do.
Imagine you're learning Notes and looking at the HTML produced for a Form and you can see a Field has an ID property different to its name. Imagine how long a newcomer to Notes might take to find out where the ID had been set. Especially if it had been set in the Help Attributes section of the field (can you still do that?). It's the little things like this (that make little sense, even now) that will trip them up.
Maybe the best way to learn is in fact to take a blank Form, add a Field, create a Document with it, open the View, add some columns etc. Maybe you have to start from scratch. Once you realise how easy Notes is then it might help reduce any confusion.
Anyway, my reply this time said that I'd ask you lot and get the general opinion. Next time I'm asked I can just point them here.
So:
- What is the best way to learn?
- Are there any decent books to help?
- Any online video/tutorial-based training?
- Are free templates best avoided or not?
I open it to the floor...
What is the best way to learn?
Try, try and try again. I had a friend who started to learn the basics. The easy option was to give him some forms to edit so he got used to the layout on Forms. Then views since he could apply the fields he had created on the Forms easy enough. Then start on the harder concepts (Subforms, shared fields, pages) before finally messing with Agents.
Are there any decent books to help?
Never found any suitable when I started. And these days I haven't bothered looking. There could well be Dummies Guides around that might help.
Any online video/tutorial-based training?
Pass.
Are free templates best avoided or not?
Ouch. Can of worms. Don't go near the OpenNTF mail experience unless you want to have apoplexy. But a lot of the freebies are suitable to pick apart. But as you say, one persons code, is another persons nightmare.
One thing is for certain, whoever is learning has a steep learning curve. The good thing about Notes is it lets anybody become a developer. The bad thing about Notes is it lets anybody become a developer.
Hi Jake,
I was a completely non-programming / development person (I'm a Subsea Engineer) but I found the Notes 5 in 21 days by SAMS a pretty good start. I've since updated with the Notes Developers Toolbox AND the IBM Press Notes and Domino 6 Development hugely useful but then I am a complete novice. I am waiting expectantly for a Notes 8.5 book as I must admit I am lost with the new Designer layout though. I would say any of those books would be good for learning the Basics (the Developer's Toolbox covers Lotusscript pretty well as well). I look forward to seeing the other ideas.
For me the IBM Designer redbook is still a gem for Domino beginners. It has not been updated since R6 but (un)fortunately if you don't want to start with Xpages it still is a valuable ressource because anything else is more or less the same.
Url: http://www.redbooks.ibm.com/abstracts/sg246854.html
Many advanced templates are hard to understand and while the results are impressive I do not think it is a good start for Domino beginners. the best way to learn Domino development (at least the web part) probably is to hire Jake Howlett for a few days ;-)
1. Read the Designer Help!
2. Read the Designer Help!
3. Read the Designer Help!
3a. Learn and understand the difference between BACKEND and FRONTEND.
4. Start with a simple application and add simple functions
5. Join a forum and ask specific question when you get stuck
6. Try, fail, learn; try,fail, learn ..., try, succeed, optimize ...
7. NEVER use code, you do not completely understand.
I'd agree with Ulrich.
The designer help has a lot of sample code to get you started and easy enough to follow.
For the newer features (compapps/xpages) I'd recommend the wikis as well. There is a lot of tutorial content there.
I do not feel the Help a good reference as a LEARNING book, but a good support for development.
I used to use the redbooks (and even Yellow books) which helped me quiet well.
Further I would recommend this site (ofcourse) and www.dominoguru.com. Lots of stuff at IBM developerWorks!
My response to that is usually to ask the person what method is most effective for them to learn and are they willing to shell out some money.
I would recommend the Notes Development bible by Rocky Oliver and Brian Benz (not updated past V6 but still a great intro).
I would also recommend some of the TLCC training classes.
"Especially if it had been set in the Help Attributes section of the field"
What are the "Help Attributes" of a field?
Back in early R5, there was a tutorial in Designer that took you through building a simple database and web app - forms, views, pages, hotspots over images, etc.
I cannot find it in 6.x, 7.x or 8.5, however.
There is a tutorial called Lotus Education on Demand: Building Databases with Domino Designer 7. It covers the basics.
Part 1: Getting Started with Domino Databases
Part 2: Adding Functionality to Forms
Part 3: Views and Navigation
Part 4: Agents and Security
http://www-01.ibm.com/support/docview.wss?rs=475&context=SSKTWP&context=SSKTMJ&q1=education+application+development&q2=education+on+demand+notes&uid=swg27007539&loc=en_US&cs=utf-8&lang=en
I agree with Ulrich. The Designer Help is sooooo usefull. And no need to buy extra books IMHO.
Let them start with the basics: forms, views, fields. Then move on to subforms, agents, ....
And first let them work for the client only. Then show them the possibilities for the web. Too much in 1 go and you'll throw them off....
And as Ulrich pointed out, once they go deeper, make sure they understand the difference between backend and frontend.
Talked yesterday with a 26 year old student.
Work for 2 or 3 years a crazy consulting company preferably in your 20ties. Its an unsustainable lifestyle, but for 2 or 3 years, you'll learn the business from a lot of perspectives. Especially you will learn that that there is a reason for all those project management, software and work-psycologic books.
Then look for a better consulting company or start your own business.
Get used to frequent forums and blogs. Never mind if you get the impresion that people don't like you or think you ask unspecific questions.
This is pretty much the same question asked during Gurupalooza at Lotusphere this year. Somehow I never quite managed to get to the microphone but I think the answer is you learn Notes more or less like you learn to work: You start slowly.
We have a staff of 20+ Notes/Domino developers, half of whom came to us knowing nothing about Notes. I don't think there's any way around putting your hands on it if you want to learn how to build Notes apps.
In our case, we have enough different work around here we can have newbies start on the simplest, most basic stuff (which would be Form development) and then work up from there. And, we have the benefit of lots of mentors and a culture in which you're encouraged to ask questions.
When I learned, back in the Stone Age, I had a guy I could call if I got really stuck but basically I made up an application and tried to build it. In my case it was a Real Estate MLS application--home listings--and I started with the form then went to views, and so on.
You have to learn at least some of the Formula language. If you have some kind of programming background, LotusScript or JavaScript will come pretty easily. With web development there is a lot to know mostly because of all the options you have with Domino.
For these more advanced things, there are some resources. Rocky's book, for sure. All my articles for Advisor (50 in all) are available on-line to show you the ropes in LotusScript, JavaScript, CSS and AJAX in Domino. Your site is a great resources as are many others.
If you can't find a mentor (which is easily the best approach), get your hands dirty and start building something.
I learn by doing. When I started with Notes, I created a database and started building forms and views. It was utter crap, of course--in fact, I shudder to think how many untitled_n fields there were in those forms.
As I became more familiar with the doing aspect of building apps, and proceeded to hit roadblocks, *then* I started looking at other developers' code. But I needed to have that familiarity first.
My only real recommendation is to start from the front-end and work your way back. I've met too many programmers who jump right into LotusScript or Java agents, and never learn what tools are available in fields, forms, and views.
I've seen them proudly display their code, only to have someone say, "What, you mean you re-wrote @Picklist?"
The trick with Notes is learning what options are available, where they fall in the application design, and what effect each option has on the web vs. in the client vs. as a scheduled agent, etc.
This really comes with experience. A few days spent looking at every option in every settings dialog will go a long way towards understanding what the platform can do.
The first question I'd ask is, "Why do you want to learn Lotus Notes development?"
1. Do you just want to build your own apps at home or in your small business?
2. Do you work for a company that already uses Notes?
3. Do you want the app to work only in the Notes client, on the web or both? (This narrows the learning curve.)
4. Do you have a server already running and an administrator or are you doing everything yourself?
5. Do you have to do anything with Notes mail and, if so, for how many people?
The answers to many of these questions may reduce the areas of Notes that have to be learned in depth.
For example, I focus on web development so I almost never use LotusScript or actions. I also never use response documents because I can't control the order the child documents appear in a view. I also have a server administrator so I've only had to learn the parts of administration that impact my designs such as automating account, group, role and ACL maintenance.
Some of the advice above is quite universal such as, "3a. Learn and understand the difference between BACKEND and FRONTEND." This was a big breakthrough for me back at the beginning of my journey. Now I know that the backend is a non-relational database and forms are a filter in front of it.
The person asking has to asses their own learning style.
I really have never been satisfied with tutorials of any kind. Most of them just give you a series of steps to get to an unspecified end goal. They often fail to illuminate the thought process of how they knew this set of steps would get where they wanted to go and what the trade-offs were on the way.
Also it's part of my personality that I really can't get into a tutorial that doesn't focus on exactly what it is I want to do at this particular moment. For this reason I prefer reference materials with a good index. Most everything I've learned about Notes came from the Designer Help. Then I look to blogs such as CodeStore for inspiration to go where I've never gone before (cue StarTrek fanfare music:).
Good luck,
Rob:-]
As a 14+ year admin, I finally decided to jump in the Domino development waters recently. The TLCC CBTs are awesome! Also, a few mentioned both the Domino Development Redbook and DD Toolkit books. As one doing it now, those are really the best place to start if money is tight.
Did the books when I started (Sam's, Que), took the Intro to Domino Designer course, didn't get it. Oh, sure, I could follow along, but I didn't GET IT. You know -- I could create forms and views, write a formula or two, but I couldn't think in Notes (let alone Domino). One afternoon with a working Notes developer and I got it. It wasn't quite zen grok, but it was enough to make me a working Notes developer.
Zen grok followed not long afterward. Yeah, it took a while to get a grip on all of the various LS classes, find all of the really useful formulas and so on, but if you consider that Notes/Domino development consists largely of filling in the details around an armature of forms, views and agents, being able to think in terms of those structures is 90% of the battle. I wouldn't have gotten to that point without that afternoon spent building a truly silly electronic chequing application from conception (what would you like to build?) to finished product. (As silly as it was, though, to build something like that using nothing but basic design elements and formula language, I could actually make the darned thing work for real these days. Or, rather, I could have before the Parkinson's ate my brain.)
In the R5 Designer client, there is a great learning application: Waterworks.
In two hours max, you'll have learned the UI, all the design elements (except the new of course), and built a website.
This is the application I start with when working with someone to learn Notes development.
If they don't finish, then I know they're not really interested in development. If they are, then I give them additional changes to work on that add on to that demo.
I have been drafting a blog entry on this for a week or so now. I agree with those that say it's best learned by doing. But being a recent newbie, I also know newbies don't want to hear that. Check out my blog for my recommendations. I linked back here for all the great feedback!
Jake,
If someone is totally new to programming then I find starting out with a simple form and view in the Notes Client would be the easiest way to go. Like other people have said, build something. Maybe some type of tracking system. It can be one form and one view because it does not have to be the next great app.
I would use formula language first because that looks like something a person would use in a spreadsheet so the learning curve might be smaller for a newbie. From there add features to the database. As they ad new features I would try using LS front end classes and then the backend.
As they build confidence and understanding, they can move to the branch out to programming for a browser.
E
I find the key to learning new development techniques is to have a goal. Decide on something you want to build and then use forums, help files etc. to work out how to build it.
Forums and other developers are a really good way to learn because other developers will generally steer you away from bad practices.
Also, like others have said, DeveloperWorks has a wealth of information (redbooks, tutorials, wikis), it's just a matter of finding it.
I forgot to mention google and blogs are also really helpful!
As a Developer, I Started learning about the Domino front end objects first then the backend objects. Then I went for the books like Domino Bible which is really useful for the basics like to know about the properties of design elements ..etc . Now i am following the blogs to improve my knowledge. but while working Notes Help is the Best Bet.
@Dragon Cotterill "The good thing about Notes is it lets anybody become a developer. The bad thing about Notes is it lets anybody become a developer."
Never a truer word said! There is a perception that Notes development is easy... well, it's easy to make a dogs breakfast of it that's for sure.
Jake, if "someone needs to learn quickly", then they are already taking the wrong approach. Probably a short stint they have to do ? If so, then it's more cost effective for them to pay for an experienced pro to do the work and move on.
If they are intending to make a long term gig of it, then they should invest in some real training, in conjunction with a mentoring partner. But if they say, ".. yeah but I just gotta do this simple app..." then refer them to any of the books published out there, and cast them loose....
We recruited a new developer lately -also with a Java background. He started with the Notes Bible, but found this to be more a reference guide then a learning book.
So after some searching I stumbled upon http://www.waresource.com/. They offer courses for fairly good prices (e.g. developer 6.5 course for 200$), with examples and exercises. You can start from scratch -what I think is a good case- or you can jump in.
I didn't look in the complete course but from what I saw it is good learning material; our developer is enthusiastic about it ánd he's making progress.
I trained a couple of guys in domino development in my past and I think that the most important lessons are:
1. Force newbies only to use @Formulas and @Commands at first. Basics first! No LotusScript, no Java to start with
2. Explain the difference between front-end and back-end
3. Explain what author and reader fields are, and how roles and acls work. All are the key to Notes security, and until developers understand them they cannot secure
A company called Keystone made some really good intro videos for general LN development and a series of 5 videos just on LotusScript.
They currently only list a few for LN5, Using LN, Development, and System Administration.
http://www.keystonelearning.com/courses/browse/
Well for me it was "Domino for Dummies" (don't laugh - it was a great intro), ty LotusScript and starting here - http://www.codestore.net/store.nsf/blog?openview&start=1195&count=5 - and reading forwards.... 8)
Sounds like the individual has been tasked for a development project. Even with his/her background in Java, I really feel for the individual. Like you said, Jake, there are so many ways to accomplish things in Notes as well as Domino and there are many tricks and workarounds.
As has been said by others, the best thing for this individual to do would be to find an experienced Notes developer to work with them on getting the project done.
As an administrator, I started with Formula.
But always had a goal / task to complete.
If there's no goal, you probably won't hit all the glitches that a business task requires.
Simple Formula to adjust field values, change view columns etc.
Don't try an learn Formula, LS, Java at the same time.
After many months of admin, troubleshooting errors by following through LS, I then started to pick up on LS. But more importantly, I was picking up on the methodology of the professional developers. eg. error handling, security, backing up your designs!! and how to use templates.
Again, task focused. If you start with a blank sheet, you won't go anywhere.
It was still very hard to start LS code.
DIM - what the hell is that? Now natural.
So always keep a database full of your code snippets.
Designer Help file is great. Use the index and copy the examples.
notes.net - find out the bug that means in your scenario you cannot use that piece of code.
Google
OpenNTF - grab the templates.
But also, most of my early learning was looking at the IBM database designs. They have already done most of what you will probably need. So just think of those hidden buttons in their templates, view column designs, forms etc.
Now I'm looking at Java, I feel I've gone back to square one. Try, try again. But it takes time.
1/ Notes Development - don't bother.
2/ Domino Development....Go to www.codestore.net, Read the blogs from day one, download the databases and tear them apart. (Well that's what I did!!)
My best advise: If you get asked to do web development on Domino - RUN, don't look back!
If you do take on the challenge++, you will never be happy again, or be forced to lower your standards.
IBM have good C/C++ developers, but they are not web developers.
When IBM makes killer applications on Domino, like Quickr and iNotes, the use tricks that are totally obscure, instead of solving it in a general reusable way.
Why don't they solve the fundamental problems. Like doing valid strict HTML, serving the content gzipped and too many other issues to mention.
RUN - Dominos are falling/failing!
On the first day Ozzie (Ray Ozzie, Son of Lotus, King of Kings, ruler of Geeks [not Greeks], etc) said "let there be Form", which is a template, an Adam if you will. From which many a document shall spring, of various Colour, Creed and Categories.
On the second day Ozzie said "let there be View" and there was View, through which the Gods could see documents categorized in their great diaspora.
On the third day Ozzie declared that Forms, Views and Documents shall all live together peacefully (Note Storage Facility - NSF).
Atop this little foundation of elements were born Adam's two sons, the Discussion and Mail templates. I think it's important to tear these apart to really undertand where it all comes from otherwise you'll be scratching your head for years. That is the Old Testament.
I'll complete this narative when I have more time hehe
Pete's link looks good and may help with learning...
http://www-01.ibm.com/support/docview.wss?rs=475&context=SSKTWP&context=SSKTMJ&q1=education+application+development&q2=education+on+demand+notes&uid=swg27007539&loc=en_US&cs=utf-8&lang=en
Zaidi, thanks for posting the link. I'm brushing up after two years out of the Notes business and this is a great review for all the small details that have become fuzzy.
Of course, thanks to Jake for opening up the discussion.