Enter your email address:

Delivered by FeedBurner

Is that an architecture in your pocket?


A lot of developers and architects ask me how they can start learning about architecture. The are usually looking for the “Golden Path” to the one, true architecture for their application.

Of course this doesn’t exist. Each system must have it’s own architecture, to support it’s own needs. But, as architects, we do need a mechanism to share what we know, the experience that we build up over our careers. We should be able to say “This is what I built, and this is why it worked in this scenario.” We also need to consider the frames of concern for a model, and discuss those as well.

We need to make sure that this knowledge is approachable. There are other industries where they build these giant repositories, and then are ignored. I like to call these ‘ShelfWare’. Others call them ‘Bodies of Knowledge.” More like Dead Bodies of Knowledge. :) No one really uses it, but references it as a bible to defend a bad move or decision.

How can we make it approachable? Well, first you can’t require membership in a secret club. You also need to make sure you explain domain specific terms, and you also have to keep it short. Not 2 pages short, but not 50,000 pages long either. And it has to have good navigation.

Another problem is that architecture is as diverse as development. You have different concerns in a web application than you do in a client app, or in a services tier.

The Patterns & Practices Group at Microsoft has been pumping out a lot of guidance recently. I am just now catching up with all of their deliverables over the past few months.

Their most recent release is a set of targeted Architecture Pocket Guides. They are of a fairly short read, plenty of pictures, and covers these aspects well, with the common knowledge most experienced architects have.

These are definitely a must read for any new or aspiring architect. I think lead developers should be very familiar with them as well. An experienced architect should briefly read them. It is a good way to confirm what you have learned, and formalize it a bit. And it is always good to read in print what you already ‘know’ or feel. It helps you put concrete words to your instincts.

Of course, even though it is in the pocket guide, it is just that, guidance. Use your own critical thought, and answer with ‘it depends.’

You can browse the index of Pocket Guides at the Pocket Guide Index page at our Application Architecture KB on CodePlex.

Software + Services in Plain English


I spend a lot of time explaining to customers and audiences what we mean when we say “Software plus Services”. In short, we believe that you need a mix of on site software, and services from the cloud. The exact mix of what is onsite vs. in the cloud is up to you, and what software piece is in which position is also up to you.

We are putting a lot of effort behind the concept, because we want the platforms and architecture to be flexible enough for you to find the right balance for you, but to also give you the ability to change that balance. I should be able to start something in the cloud, move it on premises as I need, and then maybe later back into the cloud.

The video is part of a meme on YouTube on explaining concepts ‘in plain English.’ It’s only about 4 minutes long, so take a look. And it uses paper dolls. How cool is that?

New Guide “Acceptance Test Engineering” or “How to decide if your software is ready”


The Patterns & Practices team has been pumping out a lot of great content lately. So much, that I haven’t been able to keep up with it all. What I like about their new model, is that they publish their works in draft or beta form to CodePlex.com, so that they can gather community feedback.

The latest guide from them is titled “Acceptance Test Engineering”, and can be downloaded from here. Please read it, and provide some feedback, any feedback back to the team. P&P is a great example of how some groups in Microsoft are embracing the community, and leveraging their input to make their products better.

I think this guide will be of interest to lead developers, consulting managers, project managers, test leads, and architects.

This guide focuses on the skills around Acceptance Test, and how to implement them. The first section focuses on thoughts behind AT’s, and why we need help defining ‘done’ on our projects.

The second section reads like a patterns book. It is chock full of effective practices. Best part? They explain scenarios as to when each practice would and would not be a good idea. For example, they cover a process known as ‘Test Last’. I have heard this called TED by TDD developers. TED stands for Test Eventually Development. They cover the practice, and are clear about its pros (are there any?), and major cons. They cover when you are likely to see this, such as when a supplier is not able or willing to provide incremental builds throughout the process. The big limitation they outline is

Significant shortcomings may be found too late to do anything about them in the current product release. 

On page 13 they talk about how they tried to define acceptance testing by developing a model, and then executing test against that model, to see if it was a good model to be used in the book. The great thing is, the first models failed their tests. I guess doing that is like writing a VB compiler in VB.

When I was in consulting, our project teams spent some of their time on ‘Story Tests.’ The idea was to do some testing at a story level. We felt that testing at purely a code or functional level left us blind to whether the software was achieving it’s desired goals. We tested across the system, relating to the story of a user. This is covered in the guide on page 170, but they call it “Soap Opera Testing.” I LOVE that title! I wish I had thought to use it all those years ago.

The third section contains a series of examples. I find this to be lacking in a lot of guides that try to teach you a new practice. I think real samples, and scenarios are important in learning when to use, and when NOT to use a practice or skill.

The sample story around Soap Opera testing is truly a soap opera. It involves a CEO, credit card fraud and identity theft, and ex-wife and a girlfriend.

You should check the guide out, provide feedback, and consider folding the patterns that are covered into your process.

BizTalk Server 2009 Beta


Many of you know I have spent a good portion of my past five years working on a lot of BizTalk related projects. What does BizTalk do? Everything of course! :)

If you are doing SOA, or an ESB, integration, edi, or RFID, this is the tool for you.

I missed this news last month because I was so heads down on CodeMash. We just released the beta of BizTalk Server 2009. We also release the RFID Mobile and RFID Standards pack.

The first thing any BizTalk’er would want in the new version is support for the latest platform versions. Even in BizTalk 2006 R2 you had to use VS2005. With BizTalk 2009 you can use Windows Server 2008, Microsoft Visual Studio 2008 SP1, Microsoft SQL Server 2008 and the .NET Framework 3.5 SP1.

The new version also has extended support for Oracle e-business suite, IBM CICS, IMS, DB2, and WebSphere MQ. There is new support for UDDI v3.0, which is important in service registry scenarios.

You can grab the beta over here. An update to the ESB Toolkit is available there as well.

SharePoint Pod Show - A Podcast All About SharePoint


SharePoint has become a huge product. Almost everywhere I go, someone is asking me about SharePoint. They either want to know how to develop on it or how to deploy it, or they want to find someone who knows how.

If you are looking for resources to learn more about SharePoint, I recommend a podcast by Rob, Nick and Brett. Their podcast is called “SharePoint Pod Show”. There are some good books out there, but hearing experience MOSS developers talk about it on a regular pod show really immerses you into the technology.

Their current show is about SharePoint skills, and how they fit into your career and the current ‘economy’. Their show is based on a recent poll. It’s very interesting. If you are into SharePoint, or have to work with it, I suggest you give them a spin.

Soft Skillz: Annual Career Introspection


I often give a talk called “Soft Skillz: They aren’t just for humans anymore”. It focuses on many of the lessons I have learned over my career. Such topics as how to speak to humans, how to read body language, and how to manage your own career.

If you aren’t happy with where you are in your career, then you only have yourself to blame. Your career is something you need to actively manage. When you are taking a new job, it should only be because it fits into your plan for your career, never for money. To avoid any money related problems in the search for a new job, you should already know if you want a positions BEFORE they offer it to you. At that point, if you KNOW it supports your career plan, and is a company you can feel at home for a while, then you know it is a job you should possibly take. Of course, the actual job offer and it’s details must work out logically for it all to make sense (which is a whole other blog post).

There is a very simple process that you can use to make sure your career stays on track. It only has a few steps.

    1. Perform an annual career introspective review.
    2. Set you career goals. Outward then inward.
    3. Setup a plan to accomplish #2.
    4. Sign up for another year.
    5. Go back to step #1.

I follow this process on an annual timeline. I usually do step one during that week that no work gets done (between the holidays and New Years).

Step 1. Perform an annual career introspective review.

Take a whole day out of your life to sit down, and quietly think of your career for the past year. This will of course encompass your job, but it isn’t limited to just that. You want to think about your role at your job, what you have done to learn, the people you have met, and how the changing world of technology has impacted you, your job, and your career. Things that always stick out in my head are things like:

  1. Did I have opportunities to learn? Did I take advantage of them?
  2. Who and what had an impact on me?
  3. Who and what did I have an impact on?
  4. Are my 5/3/1 year goals any different?
  5. Does my J-O-B still support my career plan and goals?

I can’t answer these questions for you. Only you can. At this point, don’t worry about the economy, or factors like ‘stability’ in your company. This isn’t what that is about. Think of your current job as a vector, and your career path as a second vector. If they are in alignment, all is good. If they aren’t, then you and your employer won’t be happy.

I usually do all of this while playing my XBox 360. Your mileage may vary.

Step 2. Set you career goals. Outward then inward.

Decide what your career goals are. It’s ok, they probably don’t just jump into your mind. Especially if you haven’t been through this process before.

The farther out a goal’s timeline is, the more ambiguous it can be. For example, when I first started at QSI, my two five year goals were:

  1. Build a successful team, and reach a specific revenue target.
  2. Have an impact on the success and growth of my customers.

The first is a bit specific, and the second is fairly broad. I then broke those into one and three year goals. These shorter term goals should, in part, support you in reaching your longer term goal. My one year goals, at that time were:

  1. Win 3 projects, with a total revenue of 250k.
  2. Staff the team with two core members.
  3. Get involved in the community.

Step 3. Setup a plan to accomplish #2.

Come up with a plan to achieve your goals. The first step is to write them down, and put them somewhere where you can see them everyday. THIS IS IMPORTANT. This way, the day to day fire drills you have will not distract you too much from your goals. You need to be reminded of them, to stay on track. I recommend writing them on a 3”x5” story card, and tape it to your monitor (just below the sticky note with your password on it.)

In this ongoing example, my plan involved building a relationship with the sales team (to define our offering, teach the offering to the sales team), go on sales calls to hear how customers respond to the offering, meet existing employees as they rolled off other assignments (to see if they would fit my initial team needs), and get out in the community (go to meetings, volunteer to help in any way needed), and entertain promising team members or potential customers.

There were other steps in this plan, but you get the picture. It’s ok for this plan to change through the year, but your goals should stay constant, unless there is some major upheaval in what is going on. Don’t change your plan willy-nilly. It is very easy to lose your momentum in what you are doing, and you want the feeling of getting something done. This isn’t software, so your plan doesn’t have to be super agile.

Make sure to take time, and share your new goals and plans with a mentor or two. Don’t ask for their permission, but ask for their input and guidance. You might want to adjust your plans, based on their feedback.

Step 4. Sign up for another year.

Some people worry about their jobs constantly. They are always doing this math in their head, as to whether they should stay, are they happy, etc. This can come and go, based on how things that day or week might be going. But you need to keep the long view in mind when thinking about this. And I find all of this internal debate a huge distraction, and a lot of extra stress.

Something a mentor taught me about five years ago is to ‘sign up for one more year.’

Think about your job, in context with your career, and your plan (see above!). Decide if it still works for what you are trying to achieve, and if it does ‘Sign up for another year.’ In this process, you are committing to this job for another year. During that year, you will no  longer do this math, debate about staying, or actively look for new opportunities. This will remove a huge distraction, and reduce your stress by an amazing amount.

If the job doesn’t line up with where you want to go, then commit to going back to work, and continuing to work hard, but with a mind open to opportunities. It is amazing the opportunities that just drop in your lap when you are mentally open to and prepared for them. In this way, you will still put forth the effort into you job that you should be doing, but positioning yourself for a change. Keep in mind that you might want to start planning for your departure, just in case. Start training your replacement, and make sure all of your responsibilities are covered. This will make your departure smoother.

While you are doing this math, don’t include the ‘grass is greener’ factor, or ‘wart’ factors. ALL jobs have warts. There isn’t one without them. Just make sure they are warts that you can live with.

Step 5. Go back to step #1.

Every year, make sure you take this time, and follow the steps.

QSI’s James Bender talks on Cloud Computing with Windows Azure

Labels: , ,

Where: QSI Training Center, 440 Polaris Parkway, Suite 500
When: Wednesday, January 21, 2009 @ 5:30 – 7:00 p.m.
RSVP: Natalie Marsch @ nmarsch@quicksolutions.com

*Food & beverages will be served at 5:30 p.m.
Title: Cloud Computing with Windows Azure
Speaker: James Bender

Description: Cloud computing is poised to be the next big breakthrough in Enterprise computing. Companies like Amazon, Google, IBM, Oracle and Microsoft are making large investments in this new paradigm and positioning themselves to be leaders in this new space. But why is cloud computing so important? This session will answer that question and help you as a developer and/or architect get a handle on cloud computing. You will also see how easy cloud computing can be with Microsoft Azure in a variety of Enterprise scenarios.

Bio: James is an Architect with Quick Solutions and has been involved in software development and architecture for 13 years. He has worked as a developer and architect on everything from small, single-user applications to Enterprise-scale, multi-user systems.  His specialties are .NET development and architecture, SOA, WCF, WF, cloud computing, and agile development methodologies. He is an experienced mentor and author.

James is an active member of the development community. He started and continues to lead (organize??) the Columbus Architects Group (www.colarc.org) and is the senior editor of first-party content for nplus1.org, an educational website aimed toward architects and aspiring architects.

When he’s not sitting in front of his laptop playing with the code, he can be found playing Xbox, or with one of his many guitars pretending to be a rock star.

James maintains a blog at www.jamescbender.com and his Twitter ID is JamesBender

How to run .NET apps on the iPhone


Yes, that's right, on the iPhone. Not only there, but on the Wii and the Android phone as well.

Side note: I got to look at an Android phone at CodeMash. It was ok. It felt heavy for it’s size. The UI was confusing for me, but the GMail interface was very strong.

Anyway, I was browsing ArsTechnica this morning and came across this article, “Open source Mono framework brings C# to iPhone and Wii”. What really piqued my interest was because I just got back from CodeMash, where we had an iPhone development workshop.

In it Ryan Paul discusses how developers have been getting around Apple’s restrictive policies on not allowing interpreted and runtime based platforms on the iPhone. If that isn’t directly aimed at .NET, Java, and other really popular languages right now, I don’t know what is.

It seems that people are using Mono (from Novell, the brain child of Miguel de Icaza) to generate binaries. Mono provides the ability to skip CIL in the compilation process, and go straight to binaries. This bypasses the need for the runtime environment on the phone. There are other tricks they use to make this all work (pre-linking in all the other assemblies is an example).

There is also a full fledged 3-D game development platform called Unity, which was developed on Mono. You can use it to build games for the iPhone or the Wii.

This just goes to show that this is indeed the second Renaissance, as people are using these tools in ways their creators could not have imagined. These tools are following the same thought we have had with our tools. We want you to be able to migrate your skills and knowledge into other scenarios. Know .NET? Then you can use 90% of those skills on Web, RIA, Windows desktop, services, integration, XNA, the cloud, mobile, and now iPhone and Wii. To squeeze more ROI out of the investment you have in your tools and skills, you should look for more avenues to leverage them. And heck, I bet these people are smirking just a little bit by finding a way around the restrictions in the iPhone SDK.

“Let a thousand poppies bloom.”

One thing that Apple is forgetting in their policies, in their zeal to control the whole platform, is that true adoption and love comes from letting people do what they want with what they own. Think of kids with cassette tapes, and CD’s. Or the people with PSP’s, or Honda Civics. Those are examples of both industries that have restricted what you can do with what you own and paid for it in the long term, and some that are open to people doing what they want.

Sony at first restricted what people could do on and with their PSPs. Fortunately, they backed off, and even started supplying extra tools and access for home brewers. Now the PSP is a very strong mobile device segment.

nPlus1.org is hosting another ArcSummit on 2/25/09

Labels: , ,

nPlus1.org, a great web site that is helping architects become better architects is putting on another ArcSummit. This one will be in Columbus, Ohio on 2/25/2009. Microsoft is sponsoring, so it will be at the Microsoft office. The event goes from noon to 5pm, and we will be providing lunch.

The event will be partly presentation, and part fishbowl discussion, and will follow the same agenda as the ArcSummit in Cincinnati. Read the recap here.

We will start by talking about Software + Services, and what it can mean to your business. The second half will be a lap around Windows Azure, and how it works.

The nPlus1 team wants to keep the number of people at the event small so that the conversations can be richer, so sign up fast, they are capping it at 40 people.

To Register: http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032400944&Culture=en-US


Microsoft Office - Columbus
8800 Lyra Drive - 4th Floor
Suite 400 Columbus Ohio 43240