• Norman Diamond (unregistered) in reply to jay
    jay:
    If the project was 6 months behind schedule when the new manager took charge and after he's been here for a year it's 3 months behind schedule, to say, "Look, since this guy was put in charge the project is 3 months behind schedule! He's ruining us!" is, of course, grossly unfair. Things are better than they were, so he's improving the situation. Maybe he's not improving it enough, maybe someone else could do better, but he's improving it. He's done better than his predecessor.
    Yes of course, and the reason for this WTF is that top management didn't understand that.
    jay:
    On the other hand, if the project was 6 months behind schedule when the new manager took charge and after he's been here for a year it's 9 months behind schedule, to say, "Hey, you can't blame him, the project was behind schedule when he started" is equally inaccurate. Things have gotten worse under his watch. Whatever the faults of his predecessor, he has not fixed the problem.
    This isn't really true. The new manager might be another typical WTF manager due to his/her own demerits, but not necessarily. The previous WTF manager likely scheduled 3 months to do 2 years of development. After 6 months, the previous WTF manager asserted that they were 4 months behind schedule. The new manager might say "Hey this is an 18 month project so we're 1 year behind schedule." Of course that's also an underestimate, but it's not the new manager's fault that the new estimate is closer than the old one.

    One of the best managers that I ever had didn't know much about software, but he KNEW and he ADMITTED that his estimates weren't likely accurate. When he scheduled 1 week to do a year's worth of programming, I was suddenly 51 weeks behind schedule. I kind of rescued it by a combination of good and bad programming techniques, so I got it done in around 16 weeks[*] instead of 52. Everyone else had used compilers but none had written part of one, so they gradually learned that that kind of programming is harder than they thought it was.

    Of course a typical WTF manager would have fired me after 4 weeks and assigned someone else to fix it in 1 week.

    [* I thought I got it done in around 13 weeks but someone uncovered a bug by not recompiling it when it needed recompiling, and in fact it shouldn't have needed recompiling even though it did, so I fixed it so it didn't need recompiling.]

  • Norman Diamond (unregistered) in reply to xaade
    xaade:
    Besides, you don't put your internal tools devs mixed in with product devs, because then you have no way to acknowledge what benefits are coming from your internal tools.
    Hey! King Solomon didn't really intend to slice me in half, he only proposed that solution as a trick to figure out who my real manager was. His trick failed when I only had one manager.
  • Norman Diamond (unregistered) in reply to abit slow
    abit slow:
    This is the first time Nagesh, wrote a complete (well almost) sentence.
    Have you heard of the book "Eats, Shoots and Leaves"?

    The title sounds like a book about the US invading other countries. But it's not. It's really about grammar.

  • Jimmy (unregistered) in reply to xaade
    xaade:
    Ironside:
    Herr Otto Flick:
    Michael, Lisa and Jeffrey are the WTF here. As a developer, it is not your job to do awesome software development, it is your job to deliver what the company needs. This company needed their software written. Like 6 months ago.

    Michael and Jeffrey instead spend their time making sure that the pieces that they have written operate perfectly. This is not the goal. The goal is deliver working, or semi working software fast enough that you do not burn through your capital before realising sales.

    They ended up delivering something the company couldn't sell. They should have been going like shit off a shovel trying to deliver what the company needed, not what they wanted to do.

    I'm not saying Larry was the solution, he sounds like a tool, but whomever of Michael, Lisa or Jeffrey that submitted this is far too proud of their dev skills whilst failing to deliver.

    You are right. Sometimes dirty/hack approach is not just sufficient, but necessary. I can go into a job telling them I'll cut to the chase, get the project done faster as I won't be p***ing about with all the trendy fashionable shit like TDD and Agile.

    No you are wrong.

    If you startup a project, all that fashionable stuff will keep you on target. This project in the WTF was already doomed. There was no saving this project. There was no undoing the damage done. Management should have met with the stockholders to determine if they should just drop the project since no one was interested in seeing it to completion.

    They made a scapegoat out of good developers and middle management, and now they are left with the same garbage that got them into the mess to begin with.

    Besides, you don't put your internal tools devs mixed in with product devs, because then you have no way to acknowledge what benefits are coming from your internal tools. Even if actual work is crossover, you need to have a true cost-benefit of the internal tools separate from the product sales.

    The problem with software engineering is that non of these internal tools and procedures have been codified in the actual cost of business.

    No one hires a plumber, bids on a building project, etc. without determining an estimate. No engineer just starts hacking away at concrete to make those two big blocks of the bridge fit together because two teams built either side of the bridge.

    We haven't codified the costs of planning software development as a distinct phase from actual building and deployment.

    These are the true problems of software engineering. The vast majority of software engineering is not engineering at all, but just plain programming.

    Nothing wrong with Agile, but it has to be weighed as the cost of estimate/engineering, and distinct from the cost of development.

    Over hear they built a bridge, started from each side. When they met in the middle they had a big problem - 1m gap, and no easy way to fill it without compromising the structure of the bridge....not sure how they fixed it, but it delayed the project for some time...

  • Norman Diamond (unregistered) in reply to EvilSnack
    EvilSnack:
    Captcha jumentum: "Jumentum is a Robin Williams film, remade for a Latin-speaking audience."
    Jumentum has no meaning. Jumanji is 十万時。 That's only about 11 years not 27. Robin Williams lied.
  • (cs) in reply to neminem
    neminem:
    I do kind of agree about unit tests. Sure, they're nice to have once they're working, but they are also kind of a pain to get working for anything even slightly complicated. I don't see a huge deal with only properly unit testing the truly critical parts of the system, if the goal is shipping a project that's already behind schedule. Testing: yes (you do have actual QA people on the team, right? If not, that's your bigger issue). Spending half your programmers' time writing tests for things that are most likely working, when they could be writing code? No. Save that for later. Not necessarily never, just not right now.

    But you do need a testing environment that is neither the production environment nor each developer's personal computer, and holy mother of frack would I not want to work at a place with no bug tracker and where nobody used any sort of source repository. There's no possible way those could inhibit work getting done (well, unless they were just terrible... forcing everyone to use, for instance, VSS, that would be a real wtf, ugh. But barring that... I can't even imagine working without the ability to diff my code against an arbitrary slice of history of the file, for instance. How did I once live without that?)

    I'd walk away from a shop that didn't allow me to write comprehensive unit tests for the code I'm supposed to improve. I develop my code with unit tests, using them to launch the code into the debugger at exactly the place where it needs debugging.

    Automatic testing is the kind of testing that takes a huge burden of the testers, so they can concentrate on the important stuff that is difficult to automate and don't need to be concerned with nitty-gritty shit like input validation or some such.

    To repeat my point: A company that doesn't have the insight to demand comprehensive unit tests from their developers is a company not worth working for. Walk away!

  • Zacrath (unregistered)

    FAAAAAAAAAAKKKKKKEEEEE

  • (cs) in reply to C-Derb
    C-Derb:
    My current gig has gone bat shit crazy for SOA and decided that all configuration settings for all our numerous applications shall be stored in a centralized database accessed via a service call.

    Where's the configuration for the service call to get the configuration?

    Seriously, the people who come up with this stuff ought to be loaded into a massive cannon and fired directly into the sun.

  • (cs) in reply to mharrman
    mharrman:
    The CI/TDD zelots are nearly as determental as the "dev on production" crowed when it comes to shipping an initial project. There has to be a balance of getting features out while not completely shooting yourself in the foot.

    It's called doing CI and TDD properly. I have this discussion on a weekly basis at work. It's no coincidence that the devs who practice TDD or at least work towards high test coverage get their work done just as quickly and with less issues than those who don't.

  • (cs) in reply to mharrman
    mharrman:
    eViLegion:
    Yes. Great products were produced on time.

    Any real examples?

    Yeah, but I'm not gonna list them, as I prefer not to name specific companies and products, so that I don't fall foul of NDAs that I've signed. But you asked the question "Has anyone ever..." and I answered it "Yes". Don't be upset if the answer was the opposite to what you expected.
    mharrman:
    eViLegion:
    If they'd hired someone better than you first time round, they'd have made their money pushing their product out just the same, but wouldn't have had to hire you at all.

    Yep and im sure facebook, youtube, and twitter... the top applications in their vertical did it that way... oh wait they didn't! They got a product out... got capital and then spent real time and money on building out a solid codebase and infrastructure.

    So you're saying that because facebook, youtube etc. happened to do it one way, that must be THE correct way right? Its not possible for any other software companies to have success making a decent product first time round?

    mharrman:
    Nice attempt at a childish insult though.

    If you were insulted, then fair enough, but you inferred an insult that wasn't actually implied... unless you find the very idea of someone being better than you as insulting.

    It was actually intended as a fact... or at least a logical truism: If they had written it properly the first time round they wouldn't have had to hire you. Don't be upset about hypothetical situations which don't require your skills... there are infinitely many of them.

    Anyway... quick tip... saying something that isn't true, typing an ellipsis, then typing "oh wait" and immediately contradicting yourself is really amateurish sarcasm... it sounds clunky when spoken and falls even flatter when typed. (Incidentally, that WAS a childish insult.)

  • (cs) in reply to JimLahey
    JimLahey:
    mharrman:
    The CI/TDD zelots are nearly as determental as the "dev on production" crowed when it comes to shipping an initial project. There has to be a balance of getting features out while not completely shooting yourself in the foot.

    It's called doing CI and TDD properly. I have this discussion on a weekly basis at work. It's no coincidence that the devs who practice TDD or at least work towards high test coverage get their work done just as quickly and with less issues than those who don't.

    Oh 1000x this. People who say "But writing tests will mean less time coding!" are obviously idiots that don't actually know how to write tests. I actually had a "senior" dev use that argument against me at my previous job when I suggested we look at some kind of testing (not unit, we would have had to use integration tests since nothing had tests at all) to at least ensure that certain key modules worked so we could begin to refactor them.

    I really really lament that more companies don't know this stuff. It really does feel in every interview that I go on that I'm talking to neanderthals that if it can't be thrown in a stored proc and retrieved, if it can't be stuffed in the code-behind of a WebForms widget, it doesn't exist. If these techniques were brand new I could maybe see the apprehension, but I recall in 2005 and 2006 a lot of good .NET guys were pushing for more agile style craftsmanship and testing, CI, good version control, and loosely coupled code. Even ASP.NET MVC has been around since I think 2009, if not earlier than that. So that's over half a decade where these techniques have been embraced by smart developers and companies, and completely ignored by ignorant ones; sadly the ignorant ones seem a lot more common.

    Addendum (2013-05-03 07:50): I mean, I'm not an expert in any of these things myself, but I try to stay up to date and watch videos, read books, follow the top .NET guys etc. who are all into this stuff and have been for years now, so it's very disappointing to talk to supposedly smart developers who have no clue any of this stuff even exists when it's been around for many years.

  • MrBester (unregistered) in reply to eViLegion
    eViLegion:
    mharrman:
    eViLegion:
    Yes. Great products were produced on time.

    Any real examples?

    Yeah, but I'm not gonna list them, as I prefer not to name specific companies and products, so that I don't fall foul of NDAs that I've signed. But you asked the question "Has anyone ever..." and I answered it "Yes". Don't be upset if the answer was the opposite to what you expected.

    Means "no". Assertion without proof is the preserve of religion, not development.

  • chris (unregistered) in reply to chubertdev
    chubertdev:
    C-Derb:
    Could be worse.

    How, you ask?

    My current gig has gone bat shit crazy for SOA and decided that all configuration settings for all our numerous applications shall be stored in a centralized database accessed via a service call. It is working out great. I can page through all the production settings and see, in plain text, database connection information (usernames and passwords) for databases I didn't even know we had. The possibilities are endless!

    All because, you know, SOA is totally hip. Web.config is for suckers.

    Wait, do you work at my company?

    Or mine. Is there a book out there somewhere that's telling people to do it this way?

  • (cs) in reply to chris
    chris:
    chubertdev:
    C-Derb:
    Could be worse.

    How, you ask?

    My current gig has gone bat shit crazy for SOA and decided that all configuration settings for all our numerous applications shall be stored in a centralized database accessed via a service call. It is working out great. I can page through all the production settings and see, in plain text, database connection information (usernames and passwords) for databases I didn't even know we had. The possibilities are endless!

    All because, you know, SOA is totally hip. Web.config is for suckers.

    Wait, do you work at my company?

    Or mine. Is there a book out there somewhere that's telling people to do it this way?

    I think the problem is that so many companies are run by older folks that don't know much about computers beyond the basics, because they've worked most of their life (i.e. without being the boss) during a time when there wasn't computers. Therefore either they know nothing about why they need computers, or they think they're "enlightened" and must jump on anything and everything tech-related.

    Very little middle ground, it seems.

  • (cs) in reply to MrBester
    MrBester:
    eViLegion:
    mharrman:
    eViLegion:
    Yes. Great products were produced on time.

    Any real examples?

    Yeah, but I'm not gonna list them, as I prefer not to name specific companies and products, so that I don't fall foul of NDAs that I've signed. But you asked the question "Has anyone ever..." and I answered it "Yes". Don't be upset if the answer was the opposite to what you expected.

    Means "no". Assertion without proof is the preserve of religion, not development.

    No, it means "yes, but I'm legally bound not to talk about any details".

    Assertion without proof is actually very common, religion being one common place for it. Discussing pointless shit on the internet is another popular usage. I think you'll find that this forum is not supported by double blind tests, peer review, or scientific method, but is in fact a bunch of people casually discussing WTFs; therefore no citations needed.

  • IN-HOUSE-CHAMP (unregistered) in reply to secundum
    secundum:
    Dave H:
    Sparticus:
    I am Jeffery!

    We're all Jeffery.

    I'm Jeffrey, and so is my wife.

    I am in favor of PROP8

  • Ironside (unregistered) in reply to havokk
    havokk:
    Ironside:
    I can go into a job telling them I'll cut to the chase, get the project done faster as I won't be p***ing about with all the trendy fashionable shit like TDD and Agile.

    "So, logging company, you are a long way behind on your deliverables (logs). That's OK, I'll cut to the chase and cut down trees faster as I won't be pissing about with all the trendy fashionable shit like chainsaws and front-end-loaders and mechanical log lines. An axe was good enough for me when I started as a lumberjack so I refuse to use anything else."

    No you still don't get it do you. I would be blowing the trees down with explosives.

    I am the Anti-Pattern. So be it. I get the job done faster.

  • (cs) in reply to Ironside
    Ironside:
    No you still don't get it do you. I would be blowing the trees down with explosives.

    I am the Anti-Pattern. So be it. I get the job done faster.

    So, your analogy to explain why your approach is better involves devastating your source of raw materials instead of usefully harvesting them?

    Splintered tree trunks have negative market value as they cannot be sold, and you have to pay labourers to remove and dispose of them before you can start the laborious process of planting more trees and then waiting for them to grow.

    Faster? You don't even get the job done at all.

    Addendum (2013-05-03 11:55): Edit: If you see a lovely field with a family having a picnic, and there's a nice pond in it, you fill in the pond with concrete, you plough the family into the field, you blow up the tree, and use the leaves to make a dress for your wife who's also your brother.

  • Ironside (unregistered)

    I won't have to pay anyone shit. They'll be queuing up to $$$ me once they see the result. plenty of timber lying around for the boys to collect. https://www.google.co.uk/search?q=tunguska&tbm=isch

    Id tell them to just burn any of the splintered ones and let the beavers or whatever nature does eat the rest.

  • trtrwtf (unregistered) in reply to Ironside
    Ironside:
    No you still don't get it do you. I would be blowing the trees down with explosives.

    I am the Anti-Pattern. So be it. I get the job done faster.

    Okay, you've knocked down a bunch of trees. Some of them are even useable. (many are unmarketable, but some are useable) Now, how are you going to get them to the mill? You haven't built the roads to haul them out on, and by the time you've got that done, the logs are rotting on the ground.

  • trtrwtf (unregistered) in reply to Ironside
    Ironside:
    Id tell them to just burn any of the splintered ones and let the beavers or whatever nature does eat the rest.

    You do understand that the purpose of logging is to get timber to market, right? Not just to get rid of trees?

  • jay (unregistered) in reply to havokk
    havokk:
    Ironside:
    I can go into a job telling them I'll cut to the chase, get the project done faster as I won't be p***ing about with all the trendy fashionable shit like TDD and Agile.

    "So, logging company, you are a long way behind on your deliverables (logs). That's OK, I'll cut to the chase and cut down trees faster as I won't be pissing about with all the trendy fashionable shit like chainsaws and front-end-loaders and mechanical log lines. An axe was good enough for me when I started as a lumberjack so I refuse to use anything else."

    That's right! Because you know, chainsaws waste so much time. You have to carry them out to the job site. You always have to stop and refill them with more gasoline. Sometimes they break down and have to be fixed. It's so much simpler to just use an ax. Or better yet, my teeth.

  • Ironside (unregistered) in reply to trtrwtf
    trtrwtf:
    Ironside:
    No you still don't get it do you. I would be blowing the trees down with explosives.

    I am the Anti-Pattern. So be it. I get the job done faster.

    Okay, you've knocked down a bunch of trees. Some of them are even useable. (many are unmarketable, but some are useable) Now, how are you going to get them to the mill? You haven't built the roads to haul them out on, and by the time you've got that done, the logs are rotting on the ground.

    helicoypters

  • jay (unregistered) in reply to eViLegion
    eViLegion:
    MrBester:
    eViLegion:
    mharrman:
    eViLegion:
    Yes. Great products were produced on time.

    Any real examples?

    Yeah, but I'm not gonna list them, as I prefer not to name specific companies and products, so that I don't fall foul of NDAs that I've signed. But you asked the question "Has anyone ever..." and I answered it "Yes". Don't be upset if the answer was the opposite to what you expected.

    Means "no". Assertion without proof is the preserve of religion, not development.

    No, it means "yes, but I'm legally bound not to talk about any details".

    Assertion without proof is actually very common, religion being one common place for it. Discussing pointless shit on the internet is another popular usage. I think you'll find that this forum is not supported by double blind tests, peer review, or scientific method, but is in fact a bunch of people casually discussing WTFs; therefore no citations needed.

    BTW if you believe that religion works by "assertion without proof", you apparently have not studied anything about religion. At least not the "classic" Western religions: Judaism, Christianity, and Islam, which are based on logic, reason, historical evidence, and the testimony of people who claim to be eye-witnesses. That is little different from our basis for believing claims of historical or scientific fact. You may find the testimony and/or the logic unconvincing, but that is not at all the same as saying that no evidence was offered. Just like you may find the evidence offered for a scientific theory unconvincing. If someone says "I performed this experiment and got these results", it is fair to say, "I see such-and-such flaws in your methodology and thus I do not accept your conclusions." It is plausible to say, "Your results so contradict other things that I am convinced are true that I think you are not describing the experiment accurately." (i.e. you think the experimentor made mistakes in his observations, or is guilty of outright fraud.) It is not fair to say, "You are making claims with no evidence." Ditto for theological arguments.

    Okay, there are ignorant people out there who will say, "I believe such-and-such religious idea because it's something I find pleasant to believe." But you could say the same thing about the most well-established scientific theory, too: there are ignorant people who believe it because it sounds nice while having no idea what the evidence for or against might be. The fact that an ignorant person thinks something is true doesn't prove that it's false. One can be stupid and be right about many things just by luck. The test of an idea is not, "What is the weakest argument that has ever been offered for this?", but "What is the best?"

  • instigator (unregistered) in reply to jay
    jay:
    BTW if you believe that religion works by "assertion without proof", you apparently have not studied anything about religion. At least not the "classic" Western religions: Judaism, Christianity, and Islam, which are based on logic, reason, historical evidence, and the testimony of people who claim to be eye-witnesses. That is little different from our basis for believing claims of historical or scientific fact.
    I'm sorry, but your equation of science and religion as both requiring the same amount of faith is just wrong. While it is true that religions use logic, they begin with assumptions that are untestable and must be accepted by their adherents without question (in other words, blind faith). Practitioners are not afraid to tell you this. Science, on the other hand, encourages explicit documentation of experiments, so that they can be REPRODUCED. If an experiment can't be reproduced, it is not excepted in the scientific community.

    Another key difference, science changes when new information is found. Religion will deny new information if it is inconvenient. Scientists are allowed to be wrong and still be held in high esteem. They provide the best model of the world they can, and we later build upon that. Religious figures (prophets, saints, pontiffs etc.) are usually considered to have a degree of infallibility. The Gospels are considered by most Christians to be the Word of God, even if they were written more than 100 years after Jesus. This word cannot be challenged, even when the information conflicts.

    I don't have anything against religion, and I don't claim to have the answers. But it is not approached as a science.

    The fact that an ignorant person thinks something is true doesn't prove that it's false. One can be stupid and be right about many things just by luck. The test of an idea is not, "What is the weakest argument that has ever been offered for this?", but "What is the best?"
    Agreed!
  • (cs)

    Doing things wrong at the beginning versus taking the extra time. A brilliant man once wrote:

    "A client has asked me to build and install a custom shelving system. I'm at the point where I need to nail it, but I'm not sure what to use to pound the nails in. Should I use an old shoe or a glass bottle?

    How would you answer the question?

    a) It depends. If you are looking to pound a small (20lb) nail in something like drywall, you'll find it much easier to use the bottle, especially if the shoe is dirty. However, if you are trying to drive a heavy nail into some wood, go with the shoe: the bottle with shatter in your hand.

    b) There is something fundamentally wrong with the way you are building; you need to use real tools. Yes, it may involve a trip to the toolbox (or even to the hardware store), but doing it the right way is going to save a lot of time, money, and aggravation through the lifecycle of your product. You need to stop building things for money until you understand the basics of construction.

    http://weblogs.asp.net/alex_papadimoulis/archive/2005/05/25/408925.aspx

  • (cs) in reply to Herr Otto Flick
    Herr Otto Flick:
    Religiously writing unit tests to validate the correctness of your code adds quality, but it also doubles or triples the rate that you can add features at

    I agree completely!!!

    WITHOUT unit tests I can deliver 2-3 working features per month.

    WITH unit tests, I double (4-6) or even triple (6-9) the number of working feature per month.

  • Norman Diamond (unregistered) in reply to chubertdev

    By "doing things wrong at the beginning" I thought you meant top posting, but you nailed it.

    chubertdev:
    Doing things wrong at the beginning versus taking the extra time. A brilliant man once wrote:

    "A client has asked me to build and install a custom shelving system. I'm at the point where I need to nail it, but I'm not sure what to use to pound the nails in. Should I use an old shoe or a glass bottle?

    How would you answer the question?

    a) It depends. If you are looking to pound a small (20lb) nail in something like drywall, you'll find it much easier to use the bottle, especially if the shoe is dirty. However, if you are trying to drive a heavy nail into some wood, go with the shoe: the bottle with shatter in your hand.

    b) There is something fundamentally wrong with the way you are building; you need to use real tools. Yes, it may involve a trip to the toolbox (or even to the hardware store), but doing it the right way is going to save a lot of time, money, and aggravation through the lifecycle of your product. You need to stop building things for money until you understand the basics of construction.

    http://weblogs.asp.net/alex_papadimoulis/archive/2005/05/25/408925.aspx

  • Gunslinger (unregistered) in reply to some pony
    some pony:
    Herr Otto Flick:
    As I've said, Larry is a tool. VCS adds a lot to a project, and doesn't really cost you anything. Religiously writing unit tests to validate the correctness of your code adds quality, but it also doubles or triples the rate that you can add features at - you're spending all that time fucking about with unit tests when you could have added the next feature.

    And in the time where you debugged the errors created in the first feature created by the second feature, you implement the third and fourth feature. It really does double or tripple the rate at which you can add (working) features

    Why did you write code with errors in it in the first place? If you did the design correctly, it's trivial to implement accurately. And since your objects should be simple enough to check the design easily, there shouldn't be any errors to debug.

  • Gunslinger (unregistered) in reply to Spewin Coffee
    Spewin Coffee:
    All of the following depends on the system, so...

    There's nothing wrong with source control as long as it doesn't get in the way. And it can get in the way. When you need to be agile, source control is mostly there as a means for maintaining a backup should major changes go horribly, horribly wrong. For everything else, keep the document open and a big, fat undo stack (10,000 undo level is fine). If no one complains for a week after the change, then it is probably fine to close the document and commit the changes to source control.

    There's also nothing wrong with working on a live system in a small team of two or three people. Around 6-7 developers on the same project, however, source control pretty much becomes mandatory to maintain sanity. And around a dozen or so devs requires more enterprisey setups with separate dev/test and production environments.

    Troll, troll, troll.

  • Gunslinger (unregistered) in reply to ObiWayneKenobi
    ObiWayneKenobi:
    Herr Otto is right... in extreme fringe cases. What often happens is you never have time to go back to add tests later "when the money is coming in", because there will be other things that will bring more money in that push testing and good practices to the curb. That's why it's so important to have quality from the start; if you fall into the trap of "Spending time making the code good won't let us sell it fast enough" you're never going to be able to recover and get the time to do it right again.

    I have never seen any place actually address quality concerns in a rational manner when there was a somewhat valid excuse to not address quality at the start. It's always been ignore quality now, and then ignore quality later because you've already shown that you can put out a "successful" version of the software without quality, so all of that high-falutn' quality stuff is rubbish.

    What people miss is that there's a difference between quality code and verified quality code. The "high-falutin' quality stuff" is about verifying that the code is good quality, but you don't need that if your code actually is good quality.

  • John (unregistered)

    This sounded like the first software development job I had after graduating in the early 2000's. I actually thought it might be the same place with names changed until I read the part about SQL-Injection... You see the place I worked at didn't believe in using 3rd-party relational SQL databases, they designed their own flat-file based database system from scratch which had no SQL support (and wasn't even relational btw)... But hey! It was SQL-Injection proof!

  • Gibbon1 (unregistered) in reply to Vanders
    Vanders:
    Herr Otto Flick:
    Religiously writing unit tests to validate the correctness of your code adds quality, but it also doubles or triples the rate that you can add features at - you're spending all that time fucking about with unit tests when you could have added the next feature.

    You can always add the unit tests later, when the money is coming in.

    Out of interest, have you ever heard the phrase "Technical debt"?

    I have also known as Windows.

    Seriously you have to be realistic. The fundamental problem is you've got to get there from here, with what you have.

    You can fuck that up both ways. You can shoot at rolling your product out too early and end up with load of technical debt that slowly bleeds off any profit you would have made. And you can be so late that the product is canceled and all the effort you put in, is sunk.

  • Old_troll (unregistered) in reply to Vanders

    Surprisingly, most I work with have not heard of "Technical debt" .. of course we "may" have a code base that is "difficult" to maintain.

  • katastrofa (unregistered) in reply to Y_F
    Y_F:
    With Larry-like lead, if they ever manage to deliver something, will be some steaming pile of crap. It won't be documented, not tested, riddled with bugs and probably not backed up anywhere else. Sooner or later, their prod server would go up in smoke along with the whole single copy of their product, or simply it would grind to a halt, unable to perform maintenance, fix bugs or add new features. The client would start using and relying on a product that soon would give them lots of trouble. It would do more harm than good, either because it does not work properly, barely works or some sunny morning it simply stops to work.

    Do you honestly think this is a better outcome?

    If they manage to sell something before that, and to keep the interest of the investors? Hell, yes.

  • Popeye (unregistered) in reply to Herr Otto Flick

    Yes delivering a piece of shit, semi-functioning, poorly written chunk of garbage code actually would make most managers and CIOs happy. By the time they realized how fucked up it was the people that wrote it, approved it, promoted it, etc.. would be long gone and the cycle would continue...

  • urza9814 (unregistered) in reply to s73v3r
    s73v3r:
    Herr Otto Flick:
    Y_F:
    Herr Otto Flick:
    Michael, Lisa and Jeffrey are the WTF here. As a developer, it is not your job to do awesome software development, it is your job to deliver what the company needs. This company needed their software written. Like 6 months ago.

    Michael and Jeffrey instead spend their time making sure that the pieces that they have written operate perfectly. This is not the goal. The goal is deliver working, or semi working software fast enough that you do not burn through your capital before realising sales.

    They ended up delivering something the company couldn't sell. They should have been going like shit off a shovel trying to deliver what the company needed, not what they wanted to do.

    I'm not saying Larry was the solution, he sounds like a tool, but whomever of Michael, Lisa or Jeffrey that submitted this is far too proud of their dev skills whilst failing to deliver.

    No, it is a series of WTFs, but not on our skilled trio. First, it seems there was never a real estimate for the product. Second, they promptly started churning code without dev management, lead by a stupid senior dev. Third, they watched the whole thing go froim bad to worse, behind schedule and overbudget, only to 6-12 months later decide that some good management was needed. They called for it.

    If the good devs push for improvement, like source control, unit tests, proper testing and such, they're doing their job. The project was already doomed, and they only did what could be done to set things straight, even if only to see a slightly better project fall off the cliff. And even like this, it's still probably better this way.

    With Larry-like lead, if they ever manage to deliver something, will be some steaming pile of crap. It won't be documented, not tested, riddled with bugs and probably not backed up anywhere else. Sooner or later, their prod server would go up in smoke along with the whole single copy of their product, or simply it would grind to a halt, unable to perform maintenance, fix bugs or add new features. The client would start using and relying on a product that soon would give them lots of trouble. It would do more harm than good, either because it does not work properly, barely works or some sunny morning it simply stops to work.

    Do you honestly think this is a better outcome?

    If you can sell it, keep the company operating, keep you and your colleagues in jobs, then yes. Version 1 doesn't have to be perfect, but it needs to work, it needs to be delivered in time for the company to make money from it.

    Quality can come later down the line, if you obsess over quality whilst the company disintegrates around you, you've failed.

    As I've said, Larry is a tool. VCS adds a lot to a project, and doesn't really cost you anything. Religiously writing unit tests to validate the correctness of your code adds quality, but it also doubles or triples the rate that you can add features at - you're spending all that time fucking about with unit tests when you could have added the next feature.

    You can always add the unit tests later, when the money is coming in. No money, no company, no development, no job. Show me the money.

    If Version 1 is utter shite, then no one is going to want to use Version 2, no matter how many pictures of cute kittens you add.

    And as for adding features vs quality control, what good is having half a dozen more features if they're all half baked and don't work worth a damn? This is the difference between Microsoft's approach and Apple's. Microsoft goes for the bullet points on the box. Apple might leave some features off of version one, but that's because they recognize that you only have so much time in the day, and you can either spend that time making some features really, really good, or half-assing some other features.

    ...Which is why Microsoft went bankrupt and Apple is the most popular consumer OS in the world, right?

    In military or high-reliability or embedded or safety systems, it better be stable and secure and bug-free, because anything else is worthless. In a consumer market though, that's not such a big deal. Hell I work for a company that's in the top 10 of the Fortune 500 list, and it wouldn't be an exaggeration to say that SOME program I'm using here crashes or locks up every single day. But it's not our server gear, it's just dev tools. If the server crashes, it's millions of dollars. If a developer's IDE crashes, that's MAYBE $5...so who cares? If the price is right, people will happily buy and continue using software that is complete and utter garbage.

    Hell I have an app on my phone that I literally have to force-close every single time I use it (OpenSignal). Open it, hit refresh network, and it does it but as it's finishing it locks up. Every single time. I still use it a couple times a week though, because it's free and it gets the job done and I really couldn't care less that it's a bug-ridden piece of junk. If you're the first to market -- or cheapest -- with certain features...people will pretty much use it no matter how bad it is.

  • Schol-R-LEA (unregistered)

    Those who recall "We Will Test No Software Before It Ships" won't be surprised to learn that this was the state of affairs at the company in question even before 'Scott Slocum' made his momentous announcement.

  • (cs) in reply to urza9814
    urza9814:
    ...Which is why Microsoft went bankrupt and Apple is the most popular consumer OS in the world, right?

    In military or high-reliability or embedded or safety systems, it better be stable and secure and bug-free, because anything else is worthless. In a consumer market though, that's not such a big deal. Hell I work for a company that's in the top 10 of the Fortune 500 list, and it wouldn't be an exaggeration to say that SOME program I'm using here crashes or locks up every single day. But it's not our server gear, it's just dev tools. If the server crashes, it's millions of dollars. If a developer's IDE crashes, that's MAYBE $5...so who cares? If the price is right, people will happily buy and continue using software that is complete and utter garbage.

    Hell I have an app on my phone that I literally have to force-close every single time I use it (OpenSignal). Open it, hit refresh network, and it does it but as it's finishing it locks up. Every single time. I still use it a couple times a week though, because it's free and it gets the job done and I really couldn't care less that it's a bug-ridden piece of junk. If you're the first to market -- or cheapest -- with certain features...people will pretty much use it no matter how bad it is.

    Let me guess: FM Global?

    Also, that happens to me with OpenSignal, too. Pretty annoying. Try Antennas and/or NetMonitor.

  • Lennart Goosens (unregistered)

    Am I the only one who thinks that TDWTF, and especially this article, should be read out loud by the same voice actor that does the voice-over for the T. V. show "Strippers: Cars for Cash"?

    Seriously: http://www.youtube.com/watch?v=n2dQVIflZW8

    Maybe Alex could see about hiring him? XD

  • Anonymous Coward (unregistered) in reply to Herr Otto Flick

    What makes you think that such a buggy product would make any money when launched? Chances are that a poorly tested product will be a buggy and annoying product that customers will look for alternatives anyway. Instead, create a better (i.e. well tested) product with fewer features and add features on iteratively (also giving you a chance for more feedback before it becomes even more expensive to fix later).

    Note, I am not advocating "religious" unit testing but certainly automated / continuous integration.

  • Anonymous Coward (unregistered) in reply to Herr Otto Flick
    Herr Otto Flick:
    Y_F:
    Herr Otto Flick:
    Michael, Lisa and Jeffrey are the WTF here. As a developer, it is not your job to do awesome software development, it is your job to deliver what the company needs. This company needed their software written. Like 6 months ago.

    Michael and Jeffrey instead spend their time making sure that the pieces that they have written operate perfectly. This is not the goal. The goal is deliver working, or semi working software fast enough that you do not burn through your capital before realising sales.

    They ended up delivering something the company couldn't sell. They should have been going like shit off a shovel trying to deliver what the company needed, not what they wanted to do.

    I'm not saying Larry was the solution, he sounds like a tool, but whomever of Michael, Lisa or Jeffrey that submitted this is far too proud of their dev skills whilst failing to deliver.

    No, it is a series of WTFs, but not on our skilled trio. First, it seems there was never a real estimate for the product. Second, they promptly started churning code without dev management, lead by a stupid senior dev. Third, they watched the whole thing go froim bad to worse, behind schedule and overbudget, only to 6-12 months later decide that some good management was needed. They called for it.

    If the good devs push for improvement, like source control, unit tests, proper testing and such, they're doing their job. The project was already doomed, and they only did what could be done to set things straight, even if only to see a slightly better project fall off the cliff. And even like this, it's still probably better this way.

    With Larry-like lead, if they ever manage to deliver something, will be some steaming pile of crap. It won't be documented, not tested, riddled with bugs and probably not backed up anywhere else. Sooner or later, their prod server would go up in smoke along with the whole single copy of their product, or simply it would grind to a halt, unable to perform maintenance, fix bugs or add new features. The client would start using and relying on a product that soon would give them lots of trouble. It would do more harm than good, either because it does not work properly, barely works or some sunny morning it simply stops to work.

    Do you honestly think this is a better outcome?

    If you can sell it, keep the company operating, keep you and your colleagues in jobs, then yes. Version 1 doesn't have to be perfect, but it needs to work, it needs to be delivered in time for the company to make money from it.

    Quality can come later down the line, if you obsess over quality whilst the company disintegrates around you, you've failed.

    As I've said, Larry is a tool. VCS adds a lot to a project, and doesn't really cost you anything. Religiously writing unit tests to validate the correctness of your code adds quality, but it also doubles or triples the rate that you can add features at - you're spending all that time fucking about with unit tests when you could have added the next feature.

    You can always add the unit tests later, when the money is coming in. No money, no company, no development, no job. Show me the money.

    What makes you think that such a buggy product would make any money when launched? Chances are that a poorly tested product will be a buggy and annoying product that customers will look for alternatives anyway. Instead, create a better (i.e. well tested) product with fewer features and add features on iteratively (also giving you a chance for more feedback before it becomes even more expensive to fix later).

    Note, I am not advocating "religious" unit testing but certainly automated / continuous integration.

  • Anonymous Coward (unregistered) in reply to mharrman
    mharrman:
    Yep and im sure facebook, youtube, and twitter... the top applications in their vertical did it that way... oh wait they didn't! They got a product out... got capital and then spent real time and money on building out a solid codebase and infrastructure.

    The last company I worked at got bought out by a larger company and the owner and those of us with options made quite a nice chunk of change. Theres quite the profit to be made being the first to market.

    Nice attempt at a childish insult though.

    True first to market makes a difference, but 1. all your examples tend to be an exception 2. most have had issues with scalability and not (AFAIK) being "buggy" software. Can you even prove that they did not do testing and such or is that just some random guess (which must be true because I read it on the Internet).

  • Anonymous Coward (unregistered) in reply to Andrew
    secundum:
    Dave H:
    Sparticus:
    I am Jeffery!

    We're all Jeffery.

    I'm Jeffrey, and so is my wife.

    But the real question is, are you made of metal?

  • (cs) in reply to Anonymous Coward
    Anonymous Coward:
    What makes you think that such a buggy product would make any money when launched? Chances are that a poorly tested product will be a buggy and annoying product that customers will look for alternatives anyway. Instead, create a better (i.e. well tested) product with fewer features and add features on iteratively (also giving you a chance for more feedback before it becomes even more expensive to fix later).

    Note, I am not advocating "religious" unit testing but certainly automated / continuous integration.

    if it's an in-house product, quality can suffer since users have no choice.

  • CCS (unregistered)

    The real WTF here are Michael and Lisa. They have a project that is far behind schedule, running far over budget, and with an immediate pressure to deliver results.

    They spend some time having one-on-ones with the development team (which is good), but apparently completely neglect to talk to and communicate with the stakeholders. Had they done that, they would not have wasted so much time on introducing new procedures. And to top that off, the first thing they do is introduce a lot of QA and QC, when the important thing is to deliver a working product, and to deliver fast.

    As others said, source control would have been feasible to introduce, and probably a very good idea if the developers know how to use it; otherwise, do "manual" source control for the time being. Everything else at this point is icing on the cake, which should be done from the next project onwards, but not if you are already so far behind. It is very-good-to-have, but not essential - software can be delivered without it.

  • Norman Diamond (unregistered) in reply to CCS
    CCS:
    As others said, source control would have been feasible to introduce, and probably a very good idea if the developers know how to use it; otherwise, do "manual" source control for the time being. Everything else at this point is icing on the cake,
    Oh no. Now even my source code is unreadable.

    Oh wait, that actually happens. Someone creates a source file using characters from their code page, doesn't use trigraphs (understandable) or escape sequences (less understandable), and stores it using their code page instead of Unicode. For example a Microsoft employee might be unaware that some of Microsoft's products are sold in countries that commonly use different code pages, or a volunteer poster to Code Project might not give a F about readers outside their own country. If your code isn't 7-bit clean, and you want it to be readable, store it in Unicode.

  • Corion (unregistered)

    When life gives you lemons, promote them to senior management.

  • Herr Otto Flick (unregistered) in reply to Anonymous Coward
    Anonymous Coward:
    What makes you think that such a buggy product would make any money when launched? Chances are that a poorly tested product will be a buggy and annoying product that customers will look for alternatives anyway.

    Two companies are developing competing software. One company launches a product. One company does not. Which company makes more money from their respective product?

    Quite often, especially with bespoke software, the client is looking to see that you have understood what the software needs to do, and that it damn well does it.

    Say your software is an image processing plugin for photoshop that randomly crashes 1 time in 50, and works correctly in the other scenarios, and no other software offers this feature. It does the job. No-one gives a fuck that it crashes every now and again, because it is saving them so much time. They want v2 without the bugs, and they want it so much they have commissioned more work..

    "Released, working but buggy" is a damn lot better for a business than "Unreleased, non-working but no bugs". That I'm even having to explain this is incredible.

  • (cs) in reply to Herr Otto Flick
    Herr Otto Flick:
    Anonymous Coward:
    What makes you think that such a buggy product would make any money when launched? Chances are that a poorly tested product will be a buggy and annoying product that customers will look for alternatives anyway.

    Two companies are developing competing software. One company launches a product. One company does not. Which company makes more money from their respective product?

    Quite often, especially with bespoke software, the client is looking to see that you have understood what the software needs to do, and that it damn well does it.

    Say your software is an image processing plugin for photoshop that randomly crashes 1 time in 50, and works correctly in the other scenarios, and no other software offers this feature. It does the job. No-one gives a fuck that it crashes every now and again, because it is saving them so much time. They want v2 without the bugs, and they want it so much they have commissioned more work..

    "Released, working but buggy" is a damn lot better for a business than "Unreleased, non-working but no bugs". That I'm even having to explain this is incredible.

    You would have a point if it was a one-off "Let's get a semi-decent app out to market, and then improve it" BUT THAT DOES NOT HAPPEN IN THE REAL WORLD. You push out a buggy piece of garbage, and then keep adding more features to it so you never actually fix those bugs that you shipped with.

    You're basically arguing the old saw that many of us get saddled with in existing companies, where some impatient exec decided to cut corners, promised the devs that it would be fixed "once we're making some money" only to then turn around and keep wanting new features instead of improving.

    I don't think anyone is arguing having something usable out there to actually have a product, but cutting corners on quality and longterm stability is not how to do things properly.

Leave a comment on “Slacking Off”

Log In or post as a guest

Replying to comment #:

« Return to Article