Wednesday Jun 28, 2006

Five Reasons I am a Curmudgeon Coder

These are my top five reasons for being the curmudgeon old coder that I am.


  1. Unnecessary Meetings i.e. Sink Holes of Evil
    Enough said. And how to fix them? Try this

  2. Coding is becoming simpler
    Yup, this is the "Back in my day.." reason, but with a twist. We are abstracting coding up higher and higher. Closing connections? Blah, don't worry, the framework will handle it. Memory allocation? Its okay, the garbage collection will handle it. Now don't get me wrong. I do appreciate the fact that because the abstractions are moving higher, I am left with more time to solve business problems. However, therein lies my problem. See, if I don't have to be an expert with bits and bytes and shifting, you know, that low level stuff; then that new grad from college doesn't need to worry about it either. And guess what? He's going to be cheaper than I am so who is going to get the position? I think we are abstracting ourselves out of a job. If ANYONE can program, then EVERYONE will.

    The second problem with going higher and higher with abstractions is that, well, sometimes they leak. If your abstraction leaks and something breaks, will you be prepared to fix the problem? For example, Hibernate is an abstraction for mapping a database table row to an object. Is there anyone out there who has NOT pulled their hair out because of a leaky Hibernate abstraction? Its okay to admit it, really it is. Millions of people admit it everyday on IRC, message boards and newsgroups. The abstraction leaked and now you are stuck with a problem that is over your head. So yeah, coding is becoming easier and we are creating abstraction zombies as the next generation of coders. Bleh.


  3. XML
    Repeat after me, XML is not a programming language. Say it again a couple times. Feels good doesn't it? I have to admit that I was an XML groupie for a bit. XML was supposed to save us all. Every bit of data in the world was supposed to be wrapped in XML goodness and be shareable between businesses. It was a great happy plan. And then something terrible happened. Developers got a hold of XML. We ruined it, at least for me we did. The thing that ruined it...ANT. ANT and I have a love/hate relationship. I do really like ANT but sometimes, a build just needs to be scripted. You know, things like conditionals and loops? XML is NOT a very willing friend when it comes to scripting. ANT and I, we want a good relationship, really we do. But XML just keeps getting in the way. Oh, and while I'm discussing XML, why oh why does EVERY SINGLE PROPERTIES FILE NEED TO BE IN XML?!?!?! Sorry, I feel better now. Onto number four.

  4. The coders aren't in charge anymore
    Since when did management become experts in how to create software? It used to be that the business would have a problem and want us to make software to solve their problem. We would work with them and create the appropriate solution. Everyone was happy, we got to do things our way, and business got software to make their jobs easier. Somewhere along the line management felt they needed to step in. "You need to understand, business people can't understand you, and you don't know business". This was their excuse...I think it is BS. So now we have business people who no longer trust us to make what they want. We have management who dictates the who/why/when/where/how of us building the software. And we have been reduced to...well, code monkeys?

    To those of you who are working in an environment where this is not the case. I applaud you and would just like to say that I am jealous of you. The best I can seem to manage are some guerrilla tactics followed by a campaign of "shock and awe". This is also the appropriate to mention that I believe Agile methodologies will become our answer to building trust again with the business. But until it becomes more mainstream we are going to continue to get beat up at the workplace.


  5. Fixing the effect of a defect, not the cause of a defect
    This last reason is becoming more of a trend and I think it relates up to reason number three. Our army of abstraction experts are developing a knack for applying band-aids to defects. Let's use Hibernate again for our example. Session closed errors are a big thorn in developers sides. What is the correct way to fix these problems? Well, there isn't a "one size fits all" fix. Instead, you might actually have to dig into the code. Message boards and newsgroups are a great source of information, but the debugger is your friend. Learn it, use it, become intimate with it. Please please please do not cut and paste solution X from a message board into your code base. Please? With sugar on top? Use the debugger, find the CAUSE of the problem and fix it.


What reasons do you have to be a Curmudgeon Coder? Feel free to share in the comments below.

Comments:

Groovy's ant scripting facility may help you out with your love/hate relationship with ant. You can easily embed ant tasks in standard Groovy code with a single call. So you get the power of ant with the power of a full programming language and because Groovy is very expressive the code is less verbose than xml or Java.

http://groovy.codehaus.org/Ant+Scripting

Posted by John McClean on June 28, 2006 at 07:43 PM CDT #

The reason coders aren't in charge any more is that we abused our power during the dot com run-up. We made demands. We told the business folk to roll over and sign checks and otherwise get lost. We let religious beliefs get in the way of doing actual business need analysis (database, server os, programming language, scc, IDE, whatever--when I saw slashdot users asking how to justify a particular technology rather than asking how to identify the better fit for a business, I got worried).

Not that your point isn't valid, mind. It's time for the business managers to get over <b>thier</b> tizzy now, too. IT and business needs to kiss and make up already, and let the decisions be made in their proper domain.

Posted by Jacob on June 28, 2006 at 11:37 PM CDT #

Reason number 3 holds a special place in my heart. I am working on an enviroment where I am allowed to talk to our costumers, I go to meetings, I answer the support calls, etc... but when my boss wants something done this particular way, his away, he will cite the "you're coder you don't understand buiness" mantra.

One thing that makes me go Curmudgeon is when office politics is more important than the software (or technology). I have a problem with one of my co-workers. We're in 7 people here, but one of them is really a pain in the ass. He's been locking the server with millions of database queries from a script he made last week, basically paralising the work of others.

And he doesn't listen to me. I've offered my help many times to optimize his program, but he always put me off saying stupid things. None here likes him, btw... it's not it's a "me vs. this guy" thing, and I have a good relationship with the other people.

ANYWAY... hehehe this is becoming a rant, anyway, I am simply letting him do whatever he wants. He's not letting others do their job and I don't care. Why I don't care?

Six months ago I had some arguments with another employe. He's long gone, btw. He betrayed the company's president, and was fired, and I hadn't anything to do with it. Anyway, he and me, we used to argue a lot about a project here (the one I talked at the beginning, where I do everything). I used to say: Do this way, and he went and did things his away. The software broke... not only externally, several parts weren't working anymore, but also internally.

He used a different coding convention (aka none). He simply *refused* to use SVN and commit his changes. He introduced several new libraries that duplicated some that I've done. He never made functions: I have 6 files with 200 lines of code where just one variable's value is different.

In short, it was a mess. So I called the company's president, the big boss:

- Hey man, I am having some problems with person X. He doesn't do what I tell him to do it. What do you think I should do?

Next day... the other owner of the company calls me to a meeting (she's the wife of the big boss). Says she told Person X what I've talked with the big boss. Says also that she's very concerned with me because she believed I wanted the guy fired, which I didn't, I honestly made that call looking for ways to improve my relationship with Person X, and after finding a way to talk normally with him, correct his development practices.

She also says that I am off the project. I am not allowed to talk to Person X anymore about the project. A software that I've developed alone for 5 years, and the guy was onboard for 3 months. A software that was the only profitable product on the office.

I was falsely accused... and I was angry, very angry. I thought about quiting the job. I cried when I got home. You know how these things are... 5 years into something, and it's like your child. I was hating the idea of letting someone brake my work.

Then one day I called Big Boss to my office to tell him I was going to quit. I ask:

- Hey man... your wife said I want you to fire Person X, what's up with that?

He anwers:

- Bah, that's BS. Don't worry about it. I don't think this way, and she will forget about this thing later. (the guy hasn't been fired yet).

And today, someone is running an horrible, inefficient script, that's preventing everyone else from doing their job, and I don't care. The thought about dealing with crap later if I complain about whatever someone is doing here is enough for that. I don't have the energy to play office politics... all I want is a pretty software :(

At least gives me time to surf the net :p

Oh, sorry for any mispelling or bad grammar, english isn't my main language,

Posted by Julio Nobrega on June 28, 2006 at 11:51 PM CDT #

Oooops about my previous post, I meant reason number 4, of course. :)

Posted by Julio Nobrega on June 28, 2006 at 11:52 PM CDT #

I think #2 and #3 describe double-edged swords.

XML is not the best tool for all the jobs it's given, but at least there isn't a competing standard making life more confusing.

And abstractions don't necessarily make coding easier. In the old days if your code didn't run you knew to look for the problem in your code. Now it could be that the problem is in some config file where someone put "com.whatever.somepackage.VeryLongClassNameEndingInURL" instead of "com.whatever.somepackage.VeryLongClassNameEndingInUrl" . And the debugger is less your friend than in the old days, too. If you try step through someone else's buggy Spring AOP project you'd better know where to put your breakpoints, because if you just step into calls you'll be hitting a lot of XXXProxyXXX classes for which you don't have the source code handy. So I wouldn't say it's easier, but you can do more because it's easier to use what other people have done than in the days when code, manuals, tutorials, development tools and support forums were not available online.

Posted by Alan R on June 29, 2006 at 01:14 AM CDT #

[Trackback] I recently read an article by The Curmudgeon Coder that kinda hit home for me in some respects. I can&#8217;t agree with everything said in the article, but the 5 reasons stated on why he&#8217;s a &#8220;Curmudgeon Coder&#8221; sort of made me laugh, ...

Posted by The Retrospector on June 29, 2006 at 11:09 AM CDT #

Advice when in Julio's situation (working for people who cannot recognize who is helping and who is hurting the business): If that is a permanent ingrained feature of the workplace, start looking for a new job where your great talents are appreciated and rewarded.

Posted by Dave on June 30, 2006 at 12:45 AM CDT #

#6 Language Religion has no more saviours.

I'm no longer beligerant, obnoxious, fanatical and threaten violence when someone suggests I should use a different language for a task (well other than if they suggest VB of course).

I'm still quite fond of what I use (Delphi and PHP) but in the olden days I would defend them to the death, threaten to eat someone first born if they disagreed with me and generally ridicule those who insisted on maintaining a working knowledge of C++. Much to my disgust I have reached an age where I can now see the benefit inherent in other language, and might even consider learning a new one if my employer would give me the training.

Microsoft are of course partially responsible for this in the introduction of .NET which allows anyone to write in anything and end up with the same rubbish.

Things were more fun in the old days :)

Posted by Toby Allen on June 30, 2006 at 02:21 PM CDT #

Post a Comment:
Comments are closed for this entry.