Mr Fix-it's POV



  • I was the new guy at a team of so-called "experts" developing a php-based project for a major company. The project was so important, it made probably around 50% of my company's income.
    It was quite a success, in that it worked and did what it was supposed to. But frankly, it was a pain in the ass to work with.
    1. For starters, there was ONE development environment for everyone. That is, everybody was editing the same files.
    This was fixed within a few weeks, because they hired some other people and the repository started to be seriously crowded. Fixed after a lot of yelling around and a few file restores.
    2. The dev server had error reporting disabled. That is, the files were considered to be OK as long as no errors were thrown in our face. I once started to add error_reporting(E_ALL | E_NOTICE) at the beginning of each file I edited; there were tons of uninitialized variables being read.
    3. It was a hell of register_globals. In 2006.
    4. The documentation was non-existent. "Ask Janice" or "Bob" were the comments that indicated who might have done what. A long time ago.
    5. After discussing things with another developer I introduced a shy unit testing directory. It was actually very useful - when asked about the progress, I used to send the url of the unit test. "63 tests passed, 17 failed, I'm still working on an edge case" was much better and easier to estimate than "I'm 80% done". Everybody agreed it was a good idea; turns out I was the only one using it.
    6. Magic numbers? Yeah. But why stop there? We had magic alphabet! Case-sensitive, too.

    Janice and Bob were the two senior developers. Their word was the law, and it was a law you wouldn't dare. Bob had a simple idea of developing for the web - throw more shiny at it! He once replaced ALL controls with some YUI, which broke the whole app in Firefox. Hey, nevermind, the client uses IE6, it works in IE6, so it stays.
    Janice was a self-taught php developer, who stopped the self-teaching process when she got the job. That was about 5 years before I was hired. She had a feeling that she could instantly understand all code, and that her own code was brilliant. Her brilliantly written classes wound up initializing variables from other classes, session, or letting other classes modify them. 

    Their website has had an "under construction" page for 2 years now.

    I'm glad I left the Experts.



  • The company I work for is probably progressing into that kind of situation. If you need to fix a bug or implement a feature, the expected way to do is to copy the code from the file server to your own PC, do any alterations necessary, and then copy the code back to the server. After people constantly breaking the build, they had the genius idea of including a version number in the directory name, which must be incremented should you make changes. So now we have a full file server filled with hundreds of directories of basically the same source base with small changes to certain files here and there. So they say now that once you create a new directory for your latest changes you should also delete the oldest directory you find.



  • @Kiss me I'm Polish said:

    She had a feeling that she could instantly understand all code, and that her own code was brillant.

     FTFY.



  • This is a little confusing- Are you the same Mr. Fix-it from the frontpage article?

    The authors change so many details that it's impossible to tell.



  • @tOmcOlins said:

    This is a little confusing- Are you the same Mr. Fix-it from the frontpage article?

    The authors change so many details that it's impossible to tell.

     I'm pretty sure I'm not the same person, but the story looked really familiar when I read it.



  • I had a similar experience back in the day.

    The difference was, I bode my time, used proper programming techniques to speed my own development and improved my fix quality, and eventually simple project turnover combined with merit selection put me in charge.  Then many more of the problems got fixed.  (The full rewrite didn't happen for several months, while the potential of getting a decent product by simple bug stomping.  I let management make that call on their own initiative - well, other than showing a chart of "# of bugs fixed" each week at the team meeting, and making certain the number for the current week was never lower than the prior week - even if it meant spending some time doing manual tests after hours without user bug reports.  Not that I needed to do that more than once.)

    Yeah, there were politics.  But there's only so long that the head programmer can reasonably be expected to endure the FNG performing more commits, for more complicated features, and not having bugs in his code.  After several rounds of head programmer, nobody else seemed to want that job...



  • @Kiss me I'm Polish said:

    He once replaced ALL controls with some YUI, which broke the whole app in Firefox. Hey, nevermind, the client uses IE6, it works in IE6, so it stays.

    I'm with you up until this point.

    YUI is a great toolkit, and it is compatible with Firefox. Plus, there's nothing wrong with building an application to target a specific platform, even if that platform is IE. Obviously targeting multiple platforms drives up cost due to extra testing and complexity; the ability to get an okay from the client to target a single platform helps boost your profits.



  •  @savar said:

    @Kiss me I'm Polish said:

    He once replaced ALL controls with some YUI, which broke the whole app in Firefox. Hey, nevermind, the client uses IE6, it works in IE6, so it stays.

    I'm with you up until this point.

    YUI is a great toolkit, and it is compatible with Firefox. Plus, there's nothing wrong with building an application to target a specific platform, even if that platform is IE. Obviously targeting multiple platforms drives up cost due to extra testing and complexity; the ability to get an okay from the client to target a single platform helps boost your profits.

    Whatever that was, wasn't compatible with Firefox. Maybe it wasn't properly done, I don't know. I heard YUI cured cancer and did other miracles, but somehow they did it wrong. And I should be more precise: it worked better in IE than in Firefox, but it wasn't better than before.

    We just went to work one day and found shiny colourful drawn "buttons" instead of the old plain radio buttons, checkboxes etc. It looked kind of nice, until we found we couldn't fill in the text fields using keyboard only - had to click the thing with the mouse or it wouldn't work. The message boxes were replaced with animated boxes drawn on top of visible page, and - surprise - wouldn't be closed by hitting the spacebar.

    Tap-tap-tap - pause to find the mouse - point, click - pause to go back to the keyboard - tap tap tap

    I don't know what it boosted, but it certainly didn't accelerate the development.



  • @Kiss me I'm Polish said:

     @savar said:

    @Kiss me I'm Polish said:

    He once replaced ALL controls with some YUI, which broke the whole app in Firefox. Hey, nevermind, the client uses IE6, it works in IE6, so it stays.

    I'm with you up until this point.

    YUI is a great toolkit, and it is compatible with Firefox. Plus, there's nothing wrong with building an application to target a specific platform, even if that platform is IE. Obviously targeting multiple platforms drives up cost due to extra testing and complexity; the ability to get an okay from the client to target a single platform helps boost your profits.

    Whatever that was, wasn't compatible with Firefox. Maybe it wasn't properly done, I don't know. I heard YUI cured cancer and did other miracles, but somehow they did it wrong. And I should be more precise: it worked better in IE than in Firefox, but it wasn't better than before.

    We just went to work one day and found shiny colourful drawn "buttons" instead of the old plain radio buttons, checkboxes etc. It looked kind of nice, until we found we couldn't fill in the text fields using keyboard only - had to click the thing with the mouse or it wouldn't work. The message boxes were replaced with animated boxes drawn on top of visible page, and - surprise - wouldn't be closed by hitting the spacebar.

    Tap-tap-tap - pause to find the mouse - point, click - pause to go back to the keyboard - tap tap tap

    I don't know what it boosted, but it certainly didn't accelerate the development.

    I know some of the people who work on YUI.  This is why I will never, ever, ever use it for anything.  Ever.


Log in to reply