Note: I like to use lots of analogies. I understand that my situation is nothing like that of those who die for their respective causes. Also; I use the term “OOP principles” to generalize all the methodologies/tools/practices used in today’s application development.

Introduction

I work in a what is, too me maybe, a unique development environment. Our current organization structure does not have a technical architect. The developer position ladder ends at lead developer. Without a TA we are attempting to run the development process through a committee. With close to 30 developers spread across to 5 different “teams” and with multiple project managers and each development team in a “silo”; its not an easy task and its going as well as you might expect.

I have asked repeatedly to be excused from the committee with no luck. You see the committee’s mission statement is to create standards documents. We spend countless hours discussing process and other red tape that should simply be automated.

Until now the meetings have had little effect on my development. My development team and I simply code away following OOP principles, POEA, etc, blah blah blah. I have my own CI and SVN server and I’m (on my own personal time) automating as much of the deployment process as I can via my new project AutoDeploy. Simply; I have to act under the radar in an attempt to create “good” software.

Background

My employer is outsourcing the initial design and development of a series of applications (web and web services) which I will eventually be responsible for extending and supporting. The vendor has discussed, with my employer, using an agile mythology, specifically Scrum, for managing the project.

The vendor will be on-site all next week. At that time I am responsible for introducing them to our framework. Think dumbed down version of Sharp Architecture. So dumb in fact that most of the OOP principles have been removed! I recently committed unit testing projects; but no other team is yet to use them, in fact they have not been blessed by our “.NET standards committee”

At this point I know who the vendor will be, how they will mange the project, what my roll will be during the development and after. I don’t know what methodology the vendor will use to translate the requirements into a deliverable. I don’t know what, besides the application, consists in the deliverable. I don’t know what metrics will be used beyond end user functional testing for acceptance testing.

It is with all these question in mind I fired up outlook and set off this email. Please keep in mind that I have been on a soapbox for 3+ years pushing for answers to these questions and I’m a little frustrated at this point. Also; I’ve never been able to be tactful.

 

From: Polerecky, Eric [mailto:polereckye@xxx.com]
Sent: Tuesday, June 16, 2009 10:56 AM
To: My Project Manager, Department Manager
Subject: Portal Development

PM -

It’s no secret that my development methodology is, let’s say, different then most other [Redacted Employer name] developers. There is a lot of documentation that supports using the methodologies. Microsoft, Every college computer science curriculum, High profile community members and countless books all suggest that using these methodologies build better software. Better in this case means:

  • More maintainable
  • Requiring less hours to develop
    • I’d put lots of money on it.
  • Flexible to change to the clients changing wants and needs
    • See [Redacted Current Large Project]

With all that said, I’m not sure how you would like me to approach [Redacted Vendor name]development effort. Personally, after one short conference call, I feel these methodologies are much more inline with what [Redacted Vendor name] then with [Redacted Employer name]. I am pretty confident that [Redacted Vendor name] would happily develop the [Redacted Project name] portal using these methodologies. I am also confident that the software produced would be “better”.

I could write an entire novel about how this approach to software development is unlike [Redacted Employer name]. I’m available if you would like to talk more about these topics…I like talking about computers :)

Here is a list of links to information about these methodologies and tools used to support them.

Object Oriented Programming

http://en.wikipedia.org/wiki/Object-oriented_programming

http://www.cse.secs.oakland.edu/courses.php?CourseType=CSE&IDLow=100&IDHigh=300

- OOP is a level 200 course……

http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod

Test-driven development

http://en.wikipedia.org/wiki/Test-driven_development

http://bradwilson.typepad.com/blog/2009/04/its-not-tdd-its-design-by-example.html

Behavior-driven development

http://behaviour-driven.org/

Domain Driven Design

http://behaviour-driven.org/DomainDrivenDesign

DRY

http://en.wikipedia.org/wiki/Don%27t_repeat_yourself

SOLID

http://www.lostechies.com/blogs/chad_myers/archive/2008/03/07/pablo-s-topic-of-the-month-march-solid-principles.aspx

Patterns of enterprise application architecture

http://www.martinfowler.com/books.html#eaa

As many of the agile mythologies as I can in the current environment

Fail Fast – http://www.martinfowler.com/ieeeSoftware/failFast.pdf

Release Early – http://toc.oreilly.com/2008/06/release-early-release-often-ag.html

Continuous Integration

http://en.wikipedia.org/wiki/Continuous_Integration

Static Code Analysis

http://en.wikipedia.org/wiki/Static_code_analysis

http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis

And on and on….

At this point there are some back and forth emails about project management methodology and application architecture implementations which ends with this email.

From: Project Manager
Sent: Tuesday, June 16, 2009 11:42 AM
To: ‘Polerecky, Eric’;
Subject: RE: Portal Development

Let’s get a couple people together to discuss your concerns with how the [Redacted Vendor name] methodology/technology could impact our ability to support this application longer term.  I will set a meeting.

Thanks,

Project Manager

At this point I’m at a loss for words. A meeting to discuss my concerns? I have no concerns. I am pretty confident that the vendor will be following OOP principles and I am very happy about it. I just want to ensure that they are.  I want unit tests and code coverage to be part of the deliverables. I want separation of concerns and n-tier. I expect these things based on the limited interaction I’ve had with the vendor. I just want conformation!

Also I want to ensure my employer understands the code delivered will be unlike that of most other projects in this organization

Another meeting? Isn’t this what we have the “.NET standards committee” for? I bite my tongue and wait with bated breath for the meeting request.

Next up in my inbox is a meeting request. The attendees of this meeting include my PM, another PM which we will call PM2, and a lead developer from another department. I don’t know the agenda of this meeting or how these two individuals can help discuss my “concerns”.

PM2 – 10 years ago PM2 was a DBA and for this PM2 is looked upon by the other PM’s as the most technical. It says a lot about the technical knowledge of our PM’s.

Lead developer – toes the party lines. A Java developer that had a very bad experience trying to build a large application using OOP principles. As such; Lead developer is a big opponent when I request to use DI/IoC, OR/M and any other tool that would help support my development using OOP principles. Webforms, ADO.NET, HTML, CSS is the way to build web applications.

Today

I’m pretty sure I am going into a meeting where I am going to be asked to try and convince 2 people that are opposed to my view points as to why I want to require, hopefully just ensure, that the vendor will build these applications the way I would. Since I build software this way for my employer; I also feel like I am going to be challenged about the architecture for every piece of software I build.

I’ve been on my soapbox for far too long. I’m stood in front of the entire department doing demos too many time. I’ve held lunch time developer meetings. I’m tired of fighting the fight. If I’m going to be backed into a coroner I don’t think I can hold my tongue anymore. I’m stubborn as hell and there is no way I am going to be asked to support, maintain, extend an application that is not designed and developed using OOP principles.

I woke up today ready to die. Ready to sacrifice myself for a cause.

I woke up this morning expecting, but not hopping, that today would be my last day with this employer. I woke up early, very unusual for me, to the sound of the rain. I went downstairs and looked out windows and thought “today would be a good day to die”.

I got dressed and gave my wife a kiss good by. On my way out she yell “Give’em hell” and I pumped my first in the air.

Sitting in my car, with the rain pouring down around me, I plugged in my Ipod and fired up the podcast where I left off. Scott Hanselman – Silverlight 3 with Tim Heue. I drove off to war…an odd feeling.

Possible Outcomes

I can’t say for certain how the meeting is going to go but I do know there are only four possible outcomes…and two of them involve me being fired.

Outcome One

I do not manage to bite off my tongue before this meeting. I criticizing most other projects to the point of getting fired.

Outcome Two

We speak with the vendor, and they are going to use OOP principles and my employer is going to allow it.

Outcome Three

We speak with the vendor, and they are going to use OOP principles and my employer wont allow it. And I am not on the project.

Outcome Four

We speak with the vendor, and they are going to use OOP principles and my employer wont allow it. And I am required to still be on on the project…at which time I quit.

Tomorrow

More updates to come. Meetings the rest of today….would have liked to write more before the event.

Related posts:

  1. Every revolution needs a martyr (ALT.NET) Part 2