Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Re: Re: The crime under reusability

by gjb (Vicar)
on Dec 01, 2003 at 10:26 UTC ( #311206=note: print w/ replies, xml ) Need Help??


in reply to Re: The crime under reusability
in thread The crime under reusability

I feel you're judging the programmers a bit harshly. Unfortunately, even if one makes one's objections known in discussions (if there are any to start with, this depends on company culture), there not always taken into account.

You start from the assumption that managers and senior designers/programmers will listen to reason and follow common sense arguments, which unfortunately is not realistic in all cases.

Personally I've been lucky in this respect, and, judging from your post, so have you, but I'm afraid it's a mistake to take it for granted.

Just my 2 cents, -gjb-

Update: Well, being nearly fired counts as being lucky in my book.


Comment on Re: Re: The crime under reusability
Re3: The crime under reusability
by dragonchild (Archbishop) on Dec 01, 2003 at 13:01 UTC
    Although I've never met Abigail, I'm pretty sure I speak for him (and most others) when I say we have not been similarly lucky. I remember nearly being fired when pointing out the deficiencies in a given design. (And, I'm sure it was part of the reason why one of my contracts was ended early.)

    And, there's no reason why you have to follow the designs given, if they're stupid. If I was a programmer on that project, I would implement my own DAOs and write it that way. Then, when my one piece has good performance with the ability to choose which DAO to use in a given situation without impact ... results speak for themselves much louder than anything else ever can. (I've done this method, too.)

    ------
    We are the carpenters and bricklayers of the Information Age.

    Please remember that I'm crufty and crochety. All opinions are purely mine and all code is untested, unless otherwise specified.

      In this context, being "lucky" means getting away with having your own opinion and acting consequently, not everyone is in such a luxury position. Nearly being fired is not being fired, it's an unpleasant experience, but has no consequences when compared to actually being fired. A contract that is terminated early is no disaster either if you can get another.

      What I mean is that it is fine for the likes of you and Abigail-II to speak your mind: you're good programmers who'll manage to find something else if the worst comes to the worst. Both of you seem very competent, so if you think some design is flawed, chances are quite big that it actually is.

      But again, this is my point: most programmers are not that good. If they get fired, it's not easy to find a new job nowadays.

      Another important point: I wouldn't like to work with lesser gifted people who simply ignore the design since they're a liability to the project.

      A last point: when you're working in a team, you're supposed to play by the rules. Not many people will tolerate that you go solo, and again, when less accomplished programmers are involved, with very good reason.

      Don't let your own competence cloud your judgment about these matters. Just my 2 cents, -gjb-

        Another important point: I wouldn't like to work with lesser gifted people who simply ignore the design since they're a liability to the project.
        I, on the other hand, don't like to work with people who don't want to take responsibility, and don't speak up when they think the design is wrong. Or even worse, people who don't think about the design at all, and just accept it as is. Even if their ideas are incorrect, at least they show commitment and the ability to form independent ideas.

        Abigail

      Although I've never met Abigail, I'm pretty sure I speak for him (and most others) when I say we have not been similarly lucky. I remember nearly being fired when pointing out the deficiencies in a given design.

      I don't know whether it is "luck", but I have succesfully rejected specificiations. It was almost 6 years ago, and I had just switched from the release management department to the technology department. For my second project, I had to implement "two-way replication", together with my cow-orker Mark. Mark and I had just finished a course about replication, and we didn't have much experience yet. The spec was written by Ruijin, a very capable programmer with years of replication experience, and our CTO. Ruijin decided to leave the company, which is why I had to do her work of implementing the spec.

      But in stead of sheeplessly implementing the spec (which would not have been hard as the spec was clearly written) I decided to first study the problem, the constraints and the spec. After a week I had not only a couple of testcases that showed the spec would result in data corruption, I also had a correct (but a far more complicated) way of solving the problem. I consulted Mark and another cow-orker and they agreed with me. I went to the CTO, and told him that I thought the spec was wrong, and that there was a different way of solving it. He pointed to the whiteboard and told me to explain my case. I did, and afterwards, the CTO asked Mark if he agreed with me. After Mark answered positively, the CTO gave me the go ahead and I could implement my solution.

      Abigail

        Sounds like you had the right combination of corprate culture and the ability to argue your point well. There usually isn't much you can do about a company's culture, but I think argueing correctly is something more programmers (including myself) should learn.

        When the boss sends out an e-mail saying that by next week, your entire web site must be converted to using MS Access as a backend, it's easy to run down to his office and tell him that he is a bloody fool. That is also what you absolutely must not do. It'll likely get you fired, no matter what your company's culture is like.

        However, if you take the time to come up with a solid case, covering (for instance) how Access doesn't allow concurrent database connections and what that means when you have anything much more than 100 hits/day, you've done your job. Depending on the culture, they might still fire you--if they're that dumb, they probably did you a favor. They could ignore you, in which case you've done everything you could, so it won't be your head when the web site falls to peices (especially if you left a paper trail of your suggestions).

        ----
        I wanted to explore how Perl's closures can be manipulated, and ended up creating an object system by accident.
        -- Schemer

        : () { :|:& };:

        Note: All code is untested, unless otherwise stated

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://311206]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others about the Monastery: (4)
As of 2014-07-26 10:10 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite superfluous repetitious redundant duplicative phrase is:









    Results (175 votes), past polls