Shift Happens, I guess.

There is a presentation called “Shift Happens” that I find somewhat troublesome. I think I find it troublesome because a few people around me are reacting as though they just watched an Al Gore film and can never see the world the same way again, are forever believers in some kind of cusp upon which civilization stands, with everything it holds dear at stake.

If you like, take a look at it and then see if what I say makes any sense.

  • The first thing the author of this slideshow does is let us know that there are a lot of people in the world. This is true (I guess, compared to the past), but so what?
  • “The 25 percent of the population in China with the highest IQs…” makes no sense. Therefore, the number that this intends to convey is nonsensical. I think he is trying to say something here, but it doesn’t make sense as worded. Think it through. Can you phrase it in a way that makes sense?
  • The top 28 percent of India, stated the same way, makes as little sense as the original statement regarding China. Also, take a look at this.
  • The statement that the presentation makes about the aforementioned figures does NOT mean they have more honors kids than we have kids. It means… they have more kids! They might very well all be working in a field. I don’t know, and he doesn’t show me otherwise. Education is completely different in other countries. India emphasizes memorization and regurgitation of fact, not comprehension of theory (a bit of an editorial from a few of my Indian friends). They also do not spend time on creative thinking or the arts. This statement is totally misleading and transparent.
  • China may very well have more people who know how to speak English than any other country, but how many of the “English-speaking” Chinese speak it fluently? Even if they did speak it fluently, what does this mean besides that English is becoming a standard, or at least, very popular?
  • If we took every job in the US and shipped it to China, there would in fact be a labor surplus, but because the jobs would go unfilled - not because of any other reason.
  • A lot of babies are born. A lot more are born in China and India than in the USA. I hope so. There are more people there. But what happens to girl babies in China? What does this statement mean?
  • “Today’s learner” will have up to 14 jobs by the age of 38. Okay. How many different summer jobs did you have? I had one each year I was in high school. Actually, one year I had three jobs over the course of one summer. There’s 5 jobs right there. What’s a “job” here? And what is this supposed to mean?
  • Half of America’s workers have been with their current company for less than five years. Is this good? Does it mean they keep getting better offers? Or is it bad? Does it mean they keep getting laid off? It means… nothing.
  • The top 10 in-demand jobs of 2010 did not exist in 2004. Wow. We can tell the future? This is silliness. This is not due to any crazy shift in anything. This is because the most “in demand” jobs are jobs that deal with emerging technology. Guess what? It’s emerging because it is brand new. To put it succinctly, there were no Microsoft Office 2007 specialists in 2003 because there was no Microsoft Office 2007 in 2003. But still, there were MCSEs and MCPs and people adapted pretty quickly. Things like nanotechnology have existed for longer than a few years. They just were not as well-developed as they are now. No need to worry about kids being unprepared or heading towards a life of unknowns.
  • We are preparing students for jobs that dont exist yet because the students are not working yet. A job requires a worker. That is the only reason, other than the aforementioned.
  • The USA is 20th in the world in broadband internet penetration. Well, we also have the highest number of broadband subscribers. This is a big country. Luxembourg is not so big.
  • Research and Innovation in Education? What is that? Is it a bad thing that we “only” spent 70 million on it? Seems like a little bit more than a little to throw at something that is focused on not Innovation in Education, but RESEARCH AND Innovation in Education. Come on… Besides, how many BILLIONS of dollars has the NSF and other organizations given to research and education in this country? A lot. This is just silly.
  • MySpace is not a country. Neither are the number of people who like Star Trek, or the number of people who use Google. There is not a virtual country forming, outside of SecondLife, and even that is taxed by the government of a real country, full of people who have citizenship and passports that mean something in the world. Making comparisons between the number of people with MySpace profiles and the number of people in a country is meaningless. What if MySpace was a country? It’s not. It’s nothing like a country. These are just numbers, meant to stagger people.
  • There are a lot of Google searches every month. The author of the slideshow wanted to know how people found answers to their questions before Google. Various ways, and efficiently enough that they built Google, right? Google is a tool, not the end all be all of information. The Semantic Web will be that Wink.
  • The author of the Slideshow says that 3,000 new books are published every day. According to Wikipedia, the USA publishes about 70,000 books a year. How many languages, new editions, e-books, and other publications are counted in this figure? What does it mean? It means that there is a lot of *stuff* being documented in different ways and a lot of *stuff* being written. How much of this is sci-fi? How many copies of Dianetics were published? How many variations of “Mary Kate and Ashley go to the Zoo” were written? Is this all vital, meaningful information? I don’t think so.
  • A week’s worth of NY Times’ contain more information than a person in the 18th century would come across in their entire lifetime. Okay. Well, they didn’t live as long. They didn’t communicate on a global scale. They didn’t need to know as much stuff, and they were not bombarded by infomercials and Mary Kate and Ashley and Blue’s Clues and nonsense like the presentation I am taking issue with. What does it purport to mean that the paper has more information in it than someone would come across in their lifetime? Are we somehow advanced as a species? Evolved? If so, it isn’t because we have more popup windows than we did 300 years ago.
  • 40 exabytes of information will be generated this year. Huh? What does this mean? I think he is talking about disk space here, and as we all know, not everything on the web or printed is suitable for the term “information“.
  • The amount of technical information is doubling every 2 years. I don’t understand what this actually means. You can be sure that this does NOT mean what the author goes on to assert: half of what a college student learns will be outdated by their third year. They learned the alphabet first. Then they learned to read. Then they learned to write. The alphabet was still pretty relevant when they were coding AJAX on their Vista machine 17 years later. Also, if so much of this new information is outdated so quickly, who cares? Just take a nap. You will have missed a lot, but only a bit of it will still matter.
  • Alcatel has built fiber that carried 10 trillion bits per second. This happened in 2002, and the implications fall a little short of what the presentation would have you believe. Read about their test yourself.
  • The aforementioned, super-fast network is doubling in speed every six months. Um… right now, the fastest fiber network is running at 14 terabits per second. This is 14 trillion bps. If Alcatel was doing 10 terabits per second in 2002 and it was doubling every six months, we would be doing quite a bit more than 14 terabits per second now. We would be doing 2560 or so terabits per second.
  • Epaper may eventually be cheaper than real paper, but will it be because our technology is so advanced, or because we run out of trees? This doesnt mean anything. It isnt even a real statement. It is a guess.
  • The $100 laptop (One Laptop per Child) project just finished making their beta machine. They havent shipped anything yet. What they will do in the future remains to be seen. I wish them luck. There are currently no massive shipments of laptops to children who do not pay (a lot more than $100) for them.
  • By 2o10, we will have a computer that can out-compute the human brain. What does this mean? I can just sit back now and rest because in 2010 I will be able to use a computer to go back and do all my thinking for me?

This is no more shift than it is progress. And it is no more progress than it is change. Some change is good. Some change is bad.

This is nothing new.

Best,

Josh Milane

MIT Technical, Boston

Risk Management Template – Based on MSF Template

The template is formatted nicely for you in the link at the end of this post. I also want to state, nice and early, that this template is adopted from a MSF document. It has proven itself a nice risk management template for me in a variety of software situations and does not tend to overwhelm anyone. Even clients who lack technical knowledge tend to get it and appreciate it.

These are the column names and description of what information goes in the columns. The .xls contains all this information and looks nicer. I cannot present a table well within WordPress. Sorry about that. Go ahead and use it. Say nice things about me if you like it.

Risk Management Fields:

  • Risk ID: This is a simple numeric identifier for the risk. We have to keep track of each risk, independently.
  • Description: Summarize the risk. What is the issue at hand, who and what are the players involved, what is the concern? Be as high-level as you can be. No need to get bogged down in details here. Document what is immediately relevant and make sure that the Risk Owner has full understanding. This document should provide an overview for stakeholders but not overwhelm them with detail or technical information.
  • Impact: If this risk becomes a reality, how big of a deal will it be? Obviously, this is subject to a degree of context. Some teams may feel that not building RSS feeds into their System is a horrible misfortune, because their SEM campaign depends upon it. Other organizations will not be overly concerned with RSS feeds, since all their content is reserved for members. Use 1-3 for “not a huge problem”, 4-7 for “considerable problem”, 8-10 for “major problem”, and 100 for “showstopper”
  • Probability: How likely is it that this risk will manifest as reality? This may be tough to determine, but look at Historical Information, talk to your experts, and nail down your best estimate. This will be a percentage: 1% to 100%. If it is 100%, immediately consider the risk triggered and look to the contingency plan.
  • Exposure: Impact times Probability = Exposure. You need to do a little math here, sorry. This will represent how “exposed” your project is to the risk. Do you have a gaping hole in your armor, or are you pretty well insulated against tragedy? At minimum, this lets you see what the biggest risks are. Leveraged a bit more, it can show you what risks are truly worth immediate consideration and action.
  • Contingency Plan: What are you going to do when this risk becomes a reality? This is your backup plan, and it doesn’t hurt to have more than one. It does, however, make sense to have a primary contingency plan because you are going to have to take definitive action when the time comes, and you don’t want to have a bunch of meetings to determine the next steps. Congingency plans should be as unrisky as possible. It makes no sense to lay out a contingency plan like “Fly to Mars and find the secret element that will save us.” Write up a primary backup plan, and note others if you have identified them. Do not, however, spend too much time coming up with alternates. You want one safe Contingency Plan.
  • Trigger: What will tell you when this is no longer a risk and is now a reality? Usually, the trigger will be an event or a set of conditions. When the trigger event occurs or the trigger conditions manifest, you immediately move to your primary Contingency Plan. There should be no wishy-washy triggers. A trigger is a trigger, and when it is triggered, you take action. Just like a gun. When you pull the trigger, you can’t debate the bullet. I mention this because when it comes to HR or other sensitive issues, people may waver.
  • Risk Owner: Who is responsible for keeping tabs on this risk? Usually I recommend that the PM is the Risk Owner, but it may make sense for someone on the development team (like the Dev Lead) to be the Risk Owner. They may have intimate knowledge of the System that the PM does not have . I have seen the Risk Owner be the PMO, in which case they better not be too busy.
  • Mitigation: What are you going to do to make sure that the risk does not get triggered? Essentially: how are you going to control the risk? This will come from conversation with your stakeholders. I recommend having a Risk Assessment meeting and bringing key stakeholders together. Add the mitigation field as you go, but call it what you want.”Mitigation” is a very formal term.
  • Adjusted Impact: With your Mitigation and Contigency plan, what is the projected impact of this risk?
  • Adjusted Probablility: With your Mitigation and Contingency plan, what are the chances that this will still happen? Again, this is meant to measure the value of your Contingency and Trigger.
  • Adjusted Exposure: With your Mitigation and Contingency plan, what would the Exposure be? This is meant to make sure that your Contingency Plan is an effective one.

Update 12.10.2009: Somehow, an older version of WordPress included a “feature” wherein someone was granted the ability to augment the Excel document. I do not know why, but all attempts to update it have failed. Good news: all that is missing is a Risk ID column (identity field) and a Description column (where you describe the risk in barely good enough detail).

Download: MIT Technical’s Risk Management Template

I hope this is useful for someone. It has been adopted from Microsoft’s Solutions Framework, streamlined and changed a bit. I find this more universally applicable.

Josh Milane

Quick and Dirty Software Testing Without a Formal Testing Plan

I like building Test Cases from Use Cases. I do it for fun, sometimes.

Last week however, we were presented with a sudden deadline. We had no forewarning. We were not prepared. The project was dormant for a long time, and out of the blue it was revived as an emergency go-live. I had not seen that happen before. We were in a position where there was no formal testing plan, no test cases, and certainly no Use Cases. All we had was our basic knowledge of the context of the software and the functionality that had been added (this was a version release).

Our development team had not worked on this project. Those developers had long gone, off to greener pastures. They left behind spaghetti code held together with chewing gum and toothpicks that nobody understood or particularly wanted to understand. It was a classic ASP site, and we had moved to .NET some time ago.
No need to lament upon what you do not have, right? What we had was a list of features – contained in sales literature that had been distributed to customers some time ago. A list of features is a list of functionality. One might say that a feature is a Functional Requirement. If you know what the software is supposed to do, you have something to test.

You cannot test without a testing plan, period. Even “Let’s just click stuff and see what breaks” is a crude plan.

If you don’t know how the software is supposed to work, it cannot be tested. You can see what it appears to do, and you can test what it appears to do, but that is almost a self-fulfilling prophecy.

So, in our case, we had a list of features and could extrapolate a list of possible Use Cases. Sadly, there was no time for Use Cases. We had to go live in a few days.

We wrote User Stories. I hate to admit it, but we did. This was a case where the argument for User Stories was clear. They would provide a narrative we could test against. It would not be very finely detailed, and it would not be as thourough as I would have liked, but it would be something to test against.

We started with the basic (high level) functionality. If there were problems at that level, we needed to know ASAP. I think it is important to identify the show stoppers as soon as possible. In a scenario where you are not familiar with the spaghetti code that supports your implementation, you really need to make sure that new features have not completely blown you out of the water. I have seen something as small as lengthening a textbox totally destroy a UI, and I have seen something as simple as the user entering a comma instead of a decimal point make mincemeat out of data.

The high level functionality was easily written into “Sunny Day” User Story scenarios. “Blue Sky, Smiling Sunshine” scenarios are where the user does what they want to do and encounters no surprises, the software behaves perfectly, and the user has a flawless experience. These were simple to articulate.

After writing these up in straightfoward narrative, we went through and tested these User Stories by following along with the Sunny Day Scenario. A few bugs showed up. Thankfully, through disciplined Bugzilla tracking and a talented development team, we squished these with impunity.

(Bugzilla = Open Source and Open Source makes me happy.)

After tackling the obvious, we tested the same functionality in different browsers. It is surprising how many things break in IE7 or FireFox. Part of me can’t understand how this is possible if we have standards and develop in adherence with them. The other part of me knows better.

From there, we pretended to take off our development hats and forget everything we knew about the software. You can pretend to be uninformed or completely incompetent. You can go through and click the wrong links, leave mandatory fields empty, do any number of things that should be handled by validation routines or error handling. You can pretend.

Bring people in who have nothing to do with your project and have them attempt to act out the key User Stories. See what happens. Make note of what they do and especially what they do that you didn’t expect them to do. Document everything as you go alongnot just after you feel you have completed a test case. Document what you do as you are doing it. Otherwise, it may be very difficult to reproduce something. Remember, you do not have a Test Case. You are flying solo, in unchartered… er… skies?

Be sure to click every link and press every button, even when they are not relevant to the task at hand. They make software that does this kind of mundane task, but I did not have access to it at the time and you may not. You can choose to outsource this gruntwork to QA houses. They will be happy to charge you $120 an hour. It is your choice if you want to engage them. I don’t tend to like that approach. Throwing money at QA is fine, but not when it is hurried and ambiguous QA. Without a formal testing plan to map to, there is almost no accountability for the QA consultant. Consultants need to be able to be held accountable if they are to be a wise investment.

I recommend making a a simple .xls that you work off of as you go along, filling in a “test case” number, a descriptive title, a field for the initials of the brave tester, a field that describes expected System behavior, a pass/fail field, and a space for notes. This may wind up being valuable. It may obviate that there is a general issue with a specific type of validation, or that a URL keeps mapping back to a hardcoded URL that points to your staging server, or otherwise clarify issues that would otherwise exist only as anecdotes.

Finally, bang away, trying to break it. Put erroneous values in deliberately. Hit “back” when you are not supposed to. Be crazy. Wear a funny hat. Try to make the software choke, cough, or worse.

There is no such thing as testing without a testing plan, but for us, this approach has worked pretty well – and yielded some rudimentary documentation we were able to point to afterwards. Start with the happy scenarios, move to the exceptions, then shimmy to the downright silly, ugly, and hacky.

It isn’t the ideal way to do things, but it is a heck of a lot better than just assuming it works.

I certainly don’t recommend this approach, and would probably deny that I wrote it, but sometimes you have to work with what you have and do the best you can despite the circumstances.

Josh Milane

Hiring SEO Specialists

I am working full-time right now, and do most of my consulting during the off-hours. It works fine for clients that I have standing relationships with and a good number of others as well, but I am just far too busy lately to meet the demand for SEO work, in particular.

If you have experience with Search Engine Optimization and are up for some hourly work, shoot me a note. No need for a resume yet. Let’s just touch base first.

If you have experience with UML, Requirements Analysis, and/or documenting work flow, business processes, and creating site maps, all the better.

Thanks. I will try my best to respond to everyone. I don’t want to mislead you; I don’t anticipate being swamped like this for too long. I am about to finish a couple engagements and be a bit more available. Still, for the next few months, I could use a hand.

Oh yeah, I need you to be local to Boston. I already work with people who are remote. I need someone who can meet clients with me and then work largely independantly.

Get in touch. You can email me at josh@mittechnical.com or use our handy contact form.

Best,

Josh Milane

Small Social Bookmarking Update

A small update to the blog:

I got rid of the clunky DIGG button and instead am using what appears to be a pretty slick WP plugin called “Social Bookmarking Reloaded“. I can choose which sites I want represented on this blog via an interface that looks like what you will see at the bottom of each post.

 

I have picked what I think are the “biggies” – otherwise it looks obnoxious.

It still looks a bit awkward, though. I will think about it.

Social Networking and Social Bookmarking is a pretty hot topic with one of my clients right now. There is internal argument as to whether or not a message forum will open them to liability claims. Apparently, the laws that would dictate culpability are not particularly lucid.

Another company I am working with has been told my their sponsor that they do *not* want any social networking on the website they have been contracted to build. The sponsor says that social networking and in particular, the presence of message forums, opens them to too many problems. I cannot say too much about this because of nondisclosure issues, but I can speak to the issue in general, and I probably will get around to detailing what I can for you, this week.

Josh Milane

MIT Technical, Boston

Portals: Requirements Definition and Plain Old Definition

I have worked on several “portal” projects in my career. Here is a list of the ones that I can think of right now, at the end of a very busy week:

1. A portal to allow Union members to check on their benefits, file grievances, and essentially do whatever we could allow them to do via the web in reference to their Union membership

2. A portal to allow an organization to manage all of its content, publish it to different websites, spawn new websites based on predefined templates, and create reusable tools for the “children of the portal” sites.

3. A portal to allow salespeople and store owners to keep inventory, sales, and company-related documentation and metrics up to date in order to streamline, simplify, and centralize business processes

4. A portal that functioned as a dashboard for a collection of Real Estate agents who were managing the same properties and responding to the same sales inquiries

These sites are all very different. The most complex was the second one because it was built after a lot had been invested in the conceptualization of the “child” sites and the organization sponsoring the project was committed, totally and utterly, to seeing that vision through via the portal. The portal was seen as a natural way to organize something that would otherwise require some repetitive effort. A good CMS could have done this as well, but they had other goals that it is not important to get into here.

But then, what is the same between those four projects that allows them to all be called “portals”? They all have a particular context. The term “portal” is often ambigious, chiefly because it is a term that has been adapted from common language and made specific to an aspect of technology. It is the latest meaning that has been added in the Dictionary definition of the word. A portal is an entrance. None of the aforementioned projects stand out as an entrance. They stand out as a collection of contextual functionality.

Now, I hate when people do this, but let’s look at what the Dictionary says a portal is:

por·tal1 [pawr-tl, pohr-] –noun

1. a door, gate, or entrance, esp. one of imposing appearance, as to a palace.
2. an iron or steel bent for bracing a framed structure, having curved braces between the vertical members and a horizontal member at the top.
3. an entrance to a tunnel or mine.
4. Computers. a Web site that functions as an entry point to the Internet, as by providing useful content and linking to various sites and features on the World Wide Web.

There it is, at number 4. Our portal definition. Wink
Most clients talk to me about a “portal” and have heard the term used in the context of I.T., but have not actually seen this definition. They see it as some sort of web-based home page for everything that they want to do as a person, an employee, a luge enthusiast, and any number of things.

In many ways, it is a personalized home page. However, that is far from all that it is. The meaning has been extended to mean a place where functionality with common or complimentary context is presented. iGoogle is a portal of sorts. MyYahoo is a portal of sorts, and the Union’s website is a portal of sorts. A portal’s definition is given by the scope of it’s context.

So in the second portal I mention having worked on, it just so happens that the portal contains functionality to create websites from rough templates. This is a valid portal, as is the portal that allows Real Estate agents to communicate with clients.

The interesting part of portals, besides the fact that they create very niche-oriented homes for sets of Business and Functional Requirements, is in the process of defining the System and Functional Requirements.

It becomes partly a matter of Information Architecture when you are developing a portal that must have children. If I have Functional and Business Requirements for the children sites, do I take those and use them as my founding Portal Requirements, or do I attempt to build a Parent Portal first, then accomodate the children?

It is not a trivial question. If we start with the children sites, it may be that time constraints mandate that non-essential functionality is cut from the project scope. It may be that functionality not common to all children is cut from the first portal iteration. More than likely, if projects with momentum are spawning the idea of a portal, time will be an issue because the project started long before it was actualized in the form of a portal.

Ideally, we would start with the Requirements for all features of our portal. If this includes the ability to generate websites with unique content and functionality, than we would have to build that ability into the portal scope.

When we are developing a portal that will include the ability to spawn distinct sites, functionality that does not require customization (maybe a login procedure) helps minimize development time, scope, and cost. We only have to develop it once and can reuse it across sites.

However, if one of my sites needs to have drag-and-drop page elements and no other do, we are doing a lot of work to accomodate that one site. Ideally we would do it at the Portal level so if a site comes along in a few months that requires the same drag-and-drop functionality, it is there ready to be reused.

In this scenario, the places where the “child” sites do not resemble each other are the places where the most significant work (and the most debate) will occur. Not only do we need to do a different kind of scoping, we need to build the functionality to be forward-minded and extensible. Or at least, good OO theory would have us do that. And of course, before we do all of that, we have to show a solid Business Need to justify the custom development.

A portal is not just a home on the internet. It can be a toolbox of sorts or a number of other things.

I have found that when you are developing a portal, it is best to establish a good set of Functional Requirements, working from the ground up instead of working from the top down. This is hard, because most people will try to envision the portal as a whole.

Walk your users through what they want to do. Interview them and see how they envision using it. Make “Barely Good Enough” Use Cases or Use Case Diagrams if you can get away with it, and see where the overlap is. Chances are, a bit of natural negotiation will occur and while site A might want to do something *this* way and site B might want to do something *that* way, it becomes apparent that *another* way is easier to develop, easier to use, and actually – closer to what the users really want.

The functionality that is not shared across sites falls into a different model. We have to look at it as we looked at the portal. What is it that the functionality is accomplishing? What are other ways that we can imagine accomplishing this functionality? What does it resemble? Can we build it so that it can be customized, or is it truly a “one-off”? If you are using something like Ektron, Joomla, or SharePoint, do they offer any OOTB functionality that can be leveraged? This is where a lot of money gets spent in development and risk is assumed. It is no uncommon for scope to change, and if you put 300 hours into developing something custom only to have that custom functionality removed from your scope, you just lost a bit of money and time.

If possible, you can also phase releases of this kind of portal. Start with what is common. There will be Discovery during development just like there was Discovery during Discovery. Software projects rarely exist in a vacuum. By phasing the portal, you can allow time for ideas to mature and change. Once users see V.1, they may see a natural extension of what you have built that will satisfy their requirements for something custom.

Use Cases should be generic and built as though the platform has not been determined yet. Do not box your developers in, and do not commit to any technology in your Use Cases. In a project involving a portal, this is especially important, because Social Networking and Collaberative Software is an amazingly dynamic world to be in right now. What you spec today might be light years behind tomorrow. This is always the case, but a portal requires users to partcipate for it to have value. Again, extensibility is vital. The ability to have to portal function cross-platform is becoming increasingly important, with portable device use and portable device users becoming more demanding.

When you are developing the functional parts of your portal (portlets), you should keep it in mind that these mini-applications often function best under the “less is more” model. If your portlets are providing functionality that is not UI-centric or graphics-centric, dont forget about your Web Services and dont forget to have an overall data model that accomodates them. It is easier for a lot of portable devices to swallow portlets than to swallow entire portals, and Web Services communicating with Web Services communicating with Web Services becomes more simple if your apps are developed simply, sleekly, and with open architecture – a simple WSDL.

There is an emerging standard for applications that aggregate functionality such as portlets. I always think it is a good idea to develop according to standard, even if your specific implementation is entirely unique.

Another kind of interesting thing that happens during portal brainstorming sessions and the weeks that follow is that folks hear about a “portal” being developed and they want to see if you can give them access to their gmail through it, the weather forecast, do videoconferencing through it, and any number of things. Some people will be offended if the “Corporate Portal” does not take their unique request to heart. A good technique is to have a formal meeting in which you establish the business need for each scope item, and simultaneously creating a list of items that will be held off on until V.2 of the portal comes around. People are much less offended if you do it this way, and will often want to stay in touch with the effort so that they are there when V.2 scoping begins.

In conclusion, regardless of what your portal will be used for, it is only sensible to start from the ground up and capture user requirements, mandate elucidation of the business need, and keep the larger picture in mind. Do not let emotional investment in any particular feature outweigh the business need of the project as a whole.

- Josh Milane

MIT Technical, Boston

A Victory for "Barely Good Enough" Use Cases

I have been struggling lately. It is a private battle, and I don’t think that it shows.

I am consulting part time with a team of Project Managers that is used to writing Use Cases that read like miniature novels, complete with detail including prose such as, “the User will click the red button in the lower left corner of the page that says ‘Click Me‘ and then they will be able to share content.”

I have no delusions of grandeur. Well, maybe I have a few small ones (I think I can cook fish pretty darn well). Still, I know that as far as this particular organization goes, I bring a new perspective upon Use Cases. The PMs that I am working with are not technical Project Managers (but they are very talented) and although they have had formal Use Case training, the lessons did not stick. The PMO did not enforce what they learned and did not work to doccument and uphold Use Case standards. The reason for this is too complicated and potentially boring to get into. I’d rather keep rocking your world with this spine-tingling account of my Adventures in Documentation.

People will tend to gravitate towards what is comfortable, and since the development team was used to receiving Use Cases with sketches inside of them, when I proposed the “Barely Good Enough” approach that they were taught, I was largely ignored. My proposal did not accommodate their expectations and so a small degree of panic and a larger degree of resistance set in. This is to be expected, and there are ways to deal with it.

One way to deal with it is to stick to your guns and start small, see the larger picture, stay the course and offer your opinion without presenting it as gospel. I can certainly think of more noble causes than Use Case Evangelism. However, for whatever reason, I truly believe that documentation is an astonishingly powerful tool and am proud that I am fairly skilled with it. I don’t know if this explains it, but the idea that you can – through effective documentation – take a maldefined, nebulous, ambigious idea and turn it into a reality that people can use and benefit from is really cool to me. The entire process of project Inception, through Scoping, Requirements Gathering, Execution, Design and Development, Testing, and then Implementation is held together by this thread of traceability.

I think it is a fantastic when you can apply discipline and keep this traceability clear, clean, and lucid. It can ensure that you arrive at your lofty goal. It can to connect you to your vision much like a fishing like connects you to dinner. This traceability is invisible unless you know what you are looking for, and it’s one of those things I just happen to get a kick out of. It requires a lot of fine detail and an expansive perspective upon the bigger picture.

So today, as we were had a conference all regarding Requirements Definition and were looking at the more detailed technical end of things, it became apparent that this SharePoint 2007 implementation will require the development team to retool many of the existing classic .asp files. Some data-driven Flash needs to be migrated and coded to operate within the new environment. In the case of these Flash files, this means that interfaces will have to change.

When this became obviated, the room of Project Managers was stunned into silence. I heard it. They were going to have to redo their Use Cases. There were at least a hundred Use Cases affected.

This simply should not have happened.

Use Cases are supposed to describe the functions that the System will accommodate and the actions that an Actor can take upon the System.

In Use Cases, an Actor “indicates via the UI” and does not click the red button that says “Click Me” in the lower left corner.” At least, they are supposed to.

So I have been the renegade consultant, quite leery of explaining *again* the veracity of proper Use Cases for fear of lynching. (Not really. We all get along very well.) I tried. I really did. I stated the case gently, firmly, and in every non-offensive way that I could. That is what I was hired to do.

People listened, too. They even understood. However, when they went back to their desks and started documenting, old habits took over. Even when there are not time constraints as significant and scary as we are dealing with, people tend to do what they can do quickly, with the least amount of pain.

I am the first to admit that Use Cases can be especially tedious. I think part of the reason that they are tedious is because you are forced to document things that seem really obvious. (Or very complicated, of course.)

I also think that the assumptions that are made when things are deemed obvious are what leads to a lot of problems in software development. Assumptions make an ass of u and mption. Or something.

I was quite pleased that I did not have to redo any Use Cases and that a small victory for “Barely Good Enough” was won. I do find it odd in some ways that the argument for less “technical” detail would have to be argued when technical detail is what causes pain to folks who are not familiar with it. You would think people would welcome the chance to write less, but better, docs.

No, I do not think that naming page elements is especially “technical”. A lot of other folks do, however, and at first glance I understand.

But again, a lot of resistance comes from the corporate culture and like all things dynamic, corporate culture will change. I expect resistance will start to wane. I hope that I don’t come across as preachy or too self-assured, but it felt pretty good to have even that small moment of vindication.

As a consultant, you often find yourself working with people who are unfamiliar with your toolsets and methodologies. Sometimes you are all alone with your specialized, otherwise useless tools. It was great to have some of my speeches elucidated via real life.

Some of the documentation PMs and BAs produce look scary to those who are not familiar with them. This is part of what is happening right now as well. I asked a woman to look at some UML that I drew up today and said that she could not understand it.

I asked her to try. I asked her to just read it.

She could. She just didn’t know it until she tried. It was, in fact, pretty easy.

It was a decent day in some ways, and I like seeing people smile because of UML. I also like seeing people inspired to learn about Use Cases.

I am, in fact, odd.

- Josh Milane

MIT Technical, Boston


SharePoint (MOSS 2007): Large Implementation, Potentially Enormous Pain.

Right now there are SharePoint consultants working on a project with me. They were brought on because they are one of the few groups that have worked on a MOSS implementation of this size that didn’t sound as though they were going to waste the client’s money. Of course, with niche expertise comes big money. They are being paid $185/hour for four weeks and, as the old adage holds, you can price something at whatever people will pay

So far they seem very good and it is nice to see the MSFT approach to Requirements Gathering and the Project Define Phase. They ask all the right questions and dont waste time with the unimportant ones. I look forward to working with them more, especially in the weeks ahead as documentation is created.

In building a Requirements Document, it is very tempting to me to keep the platform itself – MOSS – in mind. Seeing as the consultants cost so much money it makes sense on one hand to try to make the Requirements somehow specific to their tool set.

But I resist, and work from the truth, upwards. It is a custom implementation, so there will be custom work and things will be eliminated from the Scope. The platform will not define the scope. This project is too important to the organization to be straitjacketed by software.

And so we are painstakingly going through Requirements, starting from the kickoff meeting, and we are doing two sets of Requirements Documents. It is an experiment. I want to see where the deltas are and how it works out. I will let you know.

And that clock is ticking at more than $3 a minute. EEK

It is interesting, and I will post whatever I think you might want to know about the unique factors in a MOSS implementation of the size I am working on. It will spawn 5 or 6 public-facing sites with a few thousand members each (and they will all have to be migrated to the new site). It will also attempt to organize document and workflow management at an organization without any.

If this winds up being anything like implementations I have participated in before, one of the really tough pieces (the toughest piece?) of this effort will be in getting people to use the new technology. Thankfully, it is a MSFT office so they will likely enjoy SharePoint and it’s Excel Services, document workflow, etc. It will, however take time. That is one thing that is not OOTB with SharePoint Server 2007: enthusiasm.

Almost a million dollars is being spent on this project, and I am trying to manage the technology end on my own. I am not really a SharePoint guy. Guess I will have to become one. Truthfully, I am impressed so far. It seems like a super-robust product. Of course, I am a bit concerned about SEO. MOSS builds pages in a way that might not be conducive to what I would consider proper SEO. I am reseaching this, and if you have any experience in that regard, shoot me a note!

Stay tuned. Wink

Josh Milane

MIT Technical, Boston


The Semantic Web – Fee Fi FOAF, um…

Okay, so this has less than rampant application right now within the mainstream, but I would be remiss to not write something about the Semantic Web. It is a topic that interest me tremendously because of the potential it holds for so many areas of our lives and the way we utilize data, learn, and use the internet. I happen to believe in the Semantic Web’s implications for health care, knowledge exchange, and many other applications. I think it can, could, and hopefully will – change the world.

Honestly.

The concept of a Semantic Web is easy enough to explain poorly. It is harder to explain well, particularly without getting into things that might leave behind a non-technical reader.

The easiest representation of the Semantic Web is the following:

The Semantic Web in Picture Form

But this may not mean a heck of a lot to you, and it isnt the easiest thing to understand.

There is some difference between an URI and a URL, and it has something to do with the fact that a URL *locates* a resource while a URL *identifies* a resource, but I think that almost academic. A URI is the location of a resource. It is the “Uniform Resource Identifier” and that means that it is *the* identifier for a given resource. In something as robust and untamed as the web, we need to have a “final say-so” when it comes to defining things. There would just be too many interpretations otherwise. Mind you, there can be more than one URI for a given resource, but it is important to agree upon your foundation across the elements of your application, query, or Semantic Effort.

Unicode is a standard for text. It is the encoding standard used in the Semantic Web, and it allows a wide variety of data sources to be used, provided that they stick to the spec. W3C is a massive and amazing organization, and I expect an invite from them any day now that says they want me, need me, gotta have me on one of their boards. Standards are a good idea. Standards allow for coherence and reliability. Just like your development staff should follow standards to ensure the quality of what they produce, the web employs a variety of standards to ensure some measure of control and therefore, progress.

The foundation of the Semantic Web is the ability to locate resources that give us information above and beyond the classic database “datatypes.” A URI such as foaf:knows will tell us what the “knows” relationship means. This is a good start.

The language that runs through the veins of the Semantic Web is RDF. RDF looks a heck of a lot like XML, but with one or two imporant differences that are not apparent visually:

If I want to feed the Semantic Web a fact, I structure that fact. Let’s say, “Josh knows Susan.” It would look something like this:

<person>

<name>Josh</name>

<knows>

<person>

<name>Susan</name>

</person>

</knows>

</person>

Of course, Josh and Susan have many more properties than just the “knows” property. There are an infinite number of relationships between people, and there are just as many properties of people. The first thing we need to do is define what they are. Now, I can tell you what they are and you can tell me what they are, but none of that arguing will mean anything until we come up with something definitive and point to it as the authority. If the Semantic Web is going to function, it must have a recognized authority that defines the various relationships within it.

The URI is a convienent way of naming authorities and telling people (or machines) where a relationship or property is defined. URI = Uniform Resource Identifier, and it is important that the authoritative URI defines these relationships and properties clearly and uniquely.

This is really cool stuff to me as an ex-Philosphy major, and this is what the Semantic Web is built upon.

A URL (URI for our purposes here) such as http://xmlns.com/foaf/spec/#term_knows tells us what “knows” means, according to xmlns (the domain in the URL). At some point, we will need to have a recognized authority for all property and relationship definitions. I am interested to see who gets entrusted with this. Of couse, this is all Open Source and you would like to think that people love people and want to better humankind, but there is always the opportunity for businesses (or bad folks) to stick their nose into something that worked quite well without them but, in their minds, is so much better off making money for them. Google did not launch Adwords right away. But this is another topic for another time.

If you go to a browser window and enter http://xmlns.com/foaf/spec/#term_knows you will get a page that people can understand. This is key. Give it a shot. I have gone through the trouble of making a hyperlink so you can check it out for yourself. The reason this is key is that the Semantic Web is not about computers understanding things just to understand them, but about computers being able to act as agents of ours that we set up to go out and do our bidding.

Semantic Secret Agent

 

Semantic Agent

“The FOAF:knows”

Resources are important. I am no authority on medicine, but if someone called me and said they had a headache, I might recommend Tylenol. I would be their resource for the information, and they would be in sad shape if they had a brain tumor or something less than benign. Resources are important, and they can function as authorities.

If I was going to create a document that stated who the resource for information regarding headaches should be, I might name my hospital, Beth Israel Deaconess. They would be a better resource than me.

And so we must have a defined resource for everything that we are going to look towards for meaning.

The Semantic Web is an internet where text, data, and information is understandable by machines through the utilization of markup, resources, and ontology.

To clarify: right now I can do a Google search on “Poison” and I will get back a list of everything from cyanide to an 80′s Hair Band. In order for me to find what I am looking for, I have to read. I understand, as a web surfer, that Google returns a set of possible matches and I get to choose the one that looks the most like what I want.

In the Semantic Web, Poison would be understood in its correct context and have dimension. This is where RDF and XML diverge.

XML is good at organizing data, but it makes no claims as to meaning within a context. We can say that a bus has a route and a route contains streets, and we can represent that quite well with XML, but XML does not tell us that a route is the same as a path, or that a route is something that gets us from one place to another. XML can provide schema, but not ontology. Ontology is again, the way things relate to each other. It is a term borrowed from philosophy.

RDF adds these ontologies and resources for the definition of relationships. “Triples” have an XML syntax but consist of subject, predicate, object structure and are what make RDF capable of inferences or drawing relationships.

Josh = Subject

Knows = Predicate

Susan = Object

The Semantic Web aims to organize data that would otherwise be known as metadata in a way that allows agents (software we send on missions) to discover things for us and obviate what would otherwise be unknown.

The semantic web is about making machine-readable web pages, or really, machine understandable pages out of HTML and other data sources. Instead of just indexed text, the web becomes organized, meaningful, providing useful data that we can create agents for and utilize without the agonizing process of searching, hunting, and doing “deep diving” of or own.

A Semantic Web would be a Web that understands the things within it and can reveal relationships that we would not otherwise be aware of.

If you lay out data or web pages in a way that allows machines to understand their content and context, you can create an environment where computers can learn to infer (indeed, learn to learn) and do comparitive analysis as well as other cool stuff. A computer could infer that if Josh Milane is on the W3C Semantic Web Board, and Susan Jones is on the W3C Semantic Web Board, we share a common interest and may know each other. If Susan’s son has an address in Boston and an employment status of “looking”, the Semantic Web could tell him “Hey, ask your Mom to talk to Josh.” This is a very simple example, but extend it to health care (for example) and you can begin to see dramatic potential.

We can feed data from clinical trials into the Semantic Web and all kinds of relationships can emerge simply by virtue of the data itself. We might find that everyone who took Medication X along with Medication Y and had diabetes suffered a minor stroke.

Metadata is just data. If we give it meaning and structure, data becomes meaningful on it’s face

We might also use the Semantic Web to help us corall the enormous amount of information that is pouring into areas of research like nanomedicine. Scientists are collecting data regarding mitochondrial receptors such as: the functions that they perform, how they function in relation to each other, how they respond to quantum dots in therapeutic testing environments, their size, the characteristics a drug needs to enter a specific receptor, the location of a specific receptor, relationships that receptors share (such as signal cascades), expression profiles and their relation to disease states, age-related expression, free radical production… and a lot of other things that make my head want to explode.

An obvious advantage of allowing machines to understand and arrange data is that we can establish agents to infer, present us with conculsions, and follow logical models. We can share the world’s knowledge (Josh knows Susan), but we can also draw conclusions and see data that has already been structured for us, thereby learning (for instance) that the ANT receptor, the Mitochondrial Permeability Transition Pore, and Cyclophilin D all shrink when Seramide is introduced. This would become obviated through ontologies.

Sound crazy? A little, maybe, but dont tell that to the folks at Neurocommons.

 

The main things that make this all possible are syntax, semantics, and ontology. SPARQL is the query language of the Semantic Web and it was designed to look a lot like SQL. While you might not be ready to structure all your data so that it is SPARQL-friendly, you can provide a SPARQL endpoint on your more traditional relational databases and allow machines to query your databases. While your databases might only contain data, we are going to see data be structured within ontology.

Ontonogy is very interesting. OWL is unique in that it is an acroynm that takes it’s parent words out of order. OWL = Web Ontology Language. It is unique in other ways, too (as amazing as that might be).

OWL is based on RDF. It depends on the notion of triplets (again: subject, predicate, object or domain, property, range, where the domain is the URI, the property is the relationship, and the range is the set of values that the property may have)

Color may be a predictate/property, and red may be an object/range. We could see that my car and your toenails have a relationship. This may be meaningless, or it may be meaningful. The point is, machines can understand it and we can create agents to look for things that are meaningful. Besides Neurocommons, other folks are taking stabs at this for medicine and biosciences and many other things as well.

It is important to understand that while OWL looks like RDF and XML, it is only relevant within a specific context: it’s own. This allows for highly-specialized ontology that describes highly-specialized data and niches. It is also a nice example of what I would liken to Object Oriented Logic. Before learning about the Semantic Web, I only knew OWL as a kind of bird. It is all about context.

The scenario I painted earlier, where a computer learns about mitochondrial receptors and draws inferrences is not quite a reality yet. As it stands, the Semantic Web is pretty good at understanding that Josh knows Susan and a bit more than that, but there is a lot of work that remains to be done. Some of that work is technical, and some is plain old labor. We need to implement Semantic hooks and links (RDF and Ontologies) into the web. We can begin using RDF before the encryption and higher levels of the layer cake are figured out. I encourage you to stay tuned to developments within the SemWeb and to read about it, think of ways in which it could benefit you, the world, humankind.

Josh Milane

MIT Technical, Boston


Google Premium?

Just a thought: what would happen in Google began charging a small monthly fee? The impact would be significant, and I dont know that there is anything stipulating that they cannot charge. I am not saying that they are going to, or that they should, but it sure would have an impact.

People have assumptions, projects have assumptions, and we move forward on assumptions.

It is always good to know what those assumptions are. Find a place in your Requirements Document for them, if you are a PM, for your own benefit.

Josh Milane

MIT Technical, Boston

Page 16 of 18« First...101415161718