What’s your worst day as a coder?

Yesterday I was switching our test automation driver layer from WatiN to Selenium RC (Firefox / Chrome / Opera support and I was livid with the COM errors from IE in WatiN).  I think I’m glad that we made the switch, but it took quite a bit of trial and error to bend Selenium RC to my will.  That and something else I read today got me to pondering the worst days I’ve ever had as a coder trying to make unfamiliar or confusing technology work.  My list is something like this:

  • Using a CLOB or BLOB datatype in Oracle.  I’ve done it several times, but it never seems to get any more pleasant
  • Getting a custom authentication scheme to work with x509 certificates.  Shudder.
  • The day that a client developer hosed our CVS repository
  • The day that our project, the project that was going so marvelously with the team that was starting to gel, was shelved on a management whim
  • The day a month before go live when the BA finally saw fit to tell me about the other half of the requirements document that no one had told me about previously
  • The days that followed “here’s how to use our homegrown ORM”
  • The days that followed “you must use our standard architecture for…”
  • Writing queries against a custom Active Directory schema.  Ended up ditching AD a month later and just put all the user information in the database.  The nice, predictable, familiar database.
  • Any number of days doing test automation with NFit or FitNesse
  • Almost any day fighting with Legacy code, but that shouldn’t really count
  • The day and a half I spent making StructureMap work with open generic types a couple years ago. 

What’s yours?

About Jeremy Miller

Jeremy is the Chief Software Architect at Dovetail Software, the coolest ISV in Austin. Jeremy began his IT career writing "Shadow IT" applications to automate his engineering documentation, then wandered into software development because it looked like more fun. Jeremy is the author of the open source StructureMap tool for Dependency Injection with .Net, StoryTeller for supercharged acceptance testing in .Net, and one of the principal developers behind FubuMVC. Jeremy's thoughts on all things software can be found at The Shade Tree Developer at http://codebetter.com/jeremymiller.
This entry was posted in Uncategorized. Bookmark the permalink. Follow any comments here with the RSS feed for this post.
  • http://codebetter.com/blogs/jeremy.miller Jeremy D. Miller


    Just search my blog for “Fit” and/or “FitNesse” and you’ll see plenty of complaints. I still believe in the vision of Fit/Fitnesse, but I think we need better tools. Fit/FitNesse is usable, but you need to stay within its limits (example driven tabular tests).

  • http://geekswithblogs.net/chrisfalter Chris Falter

    @Jeremy – Why do you think so poorly of FitNesse? How about FIT without FitNesse? The reason I ask is that our shop is thinking of using FIT (with or without FitNesse) in order to help us reach that “executable specification” nirvana where business analysts/design team, developers, and QA team collaborate on the design of the acceptance tests in a format that all understand. Ambitious goal, no doubt, and we will likely fall short. Nevertheless, right now the design team writes a 4-page word Doc, the developer writes code that s/he thinks will meet the spec, and the QA team verifies by manual testing. There’s got to be a better way…

  • Peter Gibbons

    “So I was sitting in my cubicle today, and I realized, ever since I started working, every single day of my life has been worse than the day before it. So that means that every single day that you see me, that’s on the worst day of my life.”

  • http://lessthandot.com Alex

    The day I was introduced to informix, especially its’ “Smart BLOB” datatypes

  • Rather Not Say

    As a one-time team lead, I got greenlit by the CEO for a complete rewrite our legacy “classic” ASP, VB6 and COBOL app (Yes, “COBOL”. Don’t even get me started…) into .NET. This was followed by hiring additional developers and a very expensive Architect, extensive internal training sessions to bring all of our legacy developers up to speed, and my giving (at the CEO’s request) presentations of the new architecture and best practices we were implementing to several of our high profile clients.

    Four months into all of this the CEO informed me that when he had finally disclosed to the board the amount effort and expense involved in rewriting the app not only did the board kill the rewrite, they also decided to abandon all current and future web development projects, and to continue supporting the legacy app only.

    So, I had to break the news to all these great people that I had hired that there was no future for them (or me either) at the company.

  • http://hofmanndavid.blogspot.com David Hofmann

    the days followed by “standard Java web development is easy and SEAM makes it even easier”

  • http://www.deploymentzone.com Charles F

    Any day I have to deploy a system written in PHP, especially when my very well tested C# systems have to interoperate with it and rely on it for mission critical data.

  • meisinger

    the days that followed “and we’ll be using Visual Source Safe”

  • http://www.sidarok.com Sidar Ok

    The day, which is exactly 1 day before production, client told that they wanted a totally new UI.

    The runner up was the day I heard the sentence “We generate our UI and intend to spend 3 days and we are done”.

  • http://bahadorn.blogspot.com Bahador

    The day that I went to client’s site to present the program I was working on in the last month, with my .NET program’s source & compiled binaries, just to find out that they don’t have .NET Framework, and there is just a dial-up connection to internet!

  • http://www.twitter.com/MotoWilliams MotoWilliams

    any day where I have to do .Net data acess against DB2 on iSeries. Our lovely enviorment has a mix bag of SQL tables, DDS Tables (think WinFS for IBM) and some access code where a RPGLE program has to be called from a stored proc, which in turn populates the ‘answer’ in a table. Yea that is my hell – it aint fun.

  • http://blog.deploymentengineering.com Christopher Painter

    Oh I’ve had so many bad days lately… where to start?

    The day where the development director on a project allegedly using SCRUM told me that that he didn’t see any point in writing automated unit tests?

  • http://elegantcode.com Jan Van Ryswyck

    The days that followed “you must use our standard architecture for…”

    An inevitable hell on earth.

  • http://blogs.lessthandot.com chrissie1

    The day they decided to screw up lambda expression in VB.Net.


    They day they decided to fix it and say we have to wait for untill 2010 to get it.

  • Jonathan

    Ironically, for me the worst day was the one when I realized, after reading/study, that everything I had learned to that point programming was wrong (e.g. structured programming using OOP languages).

    Obviously you’re now on a higher plan, but you realize everything you did up to that point is effectively legacy code.

  • http://geekswithblogs.net/elroydsilva Elroy

    The day our team size exceeded 15.

  • Tim Scott

    The day it was decided to use SQL Server snapshot replication to connect the workflows of two remote systems.

  • http://devlicio.us/blogs/sergio_pereira/ Sergio Pereira

    The day I was introduced to Crystal Reports

  • Bryan Hunter

    On my first job out of college I worked for a tiny ISV coding an inventory collection package. It took about six months to write. Our first licensee was in Marion, OH so I traveled up to install the app and make sure things went smoothly. The app did heavy lifting for its day and was designed to run on hot new Pentium I laptops. Shortly after my arrival, the client informed me the app absolutely had to run on their 386 SX laptops (http://en.wikipedia.org/wiki/Intel_80386). I called my boss and he said “do whatever it takes, or we’re out of business”. Never have I done such dirty, unspeakable things to code. The word “atrocity” comes to mind. I only slept 12 hours over five days and was actually hallucinating by the end of the week. More of a linked list of worst days.

    Fun topic Jeremy.

  • Manoj Waikar

    The almost one-and-a-quarter month of a three month (prototype) project, that I spent writing Ado.Net code (though I used Data Access app. block), because of the same old stupid policy that the co. doesn’t allow the usage of any open source frameworks.

    Don’t you guys feel this is one of the common pain-points of working in .Net? Most of the companies still follow – no open source, no ORMs. And now, people have already started on the debate NHIbernate vs. Entity Framework.

    Sometimes I think it’s better to work on niche technologies like Ruby rather than keep stealing money from the employer or client, even if you don’t like.

  • SG

    I can think of two:

    1) The day my boss asked me to create a mail merge in MS Word and create an interface to initiate the merge from within our main application.

    2) The ISV I worked for was ramping up to convert our enterprise-class app from a client-server design with a VB6 Windows GUI to a web-based, multiple-tiered design implemented in a more modern language. Immediately before the effort was to begin, the company owner sold a system license to a Mexican firm, telling them that we already had a Spanish version of the product. Of course, we had nothing of the sort, and the development team spent the next several months on I18N and L10N and many months after that contorting the product to meet the needs of the customer. The team dissolved shortly after that, and the company was effectively bankrupt shortly thereafter.

  • jbland

    – the day i tried to integrate a new control into a web-app developed offshore and discovered that HTML was being generated directly from a CLR stored proc fed by XML generated by yet another stored proc (1 tier architecture, FTW)

    – the day my hard drive crashed, and a critical piece of code behind our (well functioning) 5 year old website was lost. Three sets of redundant backups failed, so we spent $800 for data recovery on a crappy Maxtor external drive.

  • KG2V

    Similar to your “shelved on a whim” – being lead developer on 1 part of a 4 program system, and having your part fully working and signed off, and having your manager come over sit down and say “I’ve got some bad news, and I hope you won’t be TOO upset, but I won’t blame you if you are. We’re shelving your system because the program that would feed your system is too far behind, as well as the other 2 programs”

    I sighed – it was the first time it happened to me – I had spent 6 months flying back and forth between NYC and the field site when that happened – aaarrrggghhh

  • http://www.tr-studios.com Rick Fleming

    The day was a long time ago, Sunday evening, about 5 minutes to 8 CST (I was just sitting down to watch X-Files, pre-DVR days, for me at least :) ).

    Phone rings, the project manager (a good friend of mine still to this day) asks if I’d be willing to come in; one of our software products currently in development is being reviewed by a state agency the next day and it’s all screwed up.

    Software project is in VB6… we work through the night until 11 AM the next morning, fishing through a mess of a program half-designed based off the “Business Objects for VB6″ (ever since that day I really disliked that book, but I’m not fond of CSLA either from what I’ve seen of it, so…), but in an very bad way, with ungodly amounts of database normalization (yes, Street was it’s own table)…. and every numeric field was a float (double), and this was a payroll application. Application crashes all over the place, it doesn’t build correctly without wanting to destroy the “Binary Compatibility” of the typelib, it takes hours to process paychecks, and of course since everything was doubles – paychecks didn’t zero-sum, they were always off by cents or dollars. And no normal recordsets in sight, the OLEDB wrapper had to be wrapped with a custom wrapper written in C++ATL/COM “just in case” they decided to switch from ADO to something else… Oh, and I was also only partially familiar with the project at the time (there’s no way I would have lead/designed anything remotely like it).

    Suffice it to say, after 14 hours straight, and being up for the entire day before, they presented the software in a completely refactored state, and was successful in the presentation.

    All thanks to two senior developers/architects (one was I), neither of who were on the actual project full time at the time, and the project manager who at the time had been mainly a Delphi developer (he’s now an excellent VB.NET developer), cleaning up what was made by two fly-by-night consultants and 8-10 full timers.

    Ah, the memories :)…

  • http://damieng.com Damien Guard

    In my experience home-grown frameworks/shared-code/ORM are generally okay until you start hitting the sections that are there “for future use” or to abstract out things that don’t need to be abstracted…


  • SteveJ

    -Waiting until the day before a big money demo to do multi-company/team code integration (repeated n many times)

    -The day I feverishly wrote code on a cross country trip to integrate a vital policy rule change (the requirement changed while I was on my way to the airport to install and deliver the software)

    -The days I refactored an incomprehensible third-party code base to support a feature that was cut about 3 hours after I finished it.

    -The day the CEO decided a new version had to be released today even though QA had dozens of show stopper bugs for us to fix – I resigned the next day.

  • http://dotnet.org.za/cjlotz Carel Lotz

    1. The day management decided to outsource our project to India
    2. The next day when they informed us that we need to kindly assist and co-orperate with them to make the project succeed.
    3. The day, 12 months later, when management decided that we need to redo what was delivered by the offshore team

  • http://codebetter.com/blogs/jeremy.miller Jeremy D. Miller


    Just remember that it’s a lot more fun to be the centralized architecture group than it is to implement their edicts;-)

  • http://creedcultcode.blogspot.com Dale Smith

    More bad days:

    1) The day we used a home-rolled ORM tool
    2) The day we designed our ORM tool to work only with stored procedures
    3) The day we wrote components shared among multiple apps, which are deployed on separate database instances with some schema differences.
    4) The day shared component sprocs had to be kept in sync between multiple app database instances.
    5) The day, due to our branching strategy, when we had obscenely complex merge scenarios
    6) The day We moved into new branches for WIP on multiple projects during out current development effort
    7) The day we broke our one or two shared assemblies into many multiple assemblies
    8) The day we decided to have a centralized architecture group
    9) The day we moved build responsibilities from each team to a centralized build management group

  • http://graysmatter.codivation.com Justice~!

    “The days that followed “here’s how to use our homegrown ORM””

    I see you too have been touched by the EDS dragon. 😉 Then again, that could go for any number of companies, I suppose.

  • http://creedcultcode.blogspot.com Dale Smith

    – The day our dev management decreed, “Thou shalt not use an open source ORM”

    – The days that followed “here’s how to use our homegrown ORM”