• (cs) in reply to Aaron

    stupid community server

  • (cs) in reply to Aaron
    Aaron:
    I have a pretty good idea which company this is referring to. Two words, with a flagship product containing a number, popular with a lot of universities, mainly designed for Windows 9x, never really updated for anything more modern, usually configured to be ridiculously easy to crack, often used for really irritating purposes like disabling important menu items in common programs.

    Right?

    I know exactly what you are talking about. We used to use it before the invention of the GPO. The entire damn thing can be summed up in the word: FAIL.

    /me Goes to open the GPMC

  • Mason Wheeler (unregistered)

    It's stuff like this that makes me so glad I work where I do. The VP of development, who's an experienced coder, sits in on the feature request meetings from clients and prospective clients to keep things sane. He has a hand in writing the requirements documents, up to and including executive veto power over anything that just won't work or can't be delivered on schedule.

    (Second post attempt)

  • BillyBob (unregistered)

    I get it, the method name in the SQL Sentences story should have been GetSqlSentences() instead GetSQLSentences()

  • Mr.'; Drop Database -- (unregistered) in reply to BillyBob
    BillyBob:
    I get it, the method name in the SQL Sentences story should have been GetSqlSentences() instead GetSQLSentences()
    The convention in .NET languages is that two-letter abbreviations should be in all-caps and longer abbreviations shouldn't. The real WTF is that a few parts of the .NET framework violate the convention.
  • derula (unregistered) in reply to IChrisI
    IChrisI:
    This is the story of FoolProof, isn't it? I guess that explains why it's always been so easy to get around...
    I don't know the software, but is foolproofsoftware.com its home page? In that case, it could definitely be true. Just take a look at the file names of all the other pages in that site. It's [random number].ihtml. Why ihtml? Intelligent HTML?
  • asholin (unregistered) in reply to RobFreundlich
    RobFreundlich:
    a program that created English-pronouncable words (using phonetic rules) that weren't in the dictionary. IIRC, you could give it a length range and possibly a number of syllables, and it'd spit out stuff like "gorfilac" and "zoobormagin".

    That's a federal standard now, FIPS 181.

  • eric76 (unregistered)

    Years ago, my boss at the time asked me how long it would take to write a program to perform some task. I don't remember what it was, but it was pretty complicated the way he laid it out.

    I told him 2-4 weeks. He said he'd let me know.

    The next day he said to go ahead and do it. I answered that I already finished it.

    The night before I got to thinking about it and figured out that I could do what he wanted, but not in the way he wanted me to do it, with about 30 minutes of work. So I went ahead and did it.

    Two weeks later, he walked into the VP's office and announced that we had got it done exactly on schedule.

  • Ike (unregistered) in reply to eric76
    eric76:
    Years ago, my boss at the time asked me how long it would take to write a program to perform some task. I don't remember what it was, but it was pretty complicated the way he laid it out.

    I told him 2-4 weeks. He said he'd let me know.

    The next day he said to go ahead and do it. I answered that I already finished it.

    The night before I got to thinking about it and figured out that I could do what he wanted, but not in the way he wanted me to do it, with about 30 minutes of work. So I went ahead and did it.

    Two weeks later, he walked into the VP's office and announced that we had got it done exactly on schedule.

    And that, Eric, is the reason why he was the boss and you were the employee. You should have presented it to him two weeks after he gave the go-ahead, no matter how far ahead of schedule you finished it.

  • Des (unregistered)

    [It should take 5 minutes to implement a feature that tracks info from before the app was installed? Ok, here's what I finished in 5 minutes. You may notice that it doesn't do anything, but we'll take care of that in a previous version. ]

    pwned. I may adopt this method.

  • Commissioner (unregistered) in reply to Jay
    Jay:
    I used to work for a company like this. The marketing director, who was also president of the company, would make outrageous promises to customers. One time I pointed out to him that he was promising about $100,000 worth of work to make a $10,000 sale. He literally could not comprehend why I thought that was a problem. He replied, "But we made a $10,000 sale!" "Well, yes," I replied, "But it will cost us more to do the work than the amount of the sale." He stared at me blankly and said, "But it's better to make a sale than to not make a sale."

    ...but he gets commission on the $10k, not the $100k. Better to make the sale...

  • regeya (unregistered)

    I don't work at a software company, but I do work with sales people, so this is all too familiar. If the customer demands it, more than likely we'll do it, even if it requires violating the laws of thermodynamics and destroying the fabric of the space-time continuum to do it.

    /weapons at maximum!

  • EmperorOfCanada (unregistered) in reply to Mr.'; Drop Database --

    A good developer will either not pad or will create flexibility that is never used (making them not so good). A great developer will create flexibliity that is nearly heroic in the future. Usually I stick with the idea of planned refactoring. But when I have seen planned adaptability done right it is usually due to a single great programmer after a huge battle with a bunch of good programmers.

    The simple reality is that many successful projects get a financial momentum that is suicidal to stop and refactor.

    If you study the battles of the greatest generals in history they almost always held back a reserve part of their army. If the battle went well those soldiers never entered the fray. But the moment a hole formed the reserve was sent in. One would think it would be smarter to have 100% of your men in battle. The mathematics look good on the surface. But the reality is that you don't beat a whole army you just poke a hole in it and then exploit the chaos that results. The same goes with a product launch. Once you have your troops in battle (your product) you can't pull it back and spend 6 months retooling it. You need to be able to adapt to a changing market while keeping your code in the fray. Thus you should launch your product with some reserve functionality that can handle the simple fact that it is absolutely impossible to product the exact right product. Now none of the above applies if all you are doing is a contract making crap internal software that only has to be contractually correct. Where a great programmer comes in is that they will identify (from experience) the most probable flexibility needed.

    i.e. If this web based product really takes off we will need to design the product to move to a clustered environment quickly.

    In the above example I can't imagine refactoring code from a single machine design to a clustered design in the panic of an overloaded server that has already had some powerful hardware tossed at it. What I can imagine is that you would move to a cluster with your cluster ready code and then do some minor tweaks to better exploit the cluster. Thus avoiding a cluster-f...

  • (cs) in reply to Ike
    Ike:
    And that, Eric, is the reason why he was the boss and you were the employee. You should have presented it to him two weeks after he gave the go-ahead, no matter how far ahead of schedule you finished it.

    And that, Ike, is the reason I hope I never hire you.

  • Kempeth (unregistered) in reply to codehoser
    codehoser:
    Seriously -- "correct future flexibility"? Come on!
    Indeed! On one of my first projects - an import function - I was told to write it to be compatible with future file versions... I was young and naive so I gave it my best shot. Instead of adding flexibility it had the exact opposite effect. And since I "own" that project it serves as a constant reminder to never do that again.

    Now I just code what I need - I can still refactor later...

  • Rope (unregistered) in reply to Mason Wheeler
    Mason Wheeler :
    It's stuff like this that makes me so glad I work where I do. The VP of development, who's an experienced coder, sits in on the feature request meetings from clients and prospective clients to keep things sane. He has a hand in writing the requirements documents, up to and including executive veto power over anything that just won't work or can't be delivered on schedule.

    Kudos. I'm so happy that a company like the one were you work actually exists. I was beginning to lose faith.

  • Chris (unregistered)

    There is a need to deliver things on budget and not waste heaps of time on buliding 'maximum flexability' features in your code or architecture design. But you can certainly benefit from adding in a few common features in your database architecture to help speed up building of future customer requiements (and it doesn't add to much build time).

    1)A Visible or 'Is Online' boolean field 2)Making certain kinds of relationships Associative Tables (1 to Many) instead of just straight out Foreign Keys (1 to 1). 3)Include Date Ranges for Visability/Avalability of Items. 4)Include a Sort Order field (for an OrderBy Clause). 5)Include 'Select A' Options in a Database Table with Foreign Key Relationships rather than just 'Hard Code' the values in the page.

    While these types of fields/features aren't always required there is certainly a good case for including at least some of them in a lot of cases. I don't know how many times I've been saved a lot of development time and pain down the line by having the foresight to include this functionality in my system design, even if it wasn't required straight away.

  • LU (unregistered)

    After reading the article and all the comments up to now, I learned an important lesson: If you are responsible for personell or even the boss, no matter what happens, do NOT entrust sales people with any SALES RELATED work!

  • anon (unregistered)

    Like many others, this company sounds like one I used to work for. I never understood why salespeople weren't paid commission on the profit of a sale, not the price tag.

  • d (unregistered) in reply to Mr.'; Drop Database --
    Mr.'; Drop Database --:
    BillyBob:
    I get it, the method name in the SQL Sentences story should have been GetSqlSentences() instead GetSQLSentences()
    The convention in .NET languages is that two-letter abbreviations should be in all-caps and longer abbreviations shouldn't. The real WTF is that a few parts of the .NET framework violate the convention.
    That's a convention I've never heard of.
  • Anonymous (unregistered) in reply to d
    d:
    Mr.'; Drop Database --:
    BillyBob:
    I get it, the method name in the SQL Sentences story should have been GetSqlSentences() instead GetSQLSentences()
    The convention in .NET languages is that two-letter abbreviations should be in all-caps and longer abbreviations shouldn't. The real WTF is that a few parts of the .NET framework violate the convention.
    That's a convention I've never heard of.
    Me neither. I guess you've got "IOException" as an example but this has clearly been named for its Java equivalent (also called "IOException") so that doesn't count. I think this convention is in Mr. --:'s head.
  • Design Pattern (unregistered) in reply to derula
    derula:
    I don't know the software, but is foolproofsoftware.com its home page? In that case, it could definitely be true. Just take a look at the file names of all the other pages in that site. It's [random number].ihtml. Why ihtml? Intelligent HTML?

    Wow, that page is a really brillant diamond!

    braindeadsoftware:
    Yet many people find that thier personal information on thier system is easily viewed by anyone

    Clicking on download with Javascript disabled gives an error message:

    braindeadsoftware Download:
    There was an unexpected error.

    An error has occurred with your request.

    You may navigate away or click here to go back.

    Error ID #: b54bf6dc-43a7-41b2-9988-c8381d3006a6

    However clicking on download with Javascript enabled results in an error message displayed in a modal dialog which will not go away but be displayed in an endless loop again and again.. (At least it is telling the reason: "Cookies disabled". What did you smart people at foolproofsoftware / Horizon DataSya expect from people who are concerned that "thier personal information on thier system is easily viewed by anyone").

    This company must be filed under chapter 11. The sooner the better!

  • FoolProof...NOT (unregistered)

    I love the URL you get after you open foolproofsoftware.com and click on Company: http://www.horizondatasys.com/169561.ihtml?__utma=1.892241361.1255519800.1255519800.1255519800.1&__utmb=1.2.10.1255519800&__utmc=1&__utmx=-&__utmz=1.1255519800.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)&__utmv=-&__utmk=162712764

  • (cs) in reply to Anon

    They exist because sales brings in revenue, even without a product... for a while.

  • (cs) in reply to Anonymous
    Anonymous:
    d:
    Mr.'; Drop Database --:
    BillyBob:
    I get it, the method name in the SQL Sentences story should have been GetSqlSentences() instead GetSQLSentences()
    The convention in .NET languages is that two-letter abbreviations should be in all-caps and longer abbreviations shouldn't. The real WTF is that a few parts of the .NET framework violate the convention.
    That's a convention I've never heard of.
    Me neither. I guess you've got "IOException" as an example but this has clearly been named for its Java equivalent (also called "IOException") so that doesn't count. I think this convention is in Mr. --:'s head.
    And in FXCop:
    "Two letter acronyms should be upper-cased. For example, use System.IO instead of System.Io. Although it may be common practice for some two letter acronyms to not be fully capitalized, violations of this rule should not be excluded for this reason. For example, 'DbConnection', is common but incorrect; use DBConnection. A violation of this rule might be required for compatibility with existing, non-managed symbol schemes. In general, however, these symbols should not be visible outside the assembly that uses them."
  • d (unregistered) in reply to Anonymous
    Anonymous:
    d:
    Mr.'; Drop Database --:
    BillyBob:
    I get it, the method name in the SQL Sentences story should have been GetSqlSentences() instead GetSQLSentences()
    The convention in .NET languages is that two-letter abbreviations should be in all-caps and longer abbreviations shouldn't. The real WTF is that a few parts of the .NET framework violate the convention.
    That's a convention I've never heard of.
    Me neither. I guess you've got "IOException" as an example but this has clearly been named for its Java equivalent (also called "IOException") so that doesn't count. I think this convention is in Mr. --:'s head.

    OK - I was wrong - seems there is a convention (or at least a "MS bull") on the subject. http://msdn.microsoft.com/en-us/library/ms229043.aspx http://blogs.msdn.com/brada/archive/2004/02/03/67024.aspx

  • venio (unregistered) in reply to LU
    LU:
    JB:
    I once had a sale guy tell me, after I pointed out that he flat out lied to a customer about a feature being "all ready in the can" when we hadn't even designed it yet, that I was "confusing implementation with delivery".

    I blinked twice and then just walked away. I had no idea how to come back with a response.

    How about a kick right in his face?^^
    I'd kick lower.

    Anyway, you tell him to deliver the product then...

  • ideot (unregistered) in reply to IChrisI
    IChrisI:
    This is the story of FoolProof, isn't it? I guess that explains why it's always been so easy to get around...
    They seem to submit quite a lot of proof.
  • EatenByAGrue (unregistered)

    The solution if you want to incentivize your salespeople properly is to give them their cut from the bottom line of the deal instead of the top line. In a deal that costs the company more than it earns, they then have to make up that difference with net positive deals before they can receive any sort of commission.

    Like with mortgages, if salespeople get bonuses for sales which will ruin the company, they will make those sales.

  • (cs) in reply to RobFreundlich
    RobFreundlich:
    The architect at a company I once worked for wrote a program that created English-pronouncable words (using phonetic rules) that weren't in the dictionary. IIRC, you could give it a length range and possibly a number of syllables, and it'd spit out stuff like "gorfilac" and "zoobormagin". When we needed a password, we'd fire it up and run it until it came up with something we liked.

    Geek fun at its best.

    It's been done.

  • anon (unregistered)

    I worked for a small company like this. The owner was the sales guy... He'd meet with ANYONE, and he'd promise whatever they wanted...

    We had a cash flow problem once too... He said he couldn't pay us programmers for a week... We (all 3 of us) said "we'll be back in a week"

    He found the money to pay us that day...

  • (cs) in reply to FoolProof...NOT
    FoolProof...NOT:
    I love the URL you get after you open foolproofsoftware.com and click on Company: http://www.horizondatasys.com/169561.ihtml?__utma=1.892241361.1255519800.1255519800.1255519800.1&__utmb=1.2.10.1255519800&__utmc=1&__utmx=-&__utmz=1.1255519800.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)&__utmv=-&__utmk=162712764
    Those arguments are all from google analytics. TRWTF is that they seem to be getting injected into the URL onClick.
  • JAck (unregistered)

    Humm? I'm sorry, but I'm new here. Are you trying to tell me that was a true story? WTF!

  • Ken Hagan (unregistered)

    "Interestingly enough, fixing bugs was nowhere to be seen in this policy."

    So there's your solution. When asked for an impossible feature, you do nothing, but ship the existing product. When the customer complains that it doesn't work, you log it as a bug.

    Sheesh! Kids these days, they have no idea...

  • shimon (unregistered)

    This reminds me of an anecdote how the business is done in the ex-USSR pretty much since 1991.

    Businessman A meets Businessman B. “I have a few tons of sugar to sell,” tells A, ”and I want $1,000,000 for them.“

    “Sounds like a good deal to me,” tells B. They sign all the agreements and go their separate ways: A has three weeks to find and deliver the sugar, and B has to find a million dollars of payment in three weeks.

    It almost inevitably happens that by the deadline, a party still has hard time with deliverables. The other party usually too has nothing to show, but this is a wait game in which whoever admitted to the fault first is the loser who then gets his ass sued all over.

  • Captcha Saluto (unregistered) in reply to Anonymous
    Anonymous:
    d:
    Mr.'; Drop Database --:
    BillyBob:
    I get it, the method name in the SQL Sentences story should have been GetSqlSentences() instead GetSQLSentences()
    The convention in .NET languages is that two-letter abbreviations should be in all-caps and longer abbreviations shouldn't. The real WTF is that a few parts of the .NET framework violate the convention.
    That's a convention I've never heard of.
    Me neither. I guess you've got "IOException" as an example but this has clearly been named for its Java equivalent (also called "IOException") so that doesn't count. I think this convention is in Mr. --:'s head.
    Um..."IO" is a two-letter abbreviation, and then the next word, "Exception" begins with a capital letter. If it was "IOBException" (for Input-Output-BIKE! Exception) then it'd be wrong according to his convention. But I have no idea if it's a real convention.
  • EmperorOfCanada (unregistered)

    My favorite sales story was the sales person who told a client that one of our developers had been a key developer on the package they wanted us to use. None of us were even sure what exactly the product was or did let alone been a key developer of this product. The horrible thing was that after a week of cramming we knew more about the product than the clients in house developers who had actually been using the product for years.

  • Bob (unregistered) in reply to Anon
    Anon:
    How do companies like this even get started? It looks like someone needs some FIST.
    Step 1: Hire really good salescritters Step 2: Pay on commission, based solely on sales Step 3: Use some of the spare cash to pay lawyers to keep you from being sued Step 4: When the lawsuits eventually kill the company, go back to step 1 and reinvest a little of your profits in another round

    Now, normally you'ld think the "go back to step 1" bit would first require you paying back all the people you screwed, but that's what the lawyers in step 3 were taking care of for you.

    For extra points, "sell" the name and assets of the company to yourself, and start a "new" (heh, heh) business with the same name in the same industry and with the same employees, and all the liabilities are left with the old business.

    Yeah. I love business.

  • (cs) in reply to Salami
    The password creation technique of taking the most obvious word (usually a company name) and changing the vowels to numbers in a predictable way is something I've seen over and over.
    I've seen this a lot too. It's always been lame and annoying, especially the part where it makes them feel L337.
  • Rand (unregistered) in reply to eric76
    eric76:
    Years ago, my boss at the time asked me how long it would take to write a program to perform some task. I don't remember what it was, but it was pretty complicated the way he laid it out.

    I told him 2-4 weeks. He said he'd let me know.

    The next day he said to go ahead and do it. I answered that I already finished it.

    The night before I got to thinking about it and figured out that I could do what he wanted, but not in the way he wanted me to do it, with about 30 minutes of work. So I went ahead and did it.

    Two weeks later, he walked into the VP's office and announced that we had got it done exactly on schedule.

    The WTF here is not what your boss did, but that seem to think that he did the wrong thing. Do you think you'd have been the "hero" for getting it done so quickly? Not exactly. Let's think about what really happened here:

    • You estimated a project to take two weeks
    • Your boss agreed that two weeks was reasonable
    • The VP agreed that two weeks was reasonable and approved the project
    • You finished in one day

    Let's think about what would have happened if your boss had told the VP that you'd finished a project approved for two weeks in one day:

    • The VP looks bad for approving the project
    • Your boss looks bad for not questioning your estimate
    • You look good for finishing quickly, but this is balanced by looking bad for providing a grossly inaccurate estimate. A wash for you, really.

    Better to meet the expectations that have already been set. The VP is happy that the code was delivered on time, your boss is happy that he met expectations and got still got extra productivity out of you for those two weeks. Everyone looks good.

    Your boss will probably forget that you made a terrible estimate because no one complained about it, but remember the extra productivity. So, even though it doesn't feel like a win for you, you're really better off; that is, unless you and your boss hate each other and really you need to impress the VP.

  • Jay (unregistered)

    The problem with trying to make something foolproof is that fools are so creative.

  • (cs) in reply to Mr.'; Drop Database --
    Mr.'; Drop Database --:
    Why spend five hours now if it has a 10% chance of saving five hours later? What if the code only costs even more time when a maintenance developer tries to reconcile it with the actual requirements later on?

    That kind of "flexibility" has little to do with good development practices, and a lot to do with developers scratching their own egos.

    The key thing is balance. No, you shouldn't strive for the ultimate in flexibility and generically, but neither should your code consist of a big lump of spaghetti.

    Both are wrong and both are evil. When a simple accounting application starts using the identifier "Thing" instead of "Account", because of the idea that one day you might need to track other things than accounts, you're most obviously wrong. On the other hand, if the entire application consists of one huge class with methods randomly manipulating 'well known' indices in some array that represents all domain entities (as in entity[20] is account.name), then you're obviously being quite wrong too.

    The well educated, smart and experienced developer creates an architecture that represents the current requirements well, but anticipates for future change in a reasonable way, mostly by sticking to well proven patterns and sensible setups.

    Simply NOT putting your core business logic between the TR and TD tag in some obscure .jsp page or within the onClick handler on some VB dialog, is already a huge step in the right direction.

    Some sensible choice made at the start of a project, costing you the proverbial 5 hours, don't just have a 10% chance of saving you 5 hours later, they have a 100% chance of saving you months and months of time later.

    I'm currently refactoring such an application. Just because at the beginning no simple rules were established for doing CRUD operations, EVERY single piece of code is doing it differently, with different names, different ways of starting and committing transactions (if they use it at all), different ways of encoding values for inclusion in SQL (some use URLEncode, some use XMLEscape, and some use the only reasonable thing: prepared statements).

    Due to NOT taking the time upfront to establish this, NO code can interoperate with each other now. Want to join the orders with the inventory based on keyword? Bad luck, since one of those tables URLEncoded all values, while the other didn't and there is no url decode function in the DB. Want to save an order to the DB and in the same transaction deduct the inventory? Bad luck again... the code for saving the order starts its own transaction internally and that one can't be nested with any other ongoing transaction.

    The list of such things is endless. It has already taking me many months to align all this stuff, which is utterly necessary but could have been easily prevented. It's not that a few years back DAO patterns and MVC designs weren't know to mankind...

  • hoodaticus (unregistered) in reply to Kempeth
    Kempeth:
    codehoser:
    Seriously -- "correct future flexibility"? Come on!
    Indeed! On one of my first projects - an import function - I was told to write it to be compatible with future file versions... I was young and naive so I gave it my best shot. Instead of adding flexibility it had the exact opposite effect. And since I "own" that project it serves as a constant reminder to never do that again.

    Now I just code what I need - I can still refactor later...

    This is the exact situation when you might have used a plug-in based system.

  • Symbiote (unregistered) in reply to !?

    With a crack sales staff like that, the company should have been able to convince the customer that browser history was all they needed.

    /sarcasm

  • csrster (unregistered) in reply to wee
    wee:
    Michael Itzoe:
    gorfilac is my new password.

    That was my password. But I just changed it to "password" so there wouldn't be any conflicts with yours.

    I tried to change my password to "password" but the database objected with some gobbledegook about a Primary Key Constraint Violation.

  • (cs) in reply to hoodaticus
    hoodaticus:
    Kempeth:
    codehoser:
    Seriously -- "correct future flexibility"? Come on!
    Indeed! On one of my first projects - an import function - I was told to write it to be compatible with future file versions... I was young and naive so I gave it my best shot. Instead of adding flexibility it had the exact opposite effect. And since I "own" that project it serves as a constant reminder to never do that again.

    Now I just code what I need - I can still refactor later...

    This is the exact situation when you might have used a plug-in based system.

    Only if the aforementioned plug-in based system is designed correctly and in the simplest/most effective way possible. It sounds like an oxymoron to state what should be a self-evident truth. But I've seen enough over-engineered/over-architected plug-in based systems to know that is one thing architect/developer astronauts get very wrong.

  • (cs) in reply to Ike
    Ike:
    eric76:
    Years ago, my boss at the time asked me how long it would take to write a program to perform some task. I don't remember what it was, but it was pretty complicated the way he laid it out.

    I told him 2-4 weeks. He said he'd let me know.

    The next day he said to go ahead and do it. I answered that I already finished it.

    The night before I got to thinking about it and figured out that I could do what he wanted, but not in the way he wanted me to do it, with about 30 minutes of work. So I went ahead and did it.

    Two weeks later, he walked into the VP's office and announced that we had got it done exactly on schedule.

    And that, Eric, is the reason why he was the boss and you were the employee. You should have presented it to him two weeks after he gave the go-ahead, no matter how far ahead of schedule you finished it.

    Wrong. You do that only when you have a terrible job with terrible management, and you have every reason to use that as a scheduling defense.

    IMO, Eric should have never told his boss that he got it done over night. Unless he knows and trust his boss very well, that's a risk - it might set up a precedence that things can be done "overnight" (I've seen it happened.)

    A better approach - assuming the boss is not an as*ole - would have been to talk with his boss and present an alternate solution (which he know by prototyping that it works.) The alternate approach is presented and discussed with the suggestion that it can be done quickly.

    It helps create a rapport of trust and communication. It helps the boss understand how the developer comes to the alternate solution, and it might help the developer understand why the boss presented his solution the way it did (and perhaps uncover other things that might need to be implemented.)

    This also gives a safety buffer in case the developer ends up assuming the wrong things (it's always possible.)

    You never present everything done immediately. You always give yourself a buffer (for error detection, negotiation, whatever.)

    But you certainly never, if you wish to be an honest engineer, you never take up the three full weeks and claim it took you that much time to do X work if in reality it only took you a day or two.

    If you are the boss, you might have to (after all, a boss might be working on multiple projects and all that crap.) As a developer, that might shoot you in the foot. As a developer, you are in charge of less deliverables, and you have to justify at some point why X or Y took so long.

    You are either a manager or a developer. Don't try acting as both (or worse, assume that a boss' role is to always lie about schedules and then take that false role as if it were yours.)

  • Robert James (unregistered)

    Oh this story is so familiar to so many small companies it isn't scary anymore but almost a fact of life when non-technical C class employees run the company solely bye the bfl and next mega sale.

    It is even scarier because at a point C level Mgmt could not determine where the Software Development VP should report to. Surely not the CEO, or the COO but instead to the Customer Service VP. So after 16 years of a successful track record confusion became the norm because Custom proposals now used the SWAG method to quote $ and time. The idea of resource leveling and other key principles previously established now were trashed because they were written for the development process with checks and balances.

    Worst became the proposals including technical commitment and overview never made it to development until after deal was committed to. The attitude is the development was bust so we can help them by reviewing and approving custom development requirements good bad or indifferent.

    So now a team that had been and still is committed to deliver projects on time have to deal with coitus( oops code) interruptions causing delays by C level Mgmt that would not listen to technical details.

    So BFL is what drives all coding and most info given to development was such a gaggle of words with no apparent connections the road to a greener world opened wide and 40 % of the development team is now in greener pastures and the developers who are still around will be gone in less than a year. They want to work in an environment that is based on sound principles and practice not lattest quim or next coitus(darn I did it again) interruption.

    It took 5 years to build a solid team. It has taken far less to kill it because of management not listening to department head that was responsible for development. The dept head and developers all need to move on. R&D is not important just the last proposal. Each day is a new custom.

  • JKor (unregistered)

    Litigation Driven Development

Leave a comment on “Small But Rapidly Growing”

Log In or post as a guest

Replying to comment #:

« Return to Article