Fox Valley Day of Dot Net

As promised here are my slides and the list of links I never got to talk through. Thanks for all the great questions during the talk and the suggestions in your comment cards. Good stuff and much appreciated.  I’d love to do this again somewhere, let me know if you want me at your location.

Windows Workflow Foundation 4 for Fox Valley Day of Dot Net

Windows Workflow Foundation 4 is fairly interesting, fairly unique in the large list of players in the BPM field. It does seem like some additional sessions of more advanced topics are going to happen so stay tuned. The MSDN samples below are an absolute must. You can search for the name and find more documentation about each. I also had good luck with the VS2010 guidance package for my first introduction way back when.

MSDN samples - http://msdn.microsoft.com/en-us/library/dd483375(VS.100).aspx

Ron Jacobs video and blog http://blogs.msdn.com/b/rjacobs/

 

 

Help Jake Egelhoff in his trip to Junior Olympics

We have the wonderful “problem” of having a great kid make the national team for the second straight year and now we need your help again. We need to take care of supporting him so he can work more on skiing and less on fund raising money for all the expenses. We’ve setup an active.com donation site for Jake, though he gets slightly more of the money if checks are written to him directly. Let’s try to get people outside our normal volunteers and parents to help pay for the trip. Get local businesses, your employers, master skiers from the area, whomever you can think of to donate some money. Last year we were able to get all the funds needed for both Deedra and Paul, and let’s get this done for Jake this year!
Share this link: http://www.active.com/donate/jakeegelhoff

I am happy to let you all know I’ll be speaking at the Fox Valley .Net Users Group, Day of .Net event on March 5th, 2011. I’ll be covering Windows Workflow Foundation 4 (WWF4) where I’ll outline the basics with demos and examples, and then talk about where it fits in to the larger concept of workflow. Let me know if you have specific things you’d like to hear about.  I’ll post my outline soon.

Workflow – Coordinate People and Systems

A few years back the company I was working for brought in somebody to come up with some ideas for our system architecture in preparation for a big enhancement push. We laid out our goals which included heavy automation of business processes, leaving people in positions to do what they do best supporting our call center. That also means high visibility of the business processes to all staff and eventually our clients. This person’s answer… Biztalk. OK, you could argue that it is acceptable in executing business processes, at least so long as these processes rarely involve people. I think of NServiceBus in a similar way. Or any of the BPEL (Business Process Execution Language) oriented products out there. They do facilitate processes made up of work done by a variety of systems, something often called service orchestration. But most of these systems totally fail in helping where people are involved.

Of course there is a counter story to this. Ask a business person to find workflow solutions and you come up with things like SharePoint, or FileNet or even PeopleSoft. They are mostly about coordinating unstructured data in documents between people with some sort of rules: approvals, routing, limits that sort of thing. Most of the high level decisions and calculations must be done by people. Even when the the decision process is understood well, the way these systems are built frustrates additional automation because the data tends to live in blobs as pdf files or scanned images. There are CRM systems that do a little bit better if they are reasonable at allowing custom data to be associated with the “customer” records, and the automation can access that data as meta data to the document. Think SalesForce or Microsoft Dynamics. But most really don’t do any better at real automation when you have useful back end systems.

What should a good workflow system do?

Workflow coordinates people and systems to get stuff done.

Software Craftsmen or what?

Dan North published a shot across the bows at the signers of the Software Craftsmanship Manifesto. Apparently me living in a snow cave the last couple of years has been bad for my geek cred, I wasn’t even aware of it. But the sentiment it tries to encapsulate has been around for a long time. We all generally agree our industry sucks because we consistently under estimate, under deliver or outright fail on software projects. These software craftsmen believe that, as best I can tell anyway, the reason for this is that our ranks are made up of either ivory tower software as art sorts, epitomized by certain speakers, writers and open source gurus, or of “I am only in this for the money” types that hack their way through the coding until systems collapse of their own weight. Or something like that. What is needed is more of a middle ground with standards of professionalism, quality, collaboration and so on, rather like we think of building craftsmen in other professions.

Dan North’s post has garnered a lot of attention, one because he is the well known, self-effacing and generally good guy that he his, and two because he shoots poo over the whole manifesto. He believes that the people who buy software don’t really give a hoot about what goes into the software, it is purely the utility of it that they care about, and for the least cost:

“Software Craftsmanship risks putting the software at the centre rather than the benefit the software is supposed to deliver, mostly because we are romantics with big egos. Programming is about automating work like crunching data, processing and presenting information, or controlling and automating machines.

Non-programmers don’t care about the aesthetics of software in the same way non-plumbers don’t care about the aesthetics of plumbing – they just want their information in the right place or their hot water to work. (Although it’s fair to say they appreciate decent boiler controls.)”

His very lengthy elaboration is both entertaining and thought provoking. So whats not to like? The last line in his leader, the one about appreciating boiler controls hints at it. I disagree that the buyers can’t really see what’s going on behind the scenes enough to tell if the the system is quality or not.

Users are enormously attuned to how systems work for them, or against them. They largely experience the design and quality through user interfaces, but not exclusively. Right at their fingertips they can tell if they have to jump from system to system to find what they need to get their jobs done. They can tell if the information being shown is accurate, because they have to live with the consequences of it not being accurate. If the information is delayed, they have to live with that. If the system is incomplete requiring manual workarounds or business processes, they have to live with that. If the system represents information in a way not consistent with how the users think of that, say a contact has a company vs a company has contacts in a sales process, they have to fight with the cognitive dissonance. If the system throws errors, they deal with that. If fixes and modifications take months to deliver, or are years between deployment they have to live with that. If the system is down a lot, or slow, or inconsistent in how they have to use it they notice that. And they think it sucks!

Most of the things that the Software Craftsmanship true believers are trying to accomplish are directed at just these kinds of problems in development. Just like you choose a certain quality of concrete and method of construction for a bridge, you need a certain qualities of development practices to consistently build applications and systems. When my plumber told me he wanted to use copper pipes because they were quieter than PVC, I believed him, and they were. When I say we should require developers to not build SQL in line to prevent a common security breach, I want to be trusted with that.

Dan would not disagree with this. He is actually more worried about the craftsmen becoming to caught up in the glory of it all:

“So here’s my concern with the idea of Software Craftsmanship. It’s at risk of letting programmers’ egos run riot. And when that happens… well, the last time they went really nuts we got Web Services, before that J2EE. They convinced the British government that they wanted an uber-database to store Everything Ever About Everyone. You see where I’m going?”

But that isn’t what they are doing as best I can tell. Perhaps some are, and to be sure, developers putting technical concerns over outcomes is an issue in our field. But on the flip side, exhibit A, Corey Haines giving typing classes to improve productivity. Brilliant! I am always amazed when I see developers that don’t know how to use a text editor well. If you can’t manipulate text really well, you certainly aren’t going to take the time to refactor rotten code. As a jazz guitar player, if can’t play Donna Lee at 240 bpm, I probably can’t get a gig. Should be the same with typing.

The real problem is the manifesto itself which really doesn’t say anything concrete. Signing it is really just aligning yourself with a School of Thought, utterly unquantifiable or indicative of outcomes. Dan’s most salient point is that we have no way of knowing to what degree if any a person is a craftsman or not, and the manifesto helps in no way at all. On this point I agree completely.

There is a another point on productivity there, blasted in another post I thought was funny in an Angry Coder, profane style, but I’ll hit that another day.

Sharepoint 2010 on Vista notes

I have had a fairly simple problem at work for which the solution was to use the shiny new Word Automation Services of Sharepoint 2010. In the past in order to do Sharepoint development, you had to run your development environment on Windows Server instead of your normal client OS. I had tried to setup a virtual machine running Sharepoint, Sql Server and VS 2010, but even giving it 4 cores and most of my RAM, it was still minutes per click. Crazy. So, following this article, I started to setup my normal machine, still running Vista because of our legacy development environment, to run SharePoint 2010. I succeeded eventually, yahoo! But, this post is to document some of the pitfalls I encountered and how I solved them.

The basic documentation for doing all this is here. Read through this carefully. But before you start, do this first. In spite of what some of the documentation  says, Vista SP2 is actually required. I would do that install first along with updating to Sql Server 2008 SP1 with at least Cumulative Pack 2 or greater before even trying to get started. Also make sure all your Windows Updates are completed after installing these components.

Do the install in exactly the order the document stipulates. Because some of the hotfixes and service packs took longer to download than others, I tried to multitask and do some of the steps out of order. Bad choice!

I did require some IIS setup beyond all the steps in the doc. SharePoint may not setup your web server with everything it needs. If it isn’t working, check your app pool setup. The users will need rights to the SharePoint databases, and you probably want these app pool/Filters separate from your other development app pools.  In addition, I ran into a Web config issue with a filter that I forgot to write down the answer to! I also had to comment out the <requestFiltering> element under <system.webServer> or I would get a page not found error. Here is a list of changes the installer will make though.

The SharePoint install, deep in the bowels of the documents, recommends that you setup aliases for all the SharePoint databases. Use the Sql Native Client Configuration tool after your install so you can use your existing local database instance rather than the default instance SP will install to. Then just detach the databases and attach to your normal instance. Always good to limit how many instances you have running.

Hopefully this will save somebody some time down the road. Or convince them to move to Windows 7.

Why is workflow still so hard?

Almost 15 years ago I think I did my first bit of software that was called “workflow”. It was a Lotus notes application that today we would basically call “email with attachments”. OK, there were some automation bits in there where depending on some content in the document, it might get routed to this person or that. Not long after that I realized that it wasn’t much of coding effort to have a web page with a big ol’ chuck of code that went something like this:

if (field > 20) SendMailTo(boss) else SendMailTo(gopher)

Only a few years after that the industry created BPEL so you could take that and say it in 50 lines of xml text*. Now in the 21st century, you can do this with a graphical designer in SharePoint, Savvion, K2 or open sourced alternative that is supposed to be so much easier than hiring a developer to type that line of code above.

So why aren’t more businesses, developers, organizations lining up to buy or build workflow type automation? This question has started to bother me a lot.

One thing is certain to me now. Turning a flowchart into code solves the wrong problem, convenient as it is. How we represent the decision block,task, activity, state, value, or triangle on a whiteboard is NOT what is holding us back. That is a notation, nothing more, and people can learn new notations quite easily. At least they can learn a notation quickly compared to how fast they can learn to automate their business functions.

Experience that tells me workflow oriented systems are the right way to solve many types of systems problems. By systems, I mean organizing people and computers to get stuff done. But, all indications seem to say this isn’t going well at very many places right now. Why? Sounds like a lot of interesting conversations are in the works!

* I actually have no idea how many lines of bpel are needed to do this.