- 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
Admin
Oh yeah!?
A project I did 15 years ago was 25mb of COBOL source code!
Which, since it's COBOL, probably was about 500 lines.
What the hey. I figured I'd put my foot forward before everyone else started in.
Admin
Testing isn't necessary. My code is flawless. Though sometimes it did display some bugs, but those were exceptions, not common. If there is spare time for testing, I would rather spend that time prefecting my code.
Admin
F**k it, we'll do it live!!
Admin
Derivative with respect to which variable?
Admin
I think that organizations like this are ripe for takeovers. Think about it, bring in some smart new money, fire the idiots in middle management that caused this appalling situation (this happens in takeovers anyway, but that they actually deserve it is a plus).
If I was a customer or a stockholder, I would be after that CEO for failing to take due care in the operation of the business. Under SOX, he could be exposed to civil and criminal penalties for allowing this. It is like it would have been if the CEO of Exxon had known that Hazelwood drove the Valdez drunk on a regular basis – before he destroyed half the Alaska coastline.
This kind of failure to exercise due care should be reported to the regulatory agency that regulates the industry, in this case the SEC. I think that they would take a very dim view of this kind unprofessional behavior anywhere near that “fiduciary responsibility”.
Attention managers, the days of running a business like a pirate ship are over. Keep it up and it will be you that get Keel-Hauled… http://en.wikipedia.org/wiki/Keelhauling
Walking the plank would just be too merciful.
Admin
Admin
I agree with not calling it done unless it's done. "It's done, but we haven't tested it yet" really means "it's not done." Knowing that management will want to deploy as soon as "it's done", we need to be sure not to declare it as such until we've tested it and can stand behind it.
Admin
You might spend more time prefecting your spelling instead.
Admin
Okay, good.
Sitation 1: if you have statndard procedures then most likely you have management backing those procedures. So these e-mails only need to get written in real emergencies. In that case you problably get an affirmative reply. Case closed.
Situation 2: There are no procedures. Your manager is a weasel/jerk/MBA. He gave you the directive to code and deploy verbally and does not confirm your e-mail (maybe even deletes it - although this should not possible because of Sarbanes-Oxley). What do you do then ? Are you going to put your ass on the line and go ahead anyway ? Or are you are going to refuse and risk a career-limiting dismissal ?
Imagine this: Your deployment goes horribly wrong (like in the OP). You end in front of a panel of manager (each in full-tilt CYOA mode) in a meeting room somewhere. The dialogue before you come in is as follows:
CEO to CIO: "I want the head of the person who is responsible. You are in charge of IT. It is your department's fault." CIO to CEO: "It is the fault of the CTO. His production environment failed"
CIO to CTO: ..... CTO to CIO: .....
< repeated ad nauseam until the fingerpointing is with our unfortunate developer again >.
Development manager to developer: "You deployed a change in the production environment without testing and my knowledge. We will have to let you go." Developer: "I have here printouts of the e-mail sent to you confirming your verbal directive to implement and deploy feature XYZ in production without testing and you affirmative reply to it. Let me go and I will sue to the ass off the company for unfair dismissal. I have furthermore printouts of earlier e-mail which show that changes are routinely deployed in production without testing by directives on numerous previous occasions."
So what does the developer do if he doesn't get an affirmative e-mail ? And to make things worse the manager may be a lying weasel ..... I leave that up to you to imagine ...
For me personally, I would refuse to implement and deploy without written (e-mail) confirmation right away. If an issue is being made out of this then you just have to show backbone.
Admin
... and it came out as "Helo World!".
Admin
Dear Mr. Boss,
As per your directive I am coordinating with the QA testers. The additional work required for testing will push back the deployment as follows and the original targeted deployment will not be met:
< ... yadayada - Schedule - yadayada .. >
Based on your previous directive QA and myself will conduct the work as per the revised schedule detailed above resulting in a deployment delay of x working days.
Best Regards, A. Developer
Admin
10 years ago, I put my cat in a box to see if it could be alive and dead at the same time. After a while, it started to smell, but theoretically is still both alive and dead.
Admin
The only language I know that can make a sailor cry is COBOL
Admin
I still (just) do work at LB and none of the stuff I work on or have ever worked on over the last 13+ years on the fixed-income/derivatives side has ever been handled this way. Build quality and testing are generally good. OTOH I don't generally work on the flow side of the business where pressures are higher and some would claim that IQs are lower.
Rgds
Damon
Admin
I've written these systems and there is always the potential brown-pants moment right after deploying a change - no matter how much testing has been done. You should always have a means of sending cancel orders for everything you have on the market though. That way you limit your exposure somewhat.
A web service?! The systems I wrote for order processing needed sub millisecond latency. Parts of the system were co-located because even if they were travelling at the speed of light the orders couldn't get around the globe fast enough and they're using a web service?
As for pay, at least where I live, the right financial company will pay absolute top dollar for good developers. The only companies paying more are the online poker companies, which shows how much money they make!
Admin
The problem with testing is still the same: it takes ±2 times longer than to develop. So if dev takes one day, testing takes two and the whole including deployment takes ±1 week. For business this is far too long. They need the changes by yesterday. Markets react quickly, sometimes within hours sometimes even less. Financial institutions have a bit the habit of losing money (think only of cash burn). So, all right, they loose some bucks on day X because something didn't work well, but then they earn bucks, say 10 times more often, because the stuff was implemented in time and it actually worked. Thus, of course, this is stressing, but not killing. Logically, the business people must play the angry role to make sure problems don't happen all the time, but when they happen once in a while it doesn't hurt as much as to be always the last one who implements important changes that allow to make the big bucks.
Admin
Long, long ago in a job far, far away...
(Scene: the 'workshop' of a small SCADA development team)
Boss: I've fixed that problem where the screen updated twice.
Me: Uh, the low priority one we said we'd fix during the plant's next scheduled shutdown?
Boss: Yes, but some of the users complained. I've got the package ready to go out onto the machines.
Me: sigh Okay, I'll test it on a dev box over lunch and we can roll it out this evening when there's less people around.
Boss: I've already tested it! It can go out right now. starts typing
Me: Well, I'd kinda expected you'd test the fix before packaging. I'm talking about testing the install procedure for sanity, missing files, that sort of...
Boss: Why are the main boxes down?
Me: They're not, I'm logged on to TSR n...oh!
Of course, the install had a bug in it. One that effectively delisted the mass-storage control subsystem, i.e. instantly took all the drives off-line, including paged memory. Funny thing, but if you disable the low-level HDD driver from a system, it won't boot again either. I spent the rest of the day wandering from machine to machine with a clone of one of the dev drives so that I could boot each box off it, repair the damage and restart normally.
Of course, the Boss wouldn't believe it was anything to do with him; the bug in his package was obviously a result of the crash. Though I noticed he did delete the (uncrashed) copy from his work area, so no-one could say otherwise.
Admin
Actually, it is possible to create flawless code. And this comes from someone working with huge ERP software. Divide the code into small enough pieces and testing each bit gets easy. You can also do things such as simulating logic and file formats with paper and pencil. Obviously, it gets harder and harder the more people there are working at the same project, but it still can be done.
It's the biggest wtf in the industry that so many people have the "there are always bugs in software" attitude. It's so deep in their minds that that they actually allow them to happen! However, there is nothing magical about software that requires them to always be buggy.
Another problem I guess is that it slows down the development. Almost no management will tolerate such slow programming. Unless you do "X" lines of code a day, they'll think you are lazy, not careful. In a lot of cases they also don't mind selling a broken product because then it allows them to sell the upgrade, too, which fixes some of the old bugs and introduces a whole bunch of new ones.
Admin
I think even Schrödinger would agree that putting a cat in a closed box for 10 years will quite certainly kill it. (Unless you made a feeding hatch or something.)
And if it starts smelling, I sure hope for you the smell isn't almond-like...
Admin
In the modern capitalist 'make a profit whatever the cost' environment none of this is surprising. Here is how my experience of software projects go...
And so the cycle continues...
Admin
Emmm... what software do you write? "all the code paths"? You know that this is basically impossible in real life. Like mentioned above, it works only with really really small programs or maybe in little larger programs what are extremely important( used for example in space shuttles, where little mistake might cost lives ) and where cost for intensive code tracing and testing is affordable. That is why it only works in places like NASA, ESA, maybe CIA and NSA, where purpose is not profit. In 99.9% of places it will never going to happen, because it simply cost's to much and client don't understand why the cost is that high and choose a product what was created cheaply. And nobody want's to lose clients :)
Admin
Yeah, I'm sure at least one of the 25 or so people who posted before you was being sarcastic.
You might try using the "Quote" button so people will know who you're replying to - your comment doesn't make any sense without context.
Admin
Well, I didn't post that information to be impressive, just to refute those who think that only trivial software can be essentially bug-free; otherwise, I wouldn't have bothered. There'll always be those who won't believe it or don't want to believe it, and I've no interest in debating with them. I was just backing up the guy who was getting disparaged for blaming developers for bad code.
I am, however, fascinated by your attitude that someone who is demonstrably good at writing code is not worth listening to.
BTW, for the OP who asked: my definition of a bug is anything that fails to be as intended, no matter how trivial. In fact, one of the two beta-test bugs I cited was a bug in a bit of diagnostic code that was not technically part of the production system (it failed to correctly calculate memory use).
This is the absolute truth.
Of course, there are always bugs in most software, not because it's inevitable, but because there are so many people taking money for writing software when they're no bloody good at it. This very web site offers an abundance of examples of that.
Partly, this is because there is far more software to write than there are good programmers to write it. Partly, it's because software development managers often haven't a clue which of their programmers are really good and which aren't. Partly, it's because vendors, trying to respond to the demand for ways to get poor programmers to produce better code, invent ever more complex software development environments instead of simpler ones that are easy for poor programmers to master.
Admin
Actually, that's just a sound business practice. Paying 10k for a program that has a 1 in 10 chance of making you lose 1000k is still cheaper in the long run than paying 200k for a program that is perfect.
"I don't like it any more than you"
Admin
Nope. Add in RPG and you've got a winning combo.
You know I wonder if some sad, crazy son of a gun out there in the world went and turned RPG into some sort of web scripting language.
Oh for the love of God!
Admin
Doesn't matter what variable the derivative is in respect to because y = 0.
Admin
Hmmmm.
Just curious. What language are financial systems written in? I'd expect C/C++ but I've read job listings that include Java.
No desire to deal with that kind of stress but, as an investor, my interest has been perked.
Admin
Admin
Truly brilliant (not brillant). You've got me crying. What a great mid-day stress reliever. Had to print it out and post it above my desk. Thank you!!
Admin
For performance-critical systems, they use C. They do not use C++ (for reasons I can only guess at). Indeed, a certain Scandinavian company mentioned above will not even let their programmers use C99 ... because that would be unportable, of course. Never mind that all their core hardware is Sun.
In short, they spend so much time dealaing with CYA that they almost never make sensible technology choices.
If you're an investor, I'd suggest that soybean futures are a better way to go.
Admin
Jane Street Capital, a private investment firm (no clients, they work for themselves) uses OCaml and they like it. They got a bunch of fairly bright people there, and from what I gather their practices must be quite non-WTFy.
The only thing they haven't quite got is how to use C++ properly, since a lot of reasons they've cited for OCaml being better than C++ is simply due to the fact that they haven't read any Scott Meyers. Heck, I was really not amused by their supposed reasons for C++ being bad. Yet, even if for mostly wrong reasons, I think that their choice of OCaml (over C++) was good.
I have no connections with them, only read some of their posts on OCaml lists.
Admin
How about paying $50k for something that has a 2% chance of a $1m loss?
Admin
Admin
Admin
This is why I got out of safety critical systems.
Though you get less "deploy, deploy, deploy" pressure, the stress level when you're trying to find a bug that nearly led to a train being derailed is still more than I was willing to deal with.
Admin
Admin
Admin
Does it matter?
Who to?
Admin
In fact, paying $1 for something that stands no chance whatsoever of "making you lose" 1000k is also quite good value.
I don't know about you -- I'm just a simple country boy -- but if I were to be given the option of paying $200,000 for a program that is guaranteed not to lose me any money whatsoever (other than, perhaps, the $200,000 I'd sunk into it), or paying $10,000 for a program that will, on a one in ten basis, lose me $1,000,000, then I'm going to opt for the former.
Of course, I'm not the Federal Government.
Admin
Admin
I use C/C++ for the backend processing systems. Java is used for less performance critical areas, and VB/C# used for frontend desktop applications. You can also throw some mainframe stuff in there, but I reckon you're not interested in that.
Admin
I haven't done anything with mainframe or even mid-range in a pretty long time so it wouldn't even matter. I was just curious because the advertisements seemed to contain every variation and permutation of technology imaginable.
In a performance oriented situation like that I always thought the demands of the industry would result in a "best practices" that would eliminate everything but the most useful, for that implementation, technology.
Thanks for rounding everything out.
Admin
While that may be quite a feat in some circles, this entirely depends on what that software is doing. I can write 30K lines of C code for a simple logical process like text extraction (or file format identification).
This is a relatively simple process when compared to things like, for example, algorithmic execution of market orders, tax lot accounting, plesiochronous (kinda) sync. of EMS/OMS system with regard to Tickets, Orders, Executions, etc.
A system with only 8K lines of C can be many times more impressive than some other 30K line system - the number of lines have less to do with the complexity than the code itself.
Not to say what you have done is or is not impressive, or what you have to say is relevant. Personally, I believe that ALL bugs are preventable. Given enough time, and talent, of course.
James.
Admin
So are you seriously implying (like many others seem to do) that there is absolutely no way possible in this universe for a developer to actually design and develop an application properly with few or no bugs, at all?
In my experience, this defeatist attitude is mostly propagated by incompetent developers who either start coding without a proper design, or fail to consider various code paths or error conditions; and so assume that everybody is the same. Therefore, all development is bound to failure from the start.
I do not consider myself perfect in any way, nor I think I am such a hot-shot super developer, but I take pride in the fact that I have enough skill, talent, knowledge and experience that I can recognize potential pitfalls and failure conditions and maybe even a proper solution, with a bit more than a cursory consideration of the problem.
Admin
What makes you say so? English isn't my first language so maybe my delivery isn't good. But yeah, a statement like that makes you seem like a fucking genius in my eyes. Congrats. I've been programming for 25 years, so I guess not everyone feels I am an idiot.
In fact, maybe you can give me the basic math which tells all large software need to have bugs?
As I said, I've worked with a big team on a family of ERP software which is used by big logistics and manufacturing companies, and I am yet to see a module which couldn't have been divided into small pieces to be tested independently.
Obviously, we are interfacing with SQL Server and Crystal Reports and all that stuff, which leaves a lot out of our control. But still, I say it's possible to create software, no matter what size, which doesn't have a single programming error. I'm not saying it's easy or cheap. But I strongly feel that bugs are not something that should be automatically accepted, even though it seems to be the norm.
Admin
Admin
Worse than failure?
Admin
The Halting Problem
Admin
It would be wonderful if all the CS students would stop misinterpreting the Halting Problem to say a piece of software cannot be bug-free. In the first couple lines of the linked article...
"In computability theory, the halting problem is a decision problem which can be stated as follows:
Alan Turing proved in 1936 that a general algorithm to solve the halting problem for all possible program-input pairs cannot exist."
A basic understanding of English would preclude people from taking that to mean that it is not possible to have bug free software.
What Turing's proof means:
What Turing's proof does not mean:
While it is true that a general purpose algorithm to solve the halting problem for all possible program/input pairs has been shown to be impossible/nonexistent, that does not mean you cannot tailor one to your specific problem domain (cf. your own link, although you will have to read more than the first couple lines). Using the Halting Problem to excuse lazy code is ignorant at best.