Hey guys... maybe we are the one's who've got it all wrong?



  •  

    Ok this is going to be a long post.

    First a little background. I graduated from college a couple months back, and I've had a passion for computers, internet, and IT since the last 10 years.

    I've been a regular reader of this website for quite awhile, and I was delighted when I found that there exists a community of programming/computer enthusiasts who appreciate the art and science behind our profession. Even tho most of you shared a laugh over all the WTF stories; I gained some great lessons.

    Since the last couple weeks I've been watching some of the TED videos ( http://www.ted.com/talks ). You can find some truly inspirational talks there from experts from all walks of life and every possible field. Watching these videos is a humbling experience, even for an arrogant brat like me.
    Now you guys must be wondering what this has anything to do with WTF? Let me explain.

    You see, I've been thinking...

    Does it really matter what web-framework to use?
    Do all those Apache projects really matter?
    Does your dislike for Perl and PHP matter?
    Do your arguments whether to disable or enable "Magic quotes" in PHP really matter?
    Do your incessant arguments over "tabs vs spaces" in Python really matter? ( http://groups.google.com/group/comp.lang.python/browse_thread/thread/5d86526a6b08506d/da823f59bcb381fc?lnk=st&q=tabs+vs+spaces&rnum=5#da823f59bcb381fc)
    So your fellow programmer wrote his own O(n)^n string sort algorithm instead of using the standard library - big deal? really?
    Do your Postgres VS MySQL debate matter?
    Do your strong sentiments over varchar2 really matter?

    We all share a common dislike for working with out-sourced code. I agree. In my current job, I have to maintain an out-sourced system.
    But let's think about it for a second... yes, the Indians are taking our jobs, ruining the prestige of our profession, turning our art into a sweat-shop... but does the world care? More importantly, SHOULD the world care?  as long as the client is getting "something that works" - what's the problem? (Yes, I am quite aware that I am sounding like a PHB. Read on.)

    Maybe we are the one's who are too stuck up and cant seem to get to terms with the fact that the world doesn't revolve around our pet-peeves? The world doesn't revolve around "writing clean maintainable source code"? A typical organisation doesn't care whether their database is vulnerable to SQL-injection, all they care about is "sailing along".
    Gentlemen, maybe it is us who are too stuck up and shriveled in our little per-peeves, nuances and gripes.

    What do you think is of more value? Spending time grueling about the "correctness" of your program, or taking the extra time to update Wikipedia? or make a web-site for elderly people? Dont laugh, I am just throwing ideas here.

    Most of you come from various IT backgrounds, but does any of you look down upon your work and wonder "what is the significance of my work in the grand scheme ? " . Sure, you were able to use Django and create a website for your company in half the time.... and you even got a pat on the back from your manager. Ok then what?

    You see, I am beginning to think that all those cheap Indian outsourcing companies are smarter than us after all. I feel they are the one's who've truly embraced the concept of "IT for the masses" - if it weren't for those guys, we would't see "IT solutions" propagate so freely in the world today. Organisations all over the world wouldn't be able to afford any IT at all. Sure, the quality may be lacking but at least there is some form of IT manifestation in some way - thanks to outsourcing.

    I think some of us may have missed memo... the one where computers were invented to help humans. I think the computing forefathers would feel much more joy in seeing their inventions help cancer patients, than a clever O(n) algorithm posted on webforum.

    As a fresh graduate, and a strong believer in computer science (I have the Fowler book, and Code Complete 2 is in post)..  I've spent an awful lot of time refactoring source code so that it is "beautiful". I spend an awful lot of time researching, and figuring out the best, most non-WTF way to implement something. But... I think I may be wasting my time.

    We are the grumpy ol' men of the IT world. Tell me I am wrong, please tell me.

     



  • First, the smart ass comments.

    Does it really matter what web-framework to use?

        No. As long as you use one I know and code the way I like it. 

    Do all those Apache projects really matter?

         No. They all suck horribly.  Use IIS or WebSphere.

    Does your dislike for Perl and PHP matter?

        No.  They both suck for different reasons. 

    Do your arguments whether to disable or enable "Magic quotes" in PHP really matter?

        No.  PHP sucks, you shouldn't be using it, so enabling/disabling magic quote is irrelevant.

    Do your incessant arguments over "tabs vs spaces" in Python really matter?

        No.  Python sucks, you shouldn't be using it.  Now tabs vs spaces in C# - use tabs damn it.

    So your fellow programmer wrote his own O(n)^n string sort algorithm instead of using the standard library - big deal? really?

       No.  When I saw him do that, I ripped it out and did right.  Next time just give the assignment to someone competent and cut out the middle man.

    Do your Postgres VS MySQL debate matter?

        No.  You should be using either Oracle, SQL Server or XML, there are no other options. 

    Do your strong sentiments over varchar2 really matter?

        No.  You don't need varchar2 anyways.  Everything should be in English anyways, so there is no need for code pages.

     

    Seriously, some of what you state is true.  Programmers are just as "religious" about certain things as any other group - arguments about naming conventions, formatting styles, etc are petty since they have no effect the value of the application.  Questions like the maintainability of the code is different as it does provide value - just not immediate value.  If I'm working on an application that I know will have a long lifetime (years), I'll will make it as understandable and maintainable as I can.  We don't live in a world where everything is thrown out every 6 months and rewritten from scratch.  There are plenty of systems that live for decades.  Example, it took MS five+ years to completely rewrite SQL Server 2005.  Imagine if that was the case for every release because the code is in such a state that you can't modify it.  MS wouldn't have too many customers after a while either since the cycle time for new features is well beyond what the market will bear.

    But on the other hand, if I'm making a once and done system such as a data migration script, I'm not going to make it uber robust and configurable.  I'll design it to translate the data correctly and throw it away. 

    The point is, you need to act according to circumstance and not take a "one size fits all" approach to anything. Ever.

     



  • Here's a roughly equivalent question that effectively sums up the flaw in this idea:

    Is it better to have cars that randomly blow up, killing 1 in 1000 of the people who get into them, or no cars at all? 



  • I thought they did that already. Although I believe they are called "traffic accidents".



  • @Faxmachinen said:

    I thought they did that already. Although I believe they are called "traffic accidents".

    Assume that I'm referring to cars which randomly and violently explode when you sit in them and close the door, for no apparent reason.



  • you seem to have forgotten that we write good code with a well thought out design for a reason.  Seriously, we don't think about the design just for grin, there are reasons that some of the things on this site are "worst than failure."



  • Does all this stuff about democracy, freedom and individualism really matter? The chinese seem to do perfectly fine without them, so maybe they are right actually...



  • Well, you're right that people in the IT industry seem to be particularly prone to religious debates over some pretty pointless material.  However, I think that this perception is mostly magnified by the anonymity and hasty posting that the web encourage.

    Other than that, I don't quite see what the point is.  Lower quality software may have some short term payoffs, but only at the expense of pretty severe long term pain.



  • Hi there,

    I like your post, and I've had the same sorts of thoughts, about many aspects of my life, not just programming/IT/computers, and had discussions with my good friends about the same thing. Sometimes I think lots of smart people can be "grumpy ol' men" about things, and it can be good or bad, depending on the situation, I think.

    For me, being particular about things; writing elegant code, or designing something the way I want to "because it's the right way to do something" is fun and fulfilling. When practicing my hobbies, I strive towards these sorts of goals, because that's what makes it fun for me. It would be no fun for me to quickly slap together a program, even if it accomplished what I wanted. I have the luxury of being able to do that with my own hobbies though, because I'm the only one who cares how it is accomplished. In a work atmosphere, I try to do the same thing, but when it comes down to it, the deadlines and just the reality of the work world sometimes force me to stray from that "fun, elegant" ideal in order to just "get it done". I try to stick to my guns as often as possible though, both because it's fun for me, and because I've come to the conclusion that whatever it is is the right way.

    So yes, we might be the grumpy ol' men, but for me, being that way is fun. I don't think I'd last too long if I rigidly kept to that mentality at work, but life is full of sacrifices :) I think it's important to try and stick to the "right" way, and encourage others to do so. I think it's good for advancing the state of all things, to do things the right way when we have the opportunity to, but sometimes the reality of the paycheck requires doing things however possible. Basically, it's all about the balance between idealism and reality. I'm happy with my balance level, and it's fun to be an idealist and hear other people's ideals on forums and such.

    As a side note: this applies to many things outside of computers, and not just technology either. Many authors and artists struggle with writing the ideal book/painting/sculpture vs creating something sooner than later that can put some money in their pockets. How much idealism can you afford to sacrifice? The automotive world is full of it too, engine designers can pour over a design for years and years, but at some point you just have to say "this is good enough" and put it into production :)

    Just some rambling thoughts out loud,
    -EJ
     



  • @asuffield said:

    @Faxmachinen said:

    I thought they did that already. Although I believe they are called "traffic accidents".

    Assume that I'm referring to cars which randomly and violently explode when you sit in them and close the door, for no apparent reason.

     

    Ah, now I understand:-   Microsoft cars!



  • @Control_Alt_Kaboom said:

    @asuffield said:

    @Faxmachinen said:

    I thought they did that already. Although I believe they are called "traffic accidents".

    Assume that I'm referring to cars which randomly and violently explode when you sit in them and close the door, for no apparent reason.


    Ah, now I understand:-   Microsoft cars!

    That comment was either very, very smart, or very, very stupid. 



  • @asuffield said:

    @Faxmachinen said:

    I thought they did that already. Although I believe they are called "traffic accidents".

    Assume that I'm referring to cars which randomly and violently explode when you sit in them and close the door, for no apparent reason.

    Faxmachinen has a good point there actually. People do get into cars, aware of the fact that it may kill them. Now cars don't just explode for no reason, but traffic accidents do happen. Tens of thousands are killed every year in cars. Yet people still use cars, because they think that the benefits of using a car outweighs the dangers. I guess it's the same with crummy IT systems. Even if it is buggy, insecure and hell to maintain, the software is still used because it provides some perceived utility to the organization.



  • Someone, maybe on the JoS discussions, said:

    "People have problems. If you make them disappear, you're a hero. If you don't, then it doesn't matter how good your code is, you're useless."



  • GizmoC, if you think that quality doesn't matter and "getting anything that works at all" is enough, then you are IMO very very wrong. And so are the PHBs who think like that. Granted, in a world of "shareholder value" and "quaterly fincancial statements" it might seem like a good idea to spend a little bit less on an IT project, no matter if the quality is ok or not.

    But then...

    - Quite a lot of IT projects completey fail. They never produce anything that is good enough to go live. Bad code is a relative safe way to make a project fail.

    - Bad IT systems are a risk for the whole company. It's not like those projects are wasting the money spent for the develoment of the new system. Often much worse, they waste the time spent for trying to make them. New systems are created because the business needs them. If they do not work, business is in trouble.

    - If a project produces something that actually works, it will have to work for many years, during which changing requirements must be expected. Good code is easy to maintain, extend, reuse. Bad code make maintenance expensive and changes very difficult.

    - "Good code" does not necessarily mean that the system has countless abstraction layers and uses every framework ever created. I'm a fan of the rule "Do the simplest thing that could possibly work" found in XP.

     

    BTW, I've yet to be convinced the outsourcing to another continent makes a system cheaper. Of course the oursourcers have lower wages, but in the end it's

    total_cost = number_of_people * time_spend * hourly_rate




  • Most people, especially managers do not know what the fuck they are talking about.

    So if you built something, and it "works". You did a job well done.

    The whole problem is just that nobody knows jack shit about anything. And ofcourse they want everything done before yesterday.



  • @djork said:

    Someone, maybe on the JoS discussions, said:

    "People have problems. If you make them disappear, you're a hero. If you don't, then it doesn't matter how good your code is, you're useless."

    Making people disappear really solves all problems. It's just the amount of people that you have to get rid of as soon as you run into legal problems is what bothers me.


Log in to reply