- 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
"As I spent the next week pouring over the documentation templates"
Like I was saying...
I'm sure there are more eggcorns in this masterpiece.
Admin
Try chairman of the PLO and former PM of the PA. Either this forum is run by terrorists, you are a terrorist or all those people telling us to be scared of terrorists are terrorists. Either way I'm frightened.
Admin
Admin
or this http://en.wikipedia.org/wiki/Grilling
Admin
Admin
TRWTF is that your company's website has contact details in a background image, including "www.inedo.com". O RLY IS DAT TEH WEB ADDRESS I'M ON??
Admin
How do you know what was intended and agreed to?
hit by a bus == hit by a meteor == had a heart a attack == became the unabomber 2.0 == quite and moved to katmandu
You don't actually have to handle each case where a developer suddenly becomes unavailable as a separate case.
Admin
Clearly you are not visiting the correct website if you believe the contact details are stored in a background image.
Admin
Enough with the circular arguments, strawmen, and cherry picking. Sheesh. Why didn't you address this question:
"What's the likelihood of everyone with domain knowledge being hit by a bus? Is it worth the cost of managing that risk?"
Admin
3 Weeks Ago on Thursday: No TDWTF 2 Weeks Ago on Monday: No TDWTF 1 Week Ago on Tuesday: No TDWTF This Week on Wednesday: No TDWTF
Admin
You didn't address my question either, you avoided it. Your 'comment' about why can't it be 'moved to katmandu' implied you saw those as separate cases which needed to be addressed first.
However, it isn't very likely that everyone on a given project shares all knowledge with everyone else.
Generally speaking you want to avoid having a person who is the only source for some information. This will happen anyway but you want to avoid it. One way of doing that is documentation.
If it is worth managing the cost of that risk depends. Thats what risk assessment is about. For a website that 2 people read, probably no. For an application which is used by 50000 users then most likely yes. How you actually come to the conclusion of what constitutes enough risk is not an exact process.
Admin
Admin
Not to mention people you need may not be around for other reasons. They could be on location, work different hours, be on vacation... If I lose a day because I can't ask a Fred an important question until tomorrow then that is an expensive question.
Admin
Admin
Admin
I wonder if the reason the project management team asked for the database table design was because programmers would just start coding without thinking things through first. At least this way they would be forced to stop and write something
Admin
Admin
Admin
You don't always have access to "good programmers". Good programmers tend to be in the minority. However it still holds for good programmers. In fact good programmers start by making a design even if the throw it away. Actually that could well be the difference between a programmer and an "engineer" (developer or whatever). A programmer just goes in and does stuff.
Forcing pointless documentation will still be pointless in any situation. The point is documentation isn't always pointless. Forcing a particular form of documentation is also a way of making room in the process. If you don't ask for it you may also be cutting into valuable design time. Let's not forget that a bug in production is massively more expensive than one in development.
Admin
Admin
Admin
Good luck with that strategy. Repeat customers tell you are doing something right. Getting paid means they either can't or don't want to make an issue out of something. Not to mention the amount of poorly written contracts where regardless of what is or isn't delivered payment will have to be made.
Admin
Maybe you meant "How do you know what was intended and agreed to without documentation?"
I don't think he was implying that each case should be handled separately; I think he was simply seizing the opportunity to ridicule the old "hit by a bus" justification (which you have to admit is pretty unlikely to ever happen).Rather than argue about it, why not seize the opportunity yourself? People almost never get hit by buses, but developers leave companies all the time. So if you really want to defend your apparent position on documentation, abandon your hypothetical "hit-by-a-bus," and embrace frits' practically-guaranteed "left-the-company."
Admin
I don't mind, but that is not how I read your comment. From now on I will speak about developers falling in love and moving to Tahiti.
Not a strawman. It's part of the whole point of documentation. Also, you did imply this by saying you could just ask the developer for clarification. Either way it's a situation which happens all too often and can be alleviated by documentation. Not by useless documentation, but by relevant documentation.
Admin
You forgot: This Week on Tuesday: No TDWTF
Admin
Having long ago worked in food services let me help out here.
Grill - a device used for grilling Broiler - a device used to broil things and some times make toast Oven - used to more often than not bake or roast something Smoker - usually made out of an old refigerator and user to slow cook something and saturate it with the flavor if the wood used and it's own juices
BBQ - more often than not means it has BBQ sauce on it and not how fast or slow it was cooked on the grill
I only saw a couple of good comments, but it seems like the older I get and the longer I've worked somewhere the more I suck. Whereas a lot of people start out sucking, but I think maybe the ones that already suck don't burn out and suck more the stay at a steady level of sucky...
but then I do work with Paulla the brillant
Admin
I agree with your definition, but then nobody said anything about "BBQ". The reference was to "barbecue", which is unrelated.
Admin
I think he meant just what he said, "read-only," as in once you archive it you never modify it again. "Write-only" implies that it won't be a useful reference later, which is not necessarily the case.
Admin
Umm, whether or not you believe that the Bible is historically accurate, you must surely concede that it is a widely-published and widely-read book. Therefore, if it includes a word, by definition that word is part of the language. (If you're talking about an old translation, we might say that the word is obsolete, but it was part of the language at one time.)
If a widely-read fairy tale -- Grimm's Fairy Tales perhaps -- includes a word, I think we'd pretty much consider that by definition that makes that word part of the language.
Dictionary writers do not invent words: they discover words. A word must be part of the language before it is included in the dictionary. It is not at all nonsensical to say, "The dictionary made a mistake by not including such-and-such a word: it is widely used in print and in speech." It would be totally nonsensical to say, "My dictionary does not include the word 'Internet', therefore there is no such word and anyone who uses it is ignorant."
Just because you don't like the Bible is no reason to get irrational about it.
Admin
Okay, here's one answer: On my current job, I am documenting systems and processes for a medium-sized financial services company that you've never heard of. I don't have anything to do with the company's products, I'm just dealing with internal stuff, including HR, the website, the phone system, the data warehouse, and so forth. A large part of the justification for my position is summed up as "continuity of business". Continuity of business is the "developer leaves with <= 2 weeks notice" scenario, whether you call it "hit by a bus" or "moved to Kathmandu" or "got another job that paid more". I started at this position in March of last year. By June, two of the three developers whose work I was documenting had taken job offers at other companies, and left.
Yes, it's worth the cost of managing that risk, because it's not a risk. It's a certainty: everybody leaves an organization at some point, and that is almost always done with two weeks or less of warning. The only thing you don't know is when this will happen. When they go, they take all of that stuff in their head and they walk out the door with it.
Admin
No.
Admin
C++'s type system has been designed with inheritance<=>equivalence in mind. If you derive from a base class, the derived class better be a total, no holds barred replacement for the base class -- in the sense that everywhere a base class can be used, the derived class can be used, too.
The circle-is-an-ellipse is basically a very poorly thought out OO example that some half-wit put in a textbook one time, and it ended up being perpetuated ad nauseam. It simply does not fit within the C++ type system.
If you're doing a project in C++, then Circle and Ellipse can surely derive from some base "graphical object/shape" class, but they cannot derive from each other (a Circle IS NOT an Ellipse, nor vice versa). A Circle is an Ellipse only in mathematics, not in C++. You can, of course, have an explicit Ellipse constructor that takes a single radius and produces a circular ellipse -- this would, nominally, obviate the need for a Circle class in most cases.
Suppose you're designing a 2D computational geometry system -- whatever you code for an Ellipse is just generalization of code that would deal with a Circle, so the Circle class becomes a premature optimization. If profiling shows that whatever code simplification is afforded by a circular Ellipse is worth it, then you can insert the requisite r1==r2 tests into the code that deals with Ellipses, as a profile-guided optimization.
Admin
The purpose of software documentation is to be an encyclopedia to the world that is the program or system. It should be a reference work that is useful to (a) new people who need to get up to speed on the basic concepts, and be shown some places to get started using or maintaining it, and (b) people trying to troubleshoot a problem or find out how to do something that the software does or that they think that the software might do but aren't sure whether it does and if so what it's called and how to do it. It should't be written in terms of itself. That is, jargon and new concepts need to be explained, not just thrown around. It should be written with awareness that things will change over time. Don't just ignore how things used to work, assuming that everyone is doing the new thing now; don't write about option x1 as if it is the only option or way to do Function X, or the person trying to get x2 to work will be really confused. It should be terse, but not an incomplete thing that pretends to be complete. For gods sake, that last point, if nothing else.... if not, or if it's just not going to be accurate or maintained, just delete it and do everyone a favor!
Admin
Admin
Admin
If one person has all the knowledge, you're managing things wrong. Proper teaming and sharing of the work can mitigate this risk. If developers can do each other's jobs, then the risk is everyone leaving at once--like I said originally.
BTW- I would like to have someone document my code for me. How can I convince my manager to provide this?
Admin
Admin
Software Development with Code Maps and a video on youtube
there's your diagrams.
Admin
I'd be happy to come and give your manager a presentation on the matter. On his dime, natch.
Oddly enough, it seems this is more common in companies which don't develop software to sell, but are big enough to have developers making internal systems. I supppose this is because the company is not just the developer, but is also the consumer. If someone else is losing time and money each time the system fails, you don't mind so much. When it's your money, it somehow seems more important...
I agree with you on the desirability of shared knowledge, but that seems to be hard to arrange in practice, and might not make much difference. Suppose you have half a dozen people with intimate knowledge of a particular system. Sooner or later, one of those people will leave, and their replacement will have to be brought up to speed. Since we all live on deadlines these days, this will usually be kept on the back burner until it's critical, ie, until someone notices that the last person who understands the system is leaving next week.
Admin
This is correct. There is a large difference between complexity of logic (programs that do advanced statistical calculations as an example) and complexity of application (lots of various functions, although all simple)
In an ideal world (read: unlimited time and resources) documentation would be exactly like that. A full set for each individual program version. However in the real world this simply isn't possible. Saying you don't accept "lazy programmers" doesn't solve the issue. Many times it's not a matter of level of effort but rather direction of effort. Does my boss want me to have detailed documentation that is kept up to date with every version or does he want me to fix twice the number of bugs in a given amount of time? In the vast vast majority of organizations, #2 is the option that is chosen.
Admin
I don't know - lots of code drives programmers to drinking.
Admin
Seriously, it's broil. BROIL. What rational person doesn't reference a cookbook first? </rant>
Admin
This only proves the second point of that section:
You read the same thing I read, but your brain added a piece of information that wasn't actually there.Admin
Well the Bible is vastly more widely published than any other book and is also one of oldest books still being published in many languages. A cookbook may well have been a typed out version of the notes your mother kept in kitchen when you were growing up and might contain any variety of words whose admittance into the English languages is iffy at best.
I'm not saying the original argument is a great one, but if you're referencing a book to show that a word is part of a given language (especially English), it's hard to justify a better choice than the Bible, regardless of your thoughts on it's spiritual or historical accuracy.
Admin
If you are going to write anything in depth, spend it on the specs up front for a better return on investment.
Documentation that says what the system is supposed to do is far more useful to me than documentation that says what it actually does.
My backup plan for missing docs is the code, but there is no backup plan for missing specs.
Admin
Alex does these every so often. I remember one on patters of failure from a few months back. Last year there was a good one on the Cravath system too.
I don't mind it from time to time, a nice change of pace.
Admin
See what happens when developers reach outside their ken?
a 2X4 is 1.5" X 3.5"
you need a better analogy, how about a yardstick is 36 inches? that'll work, if you are inside the US
Admin
Or are you trolling for a religious debate on an IT-related website? Oh wait, I don't care.
Admin
tear of joy
Admin
The definitive example is "clbuttic", therefore the word should be dosemenentation.