Category Archives: Uncategorized

Forgot to assign it when I posted.. Yes. It happens.

Origin Story (or Restarting a Long Quiet Blog)

This is the original “Pragmatic Agilista” blog. I’m claiming it.  I started it in 2003 on a different service and in fact, this is the third blogging service to host the The Pragmatic Agilista.  As an aside, I now wonder whether I should have called it Pragmatic Agilsto but that’s another story.

It’s funny, now that I think of it, how I came up with the name.  At the time, I was newly enamored of the Agile software development movement.  It was the way to solve all the things that were inherently wrong with the old way to develop software.  Since I had been writing software for different companies, in different countries for over 20 years at the time, I felt qualified to make that judgment too – so did many, many others but that’s beside the point.

So, back to the name. I had started my Agile journey by reading the “Pragmatic Programmer: From Journeyman to Master” back in ’99 or 2000 (I remember reading about the book in books column in Dr. Dobb’s or another now defunct programmer’s magazine) and excited by Kent Beck’s Extreme Programming Explained, I was off and running – or trying to; it was rare that potential clients were trying Agile in those days.

Partly, the “Pragmatic” in Pragmatic Agilista is a nod to the Pragmatic Programmer, the book that changed my programming life.  The other aspect is, as I said above, no one (near me at least) was trying Agile in any guise so the ‘pragmatic’ was meant to be ‘realistic’ or ‘not pure’.  ‘Agilista’ was because the ‘-ista’ suffix was fashionably applied to distinct (sometimes revolutionary) things and those devoted to them; think Sandinista or Zapatista.  (It’s true that the –ista suffix is also used to dis a concept, e.g. fashionista or Guardianista, but I chose it for the affirmative form).

Anyway, the title was meant to say, “Here’s a bunch of articles about being Agile in the real world by someone who’s into it” and apparently, I wasn’t the only one thinking about it in this way because by the time I thought about getting the domain name agilista.com, it was gone (I have but haven’t used agilista.net), and there are at least two other bloggers using “Pragmatic Agilist” as either their title or their identifier.

Why the long dissertation on the name of the blog?  Because it dawned on me this morning that to some extent, I am no longer ‘pragmatic’ about Agile; there’s no need to couch the intent – everyone and their neighbor claims to be Agile (or at least ‘doing’ Agile – more on that later).  On the other hand, after working at being Agile myself and helping others get to that state for 13 or 14 years now, there’s a certain reality to the journey that ultimately suggests pragmatism.  Maybe I should re-title to Agile Pragmatista?

Over the past, nearly six months, I’ve been writing a blog about my current heath issue – that’s not to say that I have a history of health issues, but this one’s a deusy (or doozy, if you’re less historically aware) – and I’ve enjoyed the experience (of writing the blog).  It has helped me deal with some things that I wish I hadn’t had to, but needed to handle.  So when I started feeling like my job was throwing challenges at me from different directions I thought, “Hey, why don’t I write it out on the blog?”

So, the plan is to come back to this as I think of things that I need to explore at the office and hopefully offer some insights into implementing an Agile environment.

We’ll see how it goes.

And further.. You can’t do Code Metrics in Visual Studio Team System Database Edition. Ridiculous!

So, I received some encouraging words from Mark Groves, the Program Manager for VSTS saying that UML is back in VSTS 2010.  See the comments on my previous post.  Thanks Mark.

That’s good.  A little late for me, but better than the alternative.

My latest frustration (Sorry Mark) is that there is an arbitrary limitation in VSTS Database Edition, namely that I can’t run Code Metrics on the code I can write in the tool. 

Ridiculous.

Apparently, to do that, I’d have to have VSTS Developer Edition installed – which I did, but installed the DB Edition for the database schema management functionality.

Annoying.

I know what the answer is though.  Get the VSTS Team Suite which has everything.

This is a poor answer because of the cost involved.  We have a team where we are trying to instill agile techniques and engineering practices.  That means everyone on the team does a little bit of everything, and common code ownership is what we’re after along with test driven development, et al.  Code includes database schemata too, by-the-way.

It doesn’t work well if the team has to be compartmentalized into a few Database Edition users, a few Development Edition users, and a few Architecture Edition users.  Maybe if there was a rotating license concept so that today, I’m working on Database issues but tomorrow I’m writing code like a fiend in the Development Edition; and the following day we’re collaboratively working on Modeling across the team.

Expecting development teams to absorb the cost of VSTS Team Suite in this economy is unrealistic and it’s driving us to look for alternatives.

I’m working up a list of .NET open source tools for the Bank in my capacity as a .NET Center of Excellence leadership team member.  This is a result of my cross-pollinating with the Application Lifecycle Management Center of Excellence, the Free and Open Source Software Center of Excellence and the Agile Users Forum.

Yeah, I’m busy.

So, if you have suggestions for Windows-based open source or inexpensive commercial best-of-breed solutions for .NET development by all means, let me know.  By-the-way, most of the tools have to be command line accessible to support Continuous Integration.  We are using JetBrains’ TeamCity in a pilot/proof-of-concept and it’s great.

Here’s a list of the tools I think I need.  Suggest others if you know of them:

  • Build Scripting: Currently using NAnt, but being encouraged to use MSBuild (which itself sucks, imho.  A poor man’s NAnt – probably not enough exposure)
  • Unit Testing Framework: Currently using xUnit.net
  • Code Coverage: Currently using the last open source version of NCover.
  • Cyclomatic Complexity: Open
  • Refactoring IDE Support: Currently using JetBrains ReSharper

I’m starting to consider looking at SharpDevelop as an IDE, but I’d lose ReSharper.  That’s a tough one.  Another possibility is Eclipse if someone could create decent C# support.

I love the .NET framework, and generally I’m a fan of Microsoft products.  Hell, I’m using Live Writer to write this post.

But I’m getting tired of the splintering of products in order to pry an extra couple thousand dollars out of us.  In our case, that’s a per developer cost.  

That’s a lot of dough.

It’s no secret that we’re being asked to look for ways to be more efficient and lower costs.  Open Source is getting a close look at the highest levels.

Can you say Mono?

No UML in Visual Studio 2008? It’s true.. and stupid..

There I was this afternoon, backfilling a waterfall requirement to produce a low-level design of a feature that is on it’s way to production, when I thought, “You know, it would be really handy to fire up Visio and get a first cut of a class diagram for this.”

It’s been a while, so I fired up Visio 2007 and stated scanning the menu options, looking for ‘Reverse Engineer’.  “It’s gotta be here somewhere.”, I think as I plow through the options.

No joy.

Now it’s time for the help system.  It says, “Open the project in Visual Studio then use the Visio UML option from the Project menu.”

I opened Visual Studio Team System 2008, and started looking.

Nope.  Not in the Project menu.  I looked some more.  It’s not there.

Then, out of the fog that is my memory some days, came a remembrance of a conversation I had with a Microsoft Product Manager some time ago in Redmond.

(Paraphrasing) “The Class Diagram tool let’s us add whatever we want to the palette.  If we had to go through the UML standards body we couldn’t make the progress we want to make.”

Oh yeah… No embrace and extend this time.

More like, disconnect and ignore.

Microsoft has decided that Class Diagram is all we need.  No more Visio Add-in.  No more UML in VSTS.

It’s arrogant in the extreme for Microsoft to simply assert that the Class Diagram tool in Visual Studio is sufficient for developers’ modeling needs.  UML is the standard, and Class Diagram is not UML. 

The other rub for me is that it requires the Architecture edition.  What about all the developers in my group?  I guess they all need the Architecture edition — which doesn’t include the Database Edition functions?

By-the-way, Visio has always been a poor choice for UML in my opinion.  Unless something significant has changed (my prior experience was so bad, I haven’t bothered to look since), the better choice has been Sparx Systems’ Enterprise Architect product.  It’s not an add-on like UML is to Visio; it’s purpose built and priced competitively.

No I don’t work for Sparx.

Removing integration with UML tools, even a poor tool like Visio, is a bone-headed move.

It’s not news that they decided this.  I knew about this a while ago; like two or three years, and I’m sure others remember too. 

It just bit me today for the first time because it’s the first time in five years that I have had to do low-level design diagrams after the fact to allow the checking of a box somewhere.  No one will ever look at these diagrams again, once they are perused to make sure they exist – not for understanding mind you.

And, no it’s not really news that Microsoft has done something like this again.

Unfortunately..

Close.. So Close. And yet..

I was working on figuring out the latest Visual Studio Database Edition GDR when I came across this Microsoft definition of Agile Methods:

A family of processes that application developers use to minimize risk by developing applications in a series of short iterations that last one to four weeks. In this paradigm, the primary measure of progress is working software, instead of hours spent or tasks completed. Agile Methods emphasizes real-time communication, such as face-to-face meetings, telephone calls, and instant messaging, over written documents.

The documentation asked for Feedback.  Who am I to shrink from that?

Here is an except of the Wikipedia entry for Agile Software Development that is closer to the real meaning:

Agile methodologies generally promote a project management process that encourages frequent inspection and adaptation, a leadership philosophy that encourages teamwork, self-organization and accountability, a set of engineering best practices that allow for rapid delivery of high-quality software, and a business approach that aligns development with customer needs and company goals.

Notice that there is a reference to a "set of engineering best practices" (one of which — developer-level unit testing — is supported directly by the Database Edition, yet no mention). 

Notice also that there is no mention of a dearth of documentation. Documentation is a requirement to be prioritized along with the working software aspect.  But I digress.

My primary concern is that it be clear that Agile Methods stress a disciplined approach to creating high-quality software through engineering best practices.  It is not chaos with no documentation as generally assumed by those who don’t know any better.

And I’ll keep pointing that out whenever it’s necessary…

New Laptop.. Woohoo!!

I just picked up my new laptop at BestBuy.  Its an Asus X83Vm-X2, with a Core 2 Duo, 4GB, an NVidia 9600M GS with its own 1GB, 320GB HDD and Vista Home Premium 64..

Nice!

Now the fun part.  Moving off my trusty, heavy and VERY noisy Dell Inspiron 9100 and figuring out what won’t run natively on Vista 64.

Keyboard is a little different but I’ll get used to it.

Happy Valentine’s Day she says.. 

Yes!