- Feature Articles
- CodeSOD
- Error'd
- Forums
-
Other Articles
- Random Article
- Other Series
- Alex's Soapbox
- Announcements
- Best of…
- Best of Email
- Best of the Sidebar
- Bring Your Own Code
- Coded Smorgasbord
- Mandatory Fun Day
- Off Topic
- Representative Line
- News Roundup
- Editor's Soapbox
- Software on the Rocks
- Souvenir Potpourri
- Sponsor Post
- Tales from the Interview
- The Daily WTF: Live
- Virtudyne
Admin
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.]
Admin
Admin
The title sounds like a book about the US invading other countries. But it's not. It's really about grammar.
Admin
Admin
Admin
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!
Admin
FAAAAAAAAAAKKKKKKEEEEE
Admin
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.
Admin
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.
Admin
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?
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.)
Admin
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.
Admin
Means "no". Assertion without proof is the preserve of religion, not development.
Admin
Admin
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.
Admin
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.
Admin
I am in favor of PROP8
Admin
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.
Admin
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.
Admin
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.
Admin
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.
Admin
You do understand that the purpose of logging is to get timber to market, right? Not just to get rid of trees?
Admin
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.
Admin
helicoypters
Admin
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?"
Admin
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.
Agreed!Admin
Doing things wrong at the beginning versus taking the extra time. A brilliant man once wrote:
http://weblogs.asp.net/alex_papadimoulis/archive/2005/05/25/408925.aspx
Admin
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.
Admin
By "doing things wrong at the beginning" I thought you meant top posting, but you nailed it.
Admin
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.
Admin
Troll, troll, troll.
Admin
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.
Admin
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!
Admin
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.
Admin
Surprisingly, most I work with have not heard of "Technical debt" .. of course we "may" have a code base that is "difficult" to maintain.
Admin
If they manage to sell something before that, and to keep the interest of the investors? Hell, yes.
Admin
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...
Admin
...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.
Admin
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.
Admin
Let me guess: FM Global?
Also, that happens to me with OpenSignal, too. Pretty annoying. Try Antennas and/or NetMonitor.
Admin
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
Admin
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.
Admin
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.
Admin
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).
Admin
But the real question is, are you made of metal?
Admin
if it's an in-house product, quality can suffer since users have no choice.
Admin
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.
Admin
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.
Admin
When life gives you lemons, promote them to senior management.
Admin
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.
Admin
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.