07/19/2010

How I Escape the Techie World



On the VERY rare occasion that I have free time, I like woodworking as a hobby.

I started as a kid working with my dad, and have loved it ever since. There is just something about that feeling you get when you complete a project (and, yes, there are other types of projects that can give you that feeling, too!)--especially when it comes out better then you expected.

When I bought my house, I built a 16 foot by 20 foot shed/workshop, so I could really explore my hobby. I have done many small projects for my house, and my kids. I've also finished off part of my basement and built a window seat with storage underneath, plus two closets. My list of upcoming projects includes a tree house for my boys, a computer desk that is actually useful for my home, screening in part of the deck, (bugs in New England are terrible), a large patio for my back yard, and many more.

I want to buy a wood lathe to try my skill at wood turning. That would really expand my skills and the level of my work. (I just need to talk the wife into it). I could make pens, bowls, cool table legs, etc... A guy can dream, can't he?

After a day of playing with my tools all the stress of the world has melted away. What about you? What do you do to unwind at the end of a long day?



O Category :

07/12/2010

Application Testing




One of the first things I did when I arrived at Teamstudio more than 3 years ago was to look at our product portfolio to determine where there might be new product opportunities. Testing was one area that jumped out at me. It seemed to me that Lotus Notes did not offer much in the way of testing tools, which made this seem like a nice opportunity for Teamstudio. Furthermore, very little is available from anyone in the Lotus Notes space specifically targeting testing.

Before I had a chance to pursue new product opportunities, I was asked to lead a project to develop a series of best practices across the application development life cycle specifically targeted at Lotus Notes. This took several months to complete, but we got a great set of policy guides and implementation guides out of the effort as well as a book on IT Governance for Lotus Notes.

The policy guides proved to be quite popular among Lotus Notes Developers and Administrators. I had a great number of conversations with those who downloaded the policy guides about how they were performing various tasks, especially around testing. I heard everything from “we don’t do testing” to “we develop in production … that’s what the users are for”.

I quickly learned that the popularity of the policy guides did not necessarily translate to a good product opportunity. Testing within the Lotus Notes community seems to be at best, an informal phase in the development life cycle. I know a lot of Lotus Notes Administrators and a lot more Lotus Notes Developers. But I am yet to meet anyone with the title of Lotus Notes Tester.

Regardless of the formality of the processes used, one area of testing that is done regularly is that of User Acceptance Testing. Even when development is done in the production environment (OUCH!), the users usually get a crack at running through the application before it is “officially” released to the masses.

Depending on the size and scope of the release, different aspects of the system should be tested. For example, a limited release may only require testing of new functionality while a new system will require complete testing.

Remember, the purpose of user acceptance testing is more than getting one of your users to say “looks good to me”. Instead, you should be working to ensure that the application is compliant with business rules, meets the users’ expectations and performs as expected in the actual business environment.

User acceptance testing should include various aspects of the system including:
- Functionality:  Application perform the business functions as specified
- Completeness:  All necessary information to perform a business process or user transaction is present
- Accuracy:  Correct content from the user’s point of view
- Usable Results:  Information returned after an operation, reports generated, etc., including layout and content are in a usable format for the user
- Documented:  Accuracy, usefulness and usability of user documentation and procedures should be provided to the user
- Procedures:  Release, installation and configuration management process should be in place to support the application

This is an area that is subject to scope creep. Be careful! Sometimes there is a fine line between “what the system must do” and “what would be nice to do”. When in doubt, you can always go back to the requirements documents. At least I hope you can.

But documenting requirements is a subject for another day.


O Category :

07/06/2010

Want vs.Need




I was in a shop the other day and overheard a conversation between a young boy and his mother. The boy, about five years old, was after the latest 'Dr Who' comic (a spin-off publication from a popular and long-running BBC sci-fi series). What caught my attention was the boy saying, '... but mummy, I really, really need this!' To which his mother replied:  'No, you really, really wantit – there's a difference'.

Now, I am not sure if this distinction was not completely lost on the boy - at five years old I am fairly certain that I thought want and need were the same thing – but it did set me thinking about how much I still confuse the two in my adult life.

For example, I am about to replace my car. What I need is something that will get me from home to office and back, with the occasional long distance journey (which means over 50 miles in the UK) in reasonable comfort and at relatively low-cost. What I want, in addition to the obvious, is sat-nav, iPod connection, air-con, leather seats, decent acceleration and preferably something that will express the success and charisma of a movie-star (in my dreams!).

My needs would easily be met by any decent hatchback: a Ford Fiesta or VW Golf, for example. Does that stop me going for something considerably more expensive? In a word, no.

Nowhere is this lack of distinction between want and need more apparent than in the realm of software requirement specification. Look at the software you use from day to day, particularly the bespoke stuff, and ask yourself, 'How much of the functionality do I need to do my job? How much of the functionality makes me more efficient, prevents unnecessary work, or eases communication with colleagues?'

Then, turn the question around. How much is just there because it could be done? Because someone thought it might be useful? Because it was just 'cool' to program? Worst of all, and perniciously subtle, how much of the functionality actually increases the workload without generating any real business benefit? For example, the ability to generate a complex report with lots of detailed data and graphs, when the recipients are only ever going to read the executive summary.

When specifying requirements for software, rule number one is unless this feature or feature set actively supports a significant business need it should be dropped or at least heavily de-prioritised. Particularly in these lean economic times, keep in mind that implementation of any functionality costs time and money, and 'cool' features often do nothing for, and sometimes actively detract from, user productivity.


O Category :

06/25/2010

How did You Learn Lotus Notes?




Recently, I was asked by a colleague:  "How did you learn Lotus Notes?"

I truly didn't know how to respond. It certainly made me take a collective journey through my 20+ years of development experience to figure out how I got involved with this thing called Notes. Here's my story:

The year was 1994  and I was working at Lotus as a Technical Notes Trainer. I had been training customers on Notes Version 3 for a while and was looking for an avenue back into development. An opportunity arose to work at Iris and I jumped on it.  

I was part of a small team that was tasked with making Notes more Internet savvy/aware. The first thing we built was the Notes NNTP  News Server Task. My role on the project was to create the Notes databases/templates which would be used. While I was sitting in the same building with the people who wrote the core code, I was a little intimidated by them, so I chose to learn things on my own.  As anyone who has ever developed a Notes database knows, it's 90% trial and error and 10% luck. I would occasionally ask a few people questions, but the response I usually got was "I don't know, it should work that way. Why don't you try it?"  

LotusScript had just been added to the product, so template developers were charged with finding uses for it. Overall, it was a dynamic, exciting, frustrating and rewarding experience. The NNTP News Server probably shipped with Notes 4.x (go ask Barb Mathers - she would remember better than me).  We next built the Web Retriever for the Notes Client, which essentially made Notes a web browser by using the ActiveX functionality of IE's Web Browser Control, but saving the pages in a Notes database.  At the same time, another small group from Lotus was creating a Web Publisher for Notes which was eventually called Domino.  Somewhere in there, IBM bought Lotus and the Lotus Notes Server became Domino--and I needed a break!

After taking a seven year hiatus from Notes, I was afraid of being lost within the many enhancements to Notes in versions 6, 7 and 8. Fortunately for me, it was like riding a bike, or putting on a comfortable pair of slippers. That's not to say that some amazing things didn't happen while I was away--I think Eclipse is one of the best things to happen to Notes in a long time. And, here at Teamstudio, we are jumping on the Eclipse plug-in bandwagon with a new version of our flagship design tool, Teamstudio CIAO!, which is context-sensitive within the Eclipse designer. For a Notes developer to have that kind of integration is something I thought I'd never see.  

With the understanding that Notes is a dynamic and ever-changing platform, here is my advice to new Notes developers:

1.  Forget everything you've learned about development in other products/ It doesn't apply to Notes!
2.  If you're ready to hit your head against a wall, put it away for a while and wait for an "aha" moment.
3.  If something isn't working consistently, bring somebody else into your office.  It will behave for them.
4.  If you're having trouble with it, somebody else probably has, too--so Google the problem and you'll likely find a solution.
5.   In order to preserve your sanity, use Teamstudio CIAO! as your Notes source code control system.

So, to answer my colleague's original question: I never learned Notes, I just grew up with it.    



O Category :

06/10/2010

Treat Your Change Requests like Your Deposit Bottles




For those of you who don't know what deposit bottles are all about, check out this old Seinfeld clip:

http://www.youtube.com/watch?v=TEpDBQ_Ww6k

So how do deposit bottles relate to change requests?  Nobody returns their bottles as soon as they are done with them, so don't release your changes as soon as you finish them. But wait--isn't reacting quickly to all change requests the responsive thing to do? Well, yes... But remember that things are constantly changing.  And nobody likes change, let alone constant change.  

And the other extreme?  I was returning my one re-usable bag of bottles the other day and saw someone with several shopping carts full of bags of bottles.  Must have run out of room under the porch to store more (hopefully it wasn't the result of the weekend's festivities).  That would be a metaphor for storing up change requests for way too long.  You'd be explaining all the changes to your users for days, just like it will take several days for that guy to put all his bottles into the return machine.

So what's the right mix, and what do you do in the meantime?  Well, you have to touch that database anyway, so why don't you leave it better than you found it?  Any hard-coded server names?  Recently, I found a formula agent from R3 days.  It had that old

fldName := fldName

stuff all over it.  It also checked to see if it was running on OS/2!   A few deletes and a much better agent.  Nobody sees those changes, but you won't have to go back in there for another 10 years, just because you got a new server.  

Maybe you could run a spell check... Here's a fun one: Search the 8.5.1 client help contents for lotuscript with one "s."  Just sayin' - it can happen to anyone.

How often to release new code?  There's something magical about the number 7, so try releasing seven changes at a time.  And tell them I told you to.


O Category :  

Feeds

Custom Button Custom Button

Category Cloud

Disclaimer

The views expressed by the authors on this blog do not necessarily reflect the views of Teamstudio, those who link to this blog, or even the author’s mother, father, sister, brother, uncle, aunt, grandparents, cousins, step relations, any other blood relative - and sometimes not even the author himself or herself.

Comments on this website are the sole responsibility of their writers and it is assumed those writers will take full responsibility, liability, and blame for any libel or litigation that results from something written in, or as a direct result of something written in, a comment. The accuracy, completeness, veracity, honesty, exactitude, factuality and politeness of comments are not guaranteed. Oh, how they are SO not guaranteed.