An outlet for my obsession with technology
Every revolution needs a martyr (ALT.NET)
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 DevelopmentPM -
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
- There is a mathematical formula for software maintainability known called Cyclomatic complexity
- 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
Domain Driven Design
http://behaviour-driven.org/DomainDrivenDesign
DRY
http://en.wikipedia.org/wiki/Don%27t_repeat_yourself
SOLID
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 DevelopmentLet’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:
| Print article | This entry was posted by Eric Polerecky on June 17, 2009 at 12:57 pm, and is filed under Agile, Scrum, alt.net, oop. Follow any responses to this post through RSS 2.0. You can leave a response or trackback from your own site. |
about 1 year ago
fight the good fight … for what it's worth i am in your corner … best of luck!
about 1 year ago
Good luck! Proud to do my tiny part in your war.
about 1 year ago
Analogies be what they may. Make sure you know which hills you are will to to die on before hand.
That said…might you not have gotten what you wanted if you had kept your mouth shut?
Point 2: if you have been pushing for 2 years and nothing has happened, it might be time to move on anyway. Pushing a bolder uphill by yourself becomes wearying after a while. No employer is worth your sanity, nor should they suck the enjoyment out of the job.
about 1 year ago
I couldn't agree more about the loss of sanity. At this point I don't want to move to another place where I have the same fight. While I don't get to run the show I do get to use pretty cutting edge software. We have been pumping out MVC sites since preview 3.
If you know anywhere looking send them my way….please
about 1 year ago
Ooo, nice slip of the keyboard;
' If I’m going to be backed into a coroner I don’t think I can hold my tongue anymore'
.
Good luck, and if you get fired then it's probably for the best.
about 1 year ago
Never give up, never surrender, we, the anonymous collective who knows that good code comes from good practises and that good code helps businesses to survive, know your fight is worth it!
about 1 year ago
You forgot to mention…
Outcome Five
They read this blog post and the meeting becomes a personal attack on you and you get fired before you even get a chance to state your case.
about 1 year ago
Maybe subconsciously that was a hope….
about 1 year ago
Dude. Quit. Seriously if all the good developers in shitty work environments voted with their feet, it would be a lot harder for these shitty work environments to exist. At least they would have to concede competitive advantage to software companies that valued continual learning and continual improvement.