• Blah (unregistered) in reply to sumoman
    sumoman:
    Rob...when there were developers on the team...who could have resolved them, just the same as the consultant; if they were just given the opportunity.

    No, Rob you and others make very wrong points here. Everyday local guys have the opportunity to get their shit together by cleaning up messy code bases or bad practices. Eventually they would be on top again, but because of cowardice or laziness this just never happens. And then management is in urgent need of external consultancy to save the day.

    So don't make dumb rants if you fail personally.

    If management doesn't let you make changes, you can't make changes. Granted if you think things are in disarray, then you SHOULD be telling your manager (and team) at every opportunity. I've found in the past if you bring it up at every meeting then eventually people get sick of hearing it and agree to allow you to fix it (although often getting clients to sign off on changes to go into production where they can't really see the problem is more difficult).

    Cleaning up a mess is not as simple as simply doing it. Changing production code without proper process and sign-off from management and client (who need to at least be prepared to own any risk) rarely happens (in my experience, at least - and certainly an unauthorized change puts you in a position you don't want to be in if things go off the boil).

    Sounds like you have opinions about the industry but have never actually worked in it (Oh and the personal attack is nice, too)

  • SomeCoder (unregistered) in reply to pink_fairy
    pink_fairy:
    Andy Goth:
    You know, this reminds me of C++. C is fine for what it is, but many people wanted (let's say) first-class strings. But rather than put strings in C++, Bjarne put in lots of fancy-yet-low-level structure and function definition scaffolding which could conceivably be used to create an almost-first-class string. But he didn't actually put in true string support. That task was left to the same people who clamored for strings in the first place. Eventually a string was standardized, but it took a long time, and it's still not first-class. "a" + "b" doesn't work, but std::string("a") + "b" does. FAIL.

    C++ doesn't have solutions; it has meta-solutions.

    Apparently the noble art of flame wars is dying.

    <snip>

    I was going to comment similar to what you said but I figured it was just flame bait cause... WTF?

  • Johnno (unregistered) in reply to pink_fairy
    pink_fairy:
    KattMan:
    Andrew:
    Victor smiled. "I'm a programmer. I don't need, nor do I want, to learn the business. The business users can just tell the system what to do."

    WTF? Is this seriously how devs think?

    Devs yes, Analysts, no. Devs just write code, analysts figure out why the code needs to be written a certian way. Victor is a dev trying to be an analyst, he needs to learn to care about the business.
    No, I think you just missed a spelling mistake.

    Q Is this how divs think? A Yes, it is.

    I'm usually at a loss to figure out what analysts do, other than Power Point and munching meetings. In theory they should be there to translate business requirements into development requirements. In practice, 99% of them are too busy Pointing and Munching.

    It's all categories though, innit? What you actually want in these cases is an intelligent person rather than a fruit-cake. Those (apparently) rare developers who are not fruit-cakes are generally quite capable of translating business requirements into development requirements. I'm sure that those (most certainly) rare analysts who are not walking, pointing, munching, gibbering, slavering, ass-kissing, certifiable brain-death-on-a-stick are equally capable thereof.

    Spot on. I always thought Analysts were supposed to be the interface between client and developer - so they take what the client wants, and puts it into SPECIFIC requirements that the developer can use (which is why Analysts get paid more: if there is a problem with the final product, the first place to lay blame is what requirements the Analyst derived from the customers specification).

    I've rarely met analysts who actually do this, though - they seem to regurgitate client wishes in the same sort of lingo that the client would have asked for them. Sounds like a redundant step to me.

  • sumoman (unregistered) in reply to Blah
    Blah:
    If management doesn't let you make changes, you can't make changes. Granted if you think things are in disarray, then you SHOULD be telling your manager (and team) at every opportunity. I've found in the past if you bring it up at every meeting then eventually people get sick of hearing it and agree to allow you to fix it (although often getting clients to sign off on changes to go into production where they can't really see the problem is more difficult).
    If management, if client, if mum, if dad and my big sister. Grow up!
    Blah:
    Cleaning up a mess is not as simple as simply doing it. Changing production code without proper process and sign-off from management and client (who need to at least be prepared to own any risk) rarely happens (in my experience, at least - and certainly an unauthorized change puts you in a position you don't want to be in if things go off the boil).
    If a mess also affects your own project, there always are procedures to make things go the way you want. You need to be bold and insist on that, otherwise you will get screwed. If it's even none of your business, wtf?
    Blah:
    Sounds like you have opinions about the industry but have never actually worked in it
    Little do you know
    Blah:
    (Oh and the personal attack is nice, too)
    Not an attack, just a logical conclusion from these posts. This guy could have been QA-Lead in no time, by making the right moves. Exactly what he did was just plain foolish. He just cannot blame consultants or brought in devs for what happened to him,

    Captcha: wisi - ROFLMAO

  • G Money (unregistered) in reply to Rob
    Rob:
    In my particular case, I knew performance sucked. In an attempt to be a 'good' employee; I put in some extra time, used a profiler and tried to diagnose what exactly what making our app start-up so slowly. I found a significant issue, fixed it, and reduced the startup time from about 30 seconds to about 4. Obviously, I started with the 'low-hanging' fruit; subsequent improvements wouldn't have had that same kind of pay off.

    Pleased with myself, and reasonably certain my change would have no ill-effects; I shot off an e-mail to my boss/manager with the proposed changes and the performance numbers I'd put together - saying that unless he saw a problem, I'd like to check it in.

    I went way beyond just saying there was a problem, I spent my own free-time putting in extra hours, diagnosing and fixing a problem.

    My fix was approved and checked-in; but I was told that we didn't want 'worry about performance just yet' and that my assigned task was a 'high priority' and that I should really focus on that.

    I was told not to bother addressing or looking at larger issues. And, really performance was the easy one...imagine if I'd suggested refactoring a significant section of the application because it would clean up the code base...and it'd only take 2-3 weeks of my time. I'd have been laughed out of whatever meeting room I was in at the time.

    So, as instructed, I worked on my 'high priority' thing; that changed, changed again, and was restarted from scratch, then changed some more. Then, later, management announced a new round of hiring; and the formation of a new centralized team that would handle issues like performance and address some of our architectural problems.

    Rob,

    You alluded to this, and I've had the benefit of a few years and have learned (rather painfully) that it's far easier to beg for forgiveness than to ask for permission .

    You had success by going ahead and investigating how to improve your application, with significant results. While it might have caused some trepidation, you got the go-ahead to merge in your changes (after you had proof in hand). And, you're right ... if you had suggested doing something that had taken 2-3 weeks of your time, you probably would have been denied. But if you had gone ahead and done it and been able to show the results, you may again have been given grudging permission to merge in your changes.

    So you've effectively been told not to do that again. What would happen if you did? Would you be fired? You already know how to achieve success. Do you want to work for an organization that would fire you for following a proven method of achieving success for yourself and the organization?

    Here's the thing -- you've already got something very specific and impressive to put on your resume; reduced application startup time from 30 seconds to 4 seconds. OK, maybe not that huge a deal, but string a few of those together and you've got a pretty solid list of accomplishments for a junior developer.

    GMo'

  • Blah (unregistered) in reply to sumoman

    [quote user="sumoman"][quote user="Blah"]If management doesn't let you make changes, you can't make changes. Granted if you think things are in disarray, then you SHOULD be telling your manager (and team) at every opportunity. I've found in the past if you bring it up at every meeting then eventually people get sick of hearing it and agree to allow you to fix it (although often getting clients to sign off on changes to go into production where they can't really see the problem is more difficult).[/quote] If management, if client, if mum, if dad and my big sister. Grow up! [/quote] Never worked on a project where doing stuff behind the back of management is considered the appropriate approach - and this is why I have my doubts as to whether you would have ever worked in the industry. Quick way to lose a job - even if you make a positive difference. Management likes to know when production code changes (even if they don't understand what the changes are)

    [quote user="sumoman"] [quote user="Blah"] Cleaning up a mess is not as simple as simply doing it. Changing production code without proper process and sign-off from management and client (who need to at least be prepared to own any risk) rarely happens (in my experience, at least - and certainly an unauthorized change puts you in a position you don't want to be in if things go off the boil).[/quote] If a mess also affects your own project, there always are procedures to make things go the way you want. You need to be bold and insist on that, otherwise you will get screwed. If it's even none of your business, wtf? [/quote] [/quote] Clients don't like paying to fix problems that they can't see affecting them. IT companies tend not to like spending money on things the client isn't paying for - even if it means a saving in the future. They're simply not that farsighted.

    [quote user="sumoman"] [quote user="Blah"] Sounds like you have opinions about the industry but have never actually worked in it [/quote] Little do you know [/quote] Granted, I don't know whether you have or haven't, but sure as hell don't sound like you have.... [quote user="sumoman"] [quote user="Blah"](Oh and the personal attack is nice, too)[/quote] Not an attack, just a logical conclusion from these posts. This guy could have been QA-Lead in no time, by making the right moves. Exactly what he did was just plain foolish. He just cannot blame consultants or brought in devs for what happened to him, Captcha: wisi - ROFLMAO[/quote] I don't think he was blaming Consultants at all, I think he was complaining life is not fair. Either way, telling him he 'fails personally' because of his 'dumb rant' is a personal attack, irrespective of whether it's true or not.

    Me calling you a fuckwit is a personal attack - even if it's true.

  • (cs) in reply to sumoman
    sumoman:
    Heron:
    You're the idiot. As I just mentioned, I did just fix things on my own - and I got fired for it. I should mention that my fixes didn't use any time that should have been directed elsewhere. Often, management doesn't want the existing employees to do it.

    [ ] I got fired for improving things!!! I performed the wrong strategy, maybe?

    I was tasked with adding a new menu item to a right-click menu. I could have taken two routes to adding said menu item:

    1. Implement a convoluted and counter-intuitive set of functions, case statements, and string compares, introducing various bugs which cannot be overcome by the very nature of the implementation. The existing menu is implemented this way.

    2. Use an already written, clean and simple menu class that calls the appropriate function via a signal, and reduce the LoC count by several hundred in the process. This requires converting the rest of the existing right-click menu to the new menu class.

    Both routes take approximately the same amount of time. Which route would you choose? Which route do you think I chose? Do you really think I did the wrong thing?

    It's not always as simple as "do it and ask forgiveness later"; some managers are too egotistical or something to let that kind of thing go. (That's to G Money as well as sumoman.)

  • sumoman (unregistered) in reply to Blah
    Blah:
    Me calling you a fuckwit is a personal attack - even if it's true.
    You calling me a fuckwit is not a personal attack - because it's an unprecedent misapprehension.
  • My Name (unregistered) in reply to Frustrated coder..
    Frustrated coder..:
    I remember I had a boss who was determined to build a fully configurable system. Quite what it was or how it was supposed to work wasn't clear, but he was keen on software being "configurable".

    After one project was completed and shown to be working fine he asked me if it was configurable.

    "No." I replied "I mean yes," was my second instantaneous reply.

    He gave me a look that seemed to indicate he thought I was taking the piss, but didn't quite know how to pull me up for it.

    He was then made redundant a few months later, the Head of IT had realised what a numbskull he was.

    Everything is configurable. Just edit the source files and send it to the generic program generator (also know as a compiler), and it will read that configuration and translate the flow of human readable text and commands into binary code

  • Blah (unregistered) in reply to sumoman
    sumoman:
    Blah:
    Me calling you a fuckwit is a personal attack - even if it's true.
    You calling me a fuckwit is not a personal attack - because it's an unprecedent misapprehension.

    As I say, it may be true, it may not. Nonetheless it is a personal attack.

    (Clearly I don't have the brains to argue - I'm don't even know what unprecedent means - is that like when you claim a precedent never happened?)

  • Danimal (unregistered)

    What kind of idiot would build an expert system, when he could instead build an expert system factory factory?

    captcha: tation

  • John (unregistered)

    Victor was apparently creating the next SQL

  • (cs)

    Alex took some liberties with the story I sent him - for example - I had no sample code from the Expert system to provide. It makes a good story though.

    But 95% is accurate - though he makes me look more talented in his version of the story ;)

  • Old Fart (unregistered) in reply to Danimal
    Danimal:
    What kind of idiot would build an expert system, when he could instead build an expert system factory factory?

    captcha: masturtation

    This!

  • sumoman (unregistered) in reply to Blah
    Blah:
    As I say, it may be true, it may not. Nonetheless it is a personal attack.
    Truth depends on who's talking.
  • lmb (unregistered)

    I don't believe this story. Sanity prevailed - which universe was this channeled from?

  • sumoman (unregistered) in reply to Heron
    Heron:
    sumoman:
    Heron:
    You're the idiot. As I just mentioned, I did just fix things on my own - and I got fired for it. I should mention that my fixes didn't use any time that should have been directed elsewhere. Often, management doesn't want the existing employees to do it.

    [ ] I got fired for improving things!!! I performed the wrong strategy, maybe?

    I was tasked with adding a new menu item to a right-click menu. I could have taken two routes to adding said menu item:

    1. Implement a convoluted and counter-intuitive set of functions, case statements, and string compares, introducing various bugs which cannot be overcome by the very nature of the implementation. The existing menu is implemented this way.

    2. Use an already written, clean and simple menu class that calls the appropriate function via a signal, and reduce the LoC count by several hundred in the process. This requires converting the rest of the existing right-click menu to the new menu class.

    Both routes take approximately the same amount of time. Which route would you choose? Which route do you think I chose? Do you really think I did the wrong thing?

    It's not always as simple as "do it and ask forgiveness later"; some managers are too egotistical or something to let that kind of thing go. (That's to G Money as well as sumoman.)

    Solution 1 is a fixed value task and dumb. Solution 2 is higher risk but will make your life better. Pick one, G Money!

  • (cs) in reply to Heron
    Heron:
    sumoman:
    Heron:
    You're the idiot. As I just mentioned, I did just fix things on my own - and I got fired for it. I should mention that my fixes didn't use any time that should have been directed elsewhere. Often, management doesn't want the existing employees to do it.

    [ ] I got fired for improving things!!! I performed the wrong strategy, maybe?

    I was tasked with adding a new menu item to a right-click menu. I could have taken two routes to adding said menu item:

    1. Implement a convoluted and counter-intuitive set of functions, case statements, and string compares, introducing various bugs which cannot be overcome by the very nature of the implementation. The existing menu is implemented this way.

    2. Use an already written, clean and simple menu class that calls the appropriate function via a signal, and reduce the LoC count by several hundred in the process. This requires converting the rest of the existing right-click menu to the new menu class.

    Both routes take approximately the same amount of time. Which route would you choose? Which route do you think I chose? Do you really think I did the wrong thing?

    It's not always as simple as "do it and ask forgiveness later"; some managers are too egotistical or something to let that kind of thing go. (That's to G Money as well as sumoman.)

    Trick question.

    I choose both. (I have no interest whatsoever in your choice.)

    Granted, I now have to work 16 hour days for X weeks, rather than 8 hour days for X weeks, but I am superior to you (does Church Lady dance) because:

    (a) I've proved my solution works. (b) I've proved the other solution doesn't work, because I "inadvertently" introduced several non-orthogonal bugs to the convoluted menu generation script which might, of course, be fixable ... if you want to spend exactly the same amount of developer dollars again. Clue: Won't be me. I've got a solution that works. (c) I get to do the Church Lady dance. Let's be honest: that alone is worth all the extra effort, isn't it? Otherwise we are not Developers. We are merely Hackers.

    Been there. Done that. Oh, forgot the most important thing:

    (d) Find another job immediately. It won't be any better, but eventually somebody is going to notice this churn. In the mean time, do the Church Lady dance.

    Not important, but:

    (e) Add drugs and intellectual preening as required.

  • Rob (unregistered) in reply to sumoman
    sumoman:
    Rob...when there were developers on the team...who could have resolved them, just the same as the consultant; if they were just given the opportunity.

    No, Rob you and others make very wrong points here. Everyday local guys have the opportunity to get their shit together by cleaning up messy code bases or bad practices. Eventually they would be on top again, but because of cowardice or laziness this just never happens. And then management is in urgent need of external consultancy to save the day.

    So don't make dumb rants if you fail personally.

    Did you really have to make it personal?

    I don't feel the need to get into more specifics or turn this into a person mud slinging contest between the two of us. I will say that I'm not speaking for all programmers on my team, simply for myself.

    Your assertion that local guys would 'get on top' is...well...wrong. Because I'm not talking about 'guys', I'm talking about 'me'.

    I'm one of nearly 25 active developers on the project. No matter how fast I code, I'm not going to be able to do the entire project, by myself. I can't fix performance problems, fix bugs, restructure the architecture, give talks to other developers about best practice coding/alter the coding standards, and do all of the new functionality that needs to be developed. The entire job is significantly larger than I can do.

    I'm not claiming to be God. I'm not saying I can do the work of an entire company.

    There is more work to be done than ANYONE can do. I don't care who you.

    Now, certainly, I can do 'my part' to keep my code clean, when applicable. We have an internal development 'framework' that we're expected to use. There have been times when I've questioned certain things about the framework and 'if it's a tiny fix' been permitted to change it. Otherwise, I've been told to 'not worry about it' because 'someone will fix it later'.

    So, I'm told to work on my particular area of functionality and told not to work anywhere else. I can do my best to keep my area of functionality clean, well written, and well designed; but only to the extent that the framework and architecture that I have to use allows me to. Any significant change to either of that is something I'm not permitted to do and is big enough that I'm not willing to spend 80-160 hours of my personal free time doing something for free (I'm salaried).

    You can call me a failure and call my rant dumb; but I stand by what I've said. I'm a reasonably successful programmer and I've had nothing but positive feedback at all of my reviews. Prior to my current gig, I was a consultant; I worked with a team of four others at some corporate headquarters and got to be the guys who 'stepped in and saved the day'.

    Sure, maybe if EVERY developer on the team was motivated to keep things clean and well written AND if the time-lines given were reasonable and the business analysts/requirement gathering processes was adequate; we could avoid the situation where management needs to hire on a new team (consultants or otherwise).

    But I can't control that.

    All I can control is my involvement in the project, under the management I work for. It's been made clear to me that I should work on X, so I'll work on X. When I work on Y, even if I make good progress and Y needs to be done; it's clear that I'm not the one that should do it. Even if Y is really a higher priority for the company and even if Y is something I'd rather do.

    In the eyes of (some of) the powers that be; it all makes sense. If you run a school hire a guy to be a janitor and then later need someone to teach 7th grade math...you aren't going to think, 'Hey - maybe the janitor can do it!'. The janitor might be great with math, he might have even once demonstrated his ability to multiple multiple digit numbers in his head....but who cares? He's a janitor. You need a math teacher. Hire a math teacher.

    But as a developer it's easy to see the lines blur between developer, senior developer, architect, and whatever other titles you want to toss around. It's frustrating to see others hired to do things that, if asked to do, you could do. That you'd love to do.

    Instead, you keep rewriting the same section of code over and over and the requirements (that you aren't involved in gathering) change time and time again.

    For what it's worth; I was less cynical when I started. I figured that once my 'task' was complete it would free me up to make some of these other 'bigger' changes. I spent time over the weekend and zero time surfing websites to get our analysts to sign off on my area being complete.

    As it turns out, the faster I completed it, the faster they knew what it would be like and the faster they could decide to request changes. The only time I felt that I 'was done' was a week before it was decided to do a complete re-write because they wanted everything to function differently.

    It wasn't a 'code was bad - redo it' sort of thing. It was a 'No, we want something totally different'.

    Had I not spent extra time trying to finish, trying to 'be back on top' as you put it; it just would have been another week or two before they decided to change it again.

    I do the job I'm asked to do, and I do it reasonably well. Good reviews, good raises, flexible hours and time to surf the web. It's 'good enough'. If that makes me a failure, so be it. After I've been here long enough to not have it look bad on my resume, and long enough to meet the job requirements for anything other than an entry level position; I'll reconsider my situation.

  • coppro (unregistered) in reply to amischiefr

    The Real WTF is that the consultant was fixing client code and not vice versa.

  • anymouse (unregistered)

    It all comes down to the old adage, "Nobody ever got fired for hiring IBM." Employees often have a vested interest in the companies performance and making sure things work the way they are supposed to, but nobody wants to be 'that employee', the one who took away all IM, crashed the mail server during the upgrade, etc. So you hire a consultant, bring them in, do most of the work yourself, sometimes in-spite of the consultants 'help' and then when the project goes south, there is a scapegoat to blame and nobody has to be fired.

    During our last upgrade a consultant was brought in to help with reporting (my specialty), I had report templates built, a plan for the user interface, and an idea of what I wanted to do... Consultant comes on board with a 'plan' that they had implemented a different customer, I listened to the plan, explained why it wouldn't work with the data in our system, both to her and to the ones who 'hired' her (the 'solution' was based on the Department number, which wasn't required to be populated in our system, her 'solution' to that was.... "Just fix the missing departments in the Ledger").

    So I spent two weeks 'building' a reporting system that I knew wouldn't work, so that I could actually put the reports in front of the decision makers and ask them if they liked the data (for some reason they weren't too happy with reports that were completely inaccurate, balance sheets that didn't balance, trial balances that didn't net to zero, etc). During the same time frame the on-site developer finished up the user interface I had designed, and we rolled our own reporting solution that provided accurate reports and let the users run them whenever they wanted (the consultant's model would have had Accouting running roughly 6000 reports per month, then the users would just access them when they needed them).

    Sorry, can't resist throwing in my favorite consultant joke: A shepherd was herding his flock in a remote pasture when suddenly a brand-new BMW advanced out of the dust cloud towards him. The driver, a young man in a Broni suit, Gucci shoes, Ray Ban sunglasses and YSL tie, leaned out the window and asked the shepherd, "If I tell you exactly how many sheep you have in your flock, will you give me one?"

    The shepherd looked at the man, obviously a yuppie, then looked at his peacefully grazing flock and calmly answered, "Sure."

    The yuppie parked his car, whipped out his notebook and connected it to a mobile phone, then he surfed to a NASA page on the internet, where he called up a GPS satellite navigation system, scanned the area, and then opened up a database and an Excel spreadsheet with complex formulas. He sent an email on his Blackberry and, after a few minutes, received a response. Finally, he prints out a 150-page report on his hi-tech, miniaturized printer then turns to the shepherd and says, "You have exactly 1586 sheep."

    "That is correct; take one of the sheep", said the shepherd. He watches the young man select one of the animals and bundle it into his car. Then the shepherd says: "If I can tell you exactly what your business is, will you give me back my sheep?"

    "OK, why not", answered the young man.

    "Clearly, you are a consultant." said the shepherd. "That's correct," says the yuppie, "but how did you guess that?"

    "No guessing required", answers the shepherd. "You turned up here although nobody called you. You want to get paid for an answer I already knew, to a question I never asked, and you don't know crap about my business. Now give me back my dog."

  • sumoman (unregistered) in reply to Rob
    Rob:
    sumoman:
    Rob...when there were developers on the team...who could have resolved them, just the same as the consultant; if they were just given the opportunity.

    No, Rob you and others make very wrong points here. Everyday local guys have the opportunity to get their shit together by cleaning up messy code bases or bad practices. Eventually they would be on top again, but because of cowardice or laziness this just never happens. And then management is in urgent need of external consultancy to save the day.

    So don't make dumb rants if you fail personally.

    Did you really have to make it personal?

    I don't feel the need to get into more specifics or turn this into a person mud slinging contest between the two of us. I will say that I'm not speaking for all programmers on my team, simply for myself.

    Your assertion that local guys would 'get on top' is...well...wrong. Because I'm not talking about 'guys', I'm talking about 'me'.

    I'm one of nearly 25 active developers on the project. No matter how fast I code, I'm not going to be able to do the entire project, by myself. I can't fix performance problems, fix bugs, restructure the architecture, give talks to other developers about best practice coding/alter the coding standards, and do all of the new functionality that needs to be developed. The entire job is significantly larger than I can do.

    I'm not claiming to be God. I'm not saying I can do the work of an entire company.

    There is more work to be done than ANYONE can do. I don't care who you.

    Now, certainly, I can do 'my part' to keep my code clean, when applicable. We have an internal development 'framework' that we're expected to use. There have been times when I've questioned certain things about the framework and 'if it's a tiny fix' been permitted to change it. Otherwise, I've been told to 'not worry about it' because 'someone will fix it later'.

    So, I'm told to work on my particular area of functionality and told not to work anywhere else. I can do my best to keep my area of functionality clean, well written, and well designed; but only to the extent that the framework and architecture that I have to use allows me to. Any significant change to either of that is something I'm not permitted to do and is big enough that I'm not willing to spend 80-160 hours of my personal free time doing something for free (I'm salaried).

    You can call me a failure and call my rant dumb; but I stand by what I've said. I'm a reasonably successful programmer and I've had nothing but positive feedback at all of my reviews. Prior to my current gig, I was a consultant; I worked with a team of four others at some corporate headquarters and got to be the guys who 'stepped in and saved the day'.

    Sure, maybe if EVERY developer on the team was motivated to keep things clean and well written AND if the time-lines given were reasonable and the business analysts/requirement gathering processes was adequate; we could avoid the situation where management needs to hire on a new team (consultants or otherwise).

    But I can't control that.

    All I can control is my involvement in the project, under the management I work for. It's been made clear to me that I should work on X, so I'll work on X. When I work on Y, even if I make good progress and Y needs to be done; it's clear that I'm not the one that should do it. Even if Y is really a higher priority for the company and even if Y is something I'd rather do.

    In the eyes of (some of) the powers that be; it all makes sense. If you run a school hire a guy to be a janitor and then later need someone to teach 7th grade math...you aren't going to think, 'Hey - maybe the janitor can do it!'. The janitor might be great with math, he might have even once demonstrated his ability to multiple multiple digit numbers in his head....but who cares? He's a janitor. You need a math teacher. Hire a math teacher.

    But as a developer it's easy to see the lines blur between developer, senior developer, architect, and whatever other titles you want to toss around. It's frustrating to see others hired to do things that, if asked to do, you could do. That you'd love to do.

    Instead, you keep rewriting the same section of code over and over and the requirements (that you aren't involved in gathering) change time and time again.

    For what it's worth; I was less cynical when I started. I figured that once my 'task' was complete it would free me up to make some of these other 'bigger' changes. I spent time over the weekend and zero time surfing websites to get our analysts to sign off on my area being complete.

    As it turns out, the faster I completed it, the faster they knew what it would be like and the faster they could decide to request changes. The only time I felt that I 'was done' was a week before it was decided to do a complete re-write because they wanted everything to function differently.

    It wasn't a 'code was bad - redo it' sort of thing. It was a 'No, we want something totally different'.

    Had I not spent extra time trying to finish, trying to 'be back on top' as you put it; it just would have been another week or two before they decided to change it again.

    I do the job I'm asked to do, and I do it reasonably well. Good reviews, good raises, flexible hours and time to surf the web. It's 'good enough'. If that makes me a failure, so be it. After I've been here long enough to not have it look bad on my resume, and long enough to meet the job requirements for anything other than an entry level position; I'll reconsider my situation.

    Demand another role immediately or stop being emotionally involved with the project.
  • Andrew (unregistered) in reply to Johnno
    Johnno:
    pink_fairy:
    KattMan:
    Andrew:
    Victor smiled. "I'm a programmer. I don't need, nor do I want, to learn the business. The business users can just tell the system what to do."

    WTF? Is this seriously how devs think?

    Devs yes, Analysts, no. Devs just write code, analysts figure out why the code needs to be written a certian way. Victor is a dev trying to be an analyst, he needs to learn to care about the business.
    No, I think you just missed a spelling mistake.

    Q Is this how divs think? A Yes, it is.

    I'm usually at a loss to figure out what analysts do, other than Power Point and munching meetings. In theory they should be there to translate business requirements into development requirements. In practice, 99% of them are too busy Pointing and Munching.

    It's all categories though, innit? What you actually want in these cases is an intelligent person rather than a fruit-cake. Those (apparently) rare developers who are not fruit-cakes are generally quite capable of translating business requirements into development requirements. I'm sure that those (most certainly) rare analysts who are not walking, pointing, munching, gibbering, slavering, ass-kissing, certifiable brain-death-on-a-stick are equally capable thereof.

    Spot on. I always thought Analysts were supposed to be the interface between client and developer - so they take what the client wants, and puts it into SPECIFIC requirements that the developer can use (which is why Analysts get paid more: if there is a problem with the final product, the first place to lay blame is what requirements the Analyst derived from the customers specification).

    I've rarely met analysts who actually do this, though - they seem to regurgitate client wishes in the same sort of lingo that the client would have asked for them. Sounds like a redundant step to me.

    So, how would I become one of these analyst fellows? I already have an understanding of business (accounting/finance) and a background in programming.

  • (cs) in reply to John
    John:
    Victor was apparently creating the next SQL
    Sounds more to me like he was creating the next "The Last One". Which, as the name implies, if it worked there would be no point in doing it again.

    And of course if it didn't work there would be even more no point in doing it again.

  • Real-modo (unregistered) in reply to sumoman
    sumoman:
    Blah:
    Me calling you a fuckwit is a personal attack - even if it's true.
    You calling me a fuckwit is not a personal attack - because it's an unprecedent misapprehension.
    Not from the evidnece presented here.
  • (cs) in reply to sumoman
    sumoman:
    Demand another role immediately or stop being emotionally involved with the project.

    I prefer to care about the code I work on, even if my managers don't. It makes my code better. You're welcome to not care, but I don't ever want to work on any code you've touched.

    Demanding another role doesn't necessarily work, anyway. In my particular case, a new hire was assigned to refactor some old code - a task I had specifically requested on multiple occasions. The new hire complained that he wasn't familiar enough with the code base to refactor said code (and indeed it took him much longer to do than it would have taken me). My manager's boss requested that I be assigned to it instead of the new hire. My manager refused.

    There are a lot of managers out there who want things done their way, period, regardless of the skills or interests of their team members, even if said skills or interests would make the product get finished faster and with higher quality.

    Stop acting like you're such a great judge of how things should work. You're just being a moron. Between you and Rob, I'd pick Rob to work on my team any day.

  • Real-modo (unregistered) in reply to Andrew
    Andrew:
    So, how would I become one of these analyst fellows? I already have an understanding of business (accounting/finance) and a background in programming.
    Get a certificate saying you have been to a class in Rational (tm) Unified Process (tm).

    This is the only industry in which evidence that you are aware of one tool (for example, RUP) is taken as meaning you know how to do the job.

    Imagine if your house were designed by a Certified Rotring (R) Artwork Practitioner. How confident would you be in it? Now imagine it's been built by a Certified Associate Stanley Hammerhand.

    But never mind, take advantage of management incompetence to rake in the big bucks.

  • (cs) in reply to Andrew
    Andrew:
    So, how would I become one of these analyst fellows?
    I think the traditional route is to drink the blood of the analyst you killed to take his role. (I would have said "eat the heart of", but, as we all know, ......<fill in obvious joke here>)
    Andrew:
    I already have an understanding of business (accounting/finance) and a background in programming.
    Well, then you're already half-way there! Just watch out for the garlic, crosses and wooden stakes! <gd'n'r>
  • Daniel (unregistered) in reply to pink_fairy
    pink_fairy:
    In re your apparent issue with C++, I sympathise with your desire for (say) first-class strings, although I was hitherto unaware of a massive ground-swell of support within the C community for said feature. If you want (say) first-class strings, an elementary consideration of the problem might lead you to use (say) a language that offers first-class strings. Which kind of restricts you to Ruby or a Lisp variant in the programming ecosystem of 2009. Shame about Ruby in the 1980s, really.

    Strings are first-class types in BASIC, which, incidentally, is the most used language in the world.

    Though, of course, MUMPS kicks BASIC's ass when it comes to string handling. And, suprise!, it's a first-class type there too. Nowhere near C's popularity, of course, but it's a fairly used language, particularly given it's problems.

    Now, if we want to go back to the 60s and not go Lisp, there's always SNOBOL. Not much popular, though.

  • Not as DULL as you (unregistered) in reply to Rob
    Rob:
    In my particular case, I knew performance sucked. In an attempt to be a 'good' employee; I put in some extra time, used a profiler and tried to diagnose what exactly what making our app start-up so slowly. I found a significant issue, fixed it, and reduced the startup time from about 30 seconds to about 4. Obviously, I started with the 'low-hanging' fruit; subsequent improvements wouldn't have had that same kind of pay off.

    There are very few applications which I know of for which shaving 26seconds off start up time would be considered anything more than trivially 'neat'. I suspect that your other work WAS more important, and I suspect that you spent time improving performance of something which wasn't important.

    The highly paid consultant probably was smart enough to realise that removing 1 second from a loop run ten thousand times was more important than removing 26 seconds from the startup time. This is why he is highly paid and you probably aren't.

  • Real-modo (unregistered) in reply to Not as DULL as you
    Not as DULL as you:
    There are very few applications which I know of for which shaving 26seconds off start up time would be considered anything more than trivially 'neat'. ...
    Hmm, we haven't used OpenOffice, Windows NT, Windows 2000, Solaris, OS/400, SUSE Linux, or any Java application, have we?
  • Daniel (unregistered) in reply to Andrew
    Andrew:
    So, how would I become one of these analyst fellows? I already have an understanding of business (accounting/finance) and a background in programming.

    Sorry... :-(

    That makes you overqualified.

  • (cs) in reply to amischiefr

    I think you misspelled brillance.

  • Daniel (unregistered) in reply to Not as DULL as you

    Well, I strongly disagree. Being in charge of a number of applications which have long start up times, I can ASSURE you users place much importance on such things.

    And, alas, so does Microsoft. Improving boot up time was one important consideration on Windows Vista. Hell, there's the whole flash memory thingy to improve boot times, which, alas, can also be used to improve application start up times!

    Also, Microsoft have been creating and embedding pre-loaded stuff to speed up their own application start up times for a long time. IE and Office have been doing it all the way back to the 90s.

    And, just to cap it up on the software side, there is an application created at Microsoft whose sole purpose is to speed up Windows XP boot time.

    On the behavioral side, any wait over half a second breaks the flow. Any wait over 5~10 seconds gets the user to switch tasks. So getting from 30 to 4 means the user will immediately use the application being started, instead of getting back to it later. That's a big deal.

  • (cs) in reply to SomeCoder
    SomeCoder:
    pink_fairy:
    Andy Goth:
    You know, this reminds me of C++.
    Apparently the noble art of flame wars is dying.
    I was going to comment similar to what you said but I figured it was just flame bait cause... WTF?
    Do you two seriously think I was saying that Victor's programming language reminds me of C++? The thing that reminds me of C++ is Victor's approach to "implementing" loan underwriting. Rather than actually implementing any high-level features, C++ tries to give its users the ability to implement these features for themselves. My example was first-class strings, which aren't part of C++ but are implemented in terms of C++. And since they're not actually part of C++, they're not fully integrated with string literals.
  • Wyrd (unregistered)

    That story is kind of happy and kind of sad.

    Sad of course, because of poor Victor and his delusions. Sad also because his really, really effed-up excuses and self-deceptions cost two years worth of time, effort, and money for no net gain.

    It's happy though because Victor is the only real loser. Everybody else wins. ...

    Unless, except, of course, if they used that system to offer sub-Prime loans to people that really shouldn't have loans. That would be bad.

    Furry cows moo and decompress.

  • (cs) in reply to Paula
    Paula:
    DECLARE PAULA AS BEAN PRINT BRILANT
    That was probably the first (and only) feature implemented successfully.
  • Not as DULL as you (unregistered) in reply to Daniel
    Daniel:
    Well, I strongly disagree. Being in charge of a number of applications which have long start up times, I can ASSURE you users place much importance on such things.

    And, alas, so does Microsoft. Improving boot up time was one important consideration on Windows Vista. Hell, there's the whole flash memory thingy to improve boot times, which, alas, can also be used to improve application start up times!

    Also, Microsoft have been creating and embedding pre-loaded stuff to speed up their own application start up times for a long time. IE and Office have been doing it all the way back to the 90s.

    And, just to cap it up on the software side, there is an application created at Microsoft whose sole purpose is to speed up Windows XP boot time.

    On the behavioral side, any wait over half a second breaks the flow. Any wait over 5~10 seconds gets the user to switch tasks. So getting from 30 to 4 means the user will immediately use the application being started, instead of getting back to it later. That's a big deal.

    Every piece of code/feature is "very very important" if you define important as: "Would the user like it" or "is there an application which has this". However you have completely ignored the fact that importance here is relative.

    There is "an application created at Microsoft whose sole purpose is to.." ..display characters from many different fonts. (character map), this application is probably neither known or used by 99.999% of windows users - yet by your metrics it would seemingly be considered an important facet of Windows.

    If Microsoft were given the opportunity to halve the time of every call to the kernal and every i/o operation, or they were given the opportunity to take 90% off the startup time of windows, which do you think they would do? Sure quick startup times are nice and user friendly, but they are almost always insignificant in comparison with performance of the actual applications which the user wants.

  • Lev (unregistered)

    TDWTF should start a gallery of inner platforms. Victor, on the other hand, should read up the definition of "expert system".

  • sumoman (unregistered) in reply to Heron
    Heron:
    sumoman:
    Demand another role immediately or stop being emotionally involved with the project.

    I prefer to care about the code I work on, even if my managers don't. It makes my code better. You're welcome to not care, but I don't ever want to work on any code you've touched.

    Demanding another role doesn't necessarily work, anyway. In my particular case, a new hire was assigned to refactor some old code - a task I had specifically requested on multiple occasions. The new hire complained that he wasn't familiar enough with the code base to refactor said code (and indeed it took him much longer to do than it would have taken me). My manager's boss requested that I be assigned to it instead of the new hire. My manager refused.

    There are a lot of managers out there who want things done their way, period, regardless of the skills or interests of their team members, even if said skills or interests would make the product get finished faster and with higher quality.

    Stop acting like you're such a great judge of how things should work. You're just being a moron. Between you and Rob, I'd pick Rob to work on my team any day.

    Of course you would team up with Rob; so you both could carry on whining about the world being so unfair. Instead of requesting things politely, you better demand responsibility for your domain. That would keep you accountable for events, but you would also not be treated that bad any longer.

  • JoJo (unregistered) in reply to WC
    WC:
    To excel, instead of just succeed, you have to take risks.

    Isn't that what they said at Chernobyl ;-)

  • (cs) in reply to pink_fairy
    pink_fairy:
    Why the simple string type should be elevated above its lowly peers is beyond me.
    Because a very large fraction of programs work with strings, whereas far fewer programs need most of the other types. It's the same argument which says that arrays are a good thing to handle specially. Any time a program wants to deal with input from or output to a human, or even just to open a file, it needs a string somewhere. Any time a program wants to have O(1) read access to a collection of data, it needs an array. These are massively common requirements; languages prioritizing such things makes a great deal of sense. I've also seen (at times) arguments that numeric types are nothing special; performance measurements say that such claims are also dotty.

    Clarification: I don't expect many individual programs to use a very large number of types; that would be silly. I was expressing the fact that in the space of all programs, the total frequency of usage of most types is far less than for strings.

  • (cs) in reply to anymouse
    anymouse:
    [...snip] Sorry, can't resist throwing in my favorite consultant joke: [...snip] "No guessing required", answers the shepherd. "You turned up here although nobody called you. You want to get paid for an answer I already knew, to a question I never asked, and you don't know crap about my business. Now give me back my dog."
    1. If the consultant thought the dog was a sheep, he'd have mis-counted his flock by 1.

    2. It's not as good as the hot-air balloon joke.

  • (cs) in reply to Robert S. Robbins
    Robert S. Robbins:
    Just teach management how to use Visual Studio and they can develop whatever program they need to solve their business problems.

    Give a man a program, and you frustrate him for a day. Teach a man to program, and he will be frustrated for the rest of his life!

  • Right man in right place (unregistered) in reply to Robert S. Robbins

    Just teach coders how to steal from their clients and they can develop any app to solve whoever business problems.

  • Ovidiu (unregistered) in reply to amischiefr
    amischiefr:
    Poor Victor, he was on the verge of creating the next generation of software. Had those short sighted fools only recognized his brilliance they could have revolutionized the industry!

    A real pitty, too. The software was practically done!

  • (cs)

    Just notepad? After two years not even a nice syntax highlighter? =P

  • Michael (unregistered) in reply to sumoman
    sumoman:
    Rob...when there were developers on the team...who could have resolved them, just the same as the consultant; if they were just given the opportunity.

    No, Rob you and others make very wrong points here. Everyday local guys have the opportunity to get their shit together by cleaning up messy code bases or bad practices. Eventually they would be on top again, but because of cowardice or laziness this just never happens. And then management is in urgent need of external consultancy to save the day.

    So don't make dumb rants if you fail personally.

    Every day local guys in typical development sweat shops are told not to even dare peek outside of the narrow tasks they've been assigned. Typically the local guys are handed a pile of shit churned out by someone (local or outside) who didn't care about quality and given ridiculous deadlines to implement new features on that very narrow pile with any hint of looking outside of that scope very efficiently hammered down and out.

    Then the bosses hire someone super-expensive from outside who has a "more global perspective" to fix up the inevitable stove-piping and shit coding.

    When managers learn to actually use the resources they have at hand then (and only then) does your accusation of failure have any room in the world of "reason" and "accuracy". Until then, the failure lies with you.

    No, I'm not at all bitter at the six months I spent working on one WINDOW in a payroll application that ultimately didn't see the light of day. Why do you ask?

  • Curious George (unregistered) in reply to Andrew
    Andrew:
    Victor smiled. "I'm a programmer. I don't need, nor do I want, to learn the business. The business users can just tell the system what to do."

    WTF? Is this seriously how devs think?

    SOME devs think this way. I'm in the class of devs who finds it much easier to work on things if I know why they do the things they do, so I end up learning a bit about the business just because I'm curious.

  • (cs) in reply to Curious George
    Curious George:
    Andrew:
    Victor smiled. "I'm a programmer. I don't need, nor do I want, to learn the business. The business users can just tell the system what to do."

    WTF? Is this seriously how devs think?

    SOME devs think this way. I'm in the class of devs who finds it much easier to work on things if I know why they do the things they do, so I end up learning a bit about the business just because I'm curious.

    Any developer who thinks that way is a complete idiot, which I will now prove:-

    Not only will you be better at your job if you understand the business behind the systems you are trying to develop/maintain/fix, you also increase your value to the business, and you actually MAKE YOUR JOB EASIER by doing so.

Leave a comment on “The Expert System”

Log In or post as a guest

Replying to comment #:

« Return to Article