The Whiz of Silver Bullets
ChelleChelle writes "In an entertaining yet well thought-out article, software architect Alex E. Bell of The Boeing Company lashes out at the so-called 'Silver Bullets' and those who rely on them to solve all their software development difficulties. From the article: 'the desperate, the pressured, and the ignorant are among those who continue to worship the silver-bullet gods and plead for continuance of silver-fueled delusions that are keeping many of their projects alive.'"
Microsoft Vista! It's the silver bullet for everyone! Where do you want to go today? TM
I'll probably be modded down for this...
It is our job as professionals to separate the hype from the reality. The parent is a troll....egads what has the software engineering world come to?
-ac
Seeing as how TFA mainly rants about XML (and only passingly mentions past "silver bullets" of the past), he should be complaining about the silver bullet.
I prefer my analogies in car or tube form, thank you very much.
In this case, if you under 18 years of age, I recommend that you buy a box of silver bullets or just plain vanilla lead bullets. Put the bullets into your revolver. Hide the revolver in your jacket. Then, walk into your boss' office. Fire away. You will not be tried as an adult since you are not a legal adult. Better yet, after you reach the age of 18, your criminal record will be wiped clean.
If you are over 18 years of age, you need to weigh the situation carefully. If you kill your boss, then you will definitely be tried for 1st degree murder. You may be eligible to submit a plea of insanity. Most states allow such a plea. Check with your lawyer before you start shooting.
If Vendors would stop preaching that they are the next 'silver-bullet' then perhaps this would stop. It is not the techs who decides what comes in and what goes out. It is normally driven by cost. And when companies say they can do all of X,Y, and Z at a lower cost then any competitor, the IT department gets screwed, and management looks at them with wonder because they provided a 'silver-bullet' solution to them.
There are no loopholes. It's either legal or it's not.
it is RUP, ITIL. Now everybody in the management swear by those. Naturally softwaer engineer are forced to draw nice UML diagram before those are sent in gigantic 98 pages document to the otusourcing team, for a change which should have taken at most 20 hours we get weeks of works. I would accept it if this was linked to an increase of quality of code, less bugs, and lower end cost. But this is not. Still this has been declared a success by our management.
C. Sagan : A demon haunted world:
http://www.amazon.com/gp/product/0345409469/
visit randi.org
<grab refreshing beverage>Coors Light
<message>made me want to drink a Coors Light - The Silver Bullet....luckily lust in time I realized Coors Light is terrible
</message>
</sarcastic +5 funny whoring>
actually I am happy to see you, however that is in fact a banana in my pocket.
Overheard while doing an internship at Logica CMG:
Manager: "This new project should be done with new project management methods, like UML"
Senior: "Uuh, you do know that UML is a notation for diagrams?"
Manager (irritated): "Yeah, of course I know that. You know what I mean!"
8 of 13 people found this answer helpful. Did you?
Sorry, I LIVE in a pretty small town in Transylvania (used to live in a slightly larger one), and software developers around here are all BUT immune to (the lure of such) silver bullets... ever heard of Cluj-Napoca or Baia Mare (or any of the software microbehemoths that start springing to life there) ?
By reading this signature you agree to not disagree with the post you just read.
I will admit that people like to find silver bullets. BUT, and this is where I get annoyed. It is not just management that preaches silver bullets! How about those that preach Open Source will solve all problems? Or how about Ruby? What about Perl, Java, Linux? And we get annoyed when people don't listen to our "silver bullets."
The problem here is that everybody has their own silver bullets, and if you don't happen agree then you think the other person is a bone head.
So let's stop the blame game shall we.
"You can't make a race horse of a pig"
"No," said Samuel, "but you can make very fast pig"
There is abselutely no problem sticking to your silver bullet.... Instead of choosing the right tool for the task, choose the right task for the tool. This also ensures you don't waste your time with web development as there is no tool that is right for web development, just tools that suck slightly less than the others. :)
/Lars
... - As the saying goes.
The problem with Silver Bullets is not the bullet itself - but the idiot behind the trigger.
Most of these Silver Bullets are great ideas, but give them to some moron who half knows how they work (and yet claims to be an expert) and they do the exact opposite of what they were intended to do, and because some PHB reads about in the industry pages, they just keep hanging in there like a millstone around our respective necks.
For any technology you can see outstanding implementations. But for every one of those there are ten other complete disasters.
And as the other saying goes - if you don't know who the moron is.....
Genesis 1:32 And God typed
An interesting article but one should be wary of dismissing a silver bullet on the basis of poor application.
My own experience of some of these bullets (UML, agile methods, etc.) within an organisation is that they get a small enthusiastic following who push it so far, implement maybe 20% of the technique then lose interest or regress under deadline pressure. They don't follow the bullet far enough to draw proper conclusions.
I'm cynical about most bullets, but some catch the imagination. I'd just like to see one of them, just once, properly implemented.
Incidentally, this isn't just an engineering article. Management suffers from the same tendency towards managerial silver bullets (and the same poor application). I guess many professions do.
.NET and thin clients feature heavily in my day to day role. Trying to argue that turning an existing C++ thick client with literally hundreds of dialogs into a web service based .NET application is pointless. Management believe that this is the way forward and therefore we have to deal with it. Now we're half C++, half .NET, half thick, half thin bastard child which consumes twice the resources of the old product and all the budget is allocated to business functionality so we can't complete the job they told us to start.
XML as the simple thing it is, works perfectly.
And every body knows that XML itself is no longer a silver bullet. It is too natural and integrated to not use XML where it fits in.
What I worry about is the huge stack of technologies that are currently being built on top of it.
Webservices being the biggest of those and worse the stuff that goes on top of that:
XML Schemas, WS-YouNameIt, BPMN, BPEL4WS
It reminds me of a few years ago when choosing java for an enterprise project meant that you had to use EVERY component in the J2EE stack, so that every single class was a EJB and every single call was a remote call.
Now most projects has learnt to stay away from the "classic J2EE" approach, but are instead falling for the next silver bullet which invites to make the excact same mistake using Web Services
Webservices are great and has their uses, but I have seen projects that subscribe to the idea that every single component in the project should be a webservice and orchestrated by BPEL. Good luck.
Don't blame inappropriate, blind, forcing of new methods and tools upon developers by ignorant, parroting managers on that methods and tools - those are someone's successfully deployed solutions which didn't work elsewhere, as they could had been expected not to.
The simple rule of the thumb is (Oh, no, another silver bullet incoming): listen to the needs of your "troops from the trenches", your developers. Each innovation begins with someone's "scratching own itch". If your developers don't feel the same itch as the inventor of the new method/tool, then they will certainly suffer under the scratch devised and produce net worse results.
Managers should be evaluated not based on total of changes ("improvements") they did but on the difference between the damage they did when they acted without real need and gain they made when their actions where appropriate. Beeing frantic is not desirable feat for a leader. We don't need CYA excuses ("Don't fire me, I worked hard, I am up to date, I introduced all this new buzzword-named things I found on Internet") but responsibility, insight, competence, awareness. It shouldn't be easy-wheasely cakewak beeing a manager and following the path of "blame others" as it seems to be today.
So, what's a 'silver bullet' supposed to be good for? Killing werewolves, right? (Or wererats or warehouses or werecanaries.)
Given that it's really only good for one extremely limited function, why in the world does a 'silver bullet' represent a solution to a wide range of problems?
Oh, so buzzwords can be used to disguise laziness and bad implementation? Where's the news? Even in his satire of XML (and don't you think I'm a big XML fan) he shows that he doesn't understand.
For one: 'utterance_in_a_state_of_speechlessness' should be 'utterance state="speechlessness"'
And further: Using sophisticated design techniques doesn't replace the work, but it can help a piece of software reach it's maximum potential. On the inside of every shop there is a silver bullet: It's called education. A model doesn't replace programming and somewhere beyond the ususal CRUD there's allways work to be done on procedural details - that's where part of the fun in sw developement is. Every developer worth his money knows this. If he where ranting at academics, I'd understand, but as far as I'm conserned he's preaching to the choir.
TFA is definitely not 'well-thought-out'. In fact it's a tad pointless.
We suffer more in our imagination than in reality. - Seneca
Fred Brooks original silver bullet paper
I am currently involved in a lot of remediation of silver bullet stuff. Don't get me wrong. I love XML, get a lot of milage out of using UML to drive MDA tools, am an advocate of publishing web services etc. The problem is, so much of it is done in an ass hatted way. And then I get called in, late in the project, to tell folks exactly how screwed they are.
The root problem is people using tools they never bother to even vaguely understand. If you aren't going to bother to understand the technology, please don't use it. Please, I'm begging you, you'll just screw it up. Or at the very least, find someone who *does* understand the tech to advise you.
Apart and aside from the fact he sees little or no value in things like objects or IDEs, he writes in an inpenetrable victorian style. It's either fine satire skewering the irony of luddite technologists, or the poor guy just doesn't have a clue how laughable his essay was.
As he snarkily pooh-pooh's the distribution of realtime stock and financial data as a web service, it's probably the latter. I used to work for a company who ran their own ticker plant and had software on the desks of almost every stock broker, investment banker and forex trader on the planet. The client/server requirments of the system were immense. The client had to be maintained on Windows, Sun, Mac and was being slooooowly ported to linux, was fragile as hell and a pain to install and upgrade. The server was a farm of eight midrange Sun or AS/400 boxes, fed by redundant T1's from the ticker plant, and this would only accomodate two or three hundred users.
Then we went to a web-based client, sort of like AJAX before people started calling it AJAX, and all the headache went away. It's not a small or trivial thing, and it radically changed the way business was done, and for the better.
Just because it's new and has a buzzword doesn't mean it's a flash in the pan. The moral of the story is to use your judgement, and avoid formulas. Even tried-and-true ones. Silver bullets may not exist, but technology doesn't stand still, no matter how many hours you've sunk into learning emacs and gdb.
SoupIsGood Food
Clearly a hunter loot.
Either you know what you are doing - or not.
There can be few examples of an advanced industrial activity in which the ultimate decision-makers know so little about the technology involved, and have so little respect for the opinions of those who do.
"Hope springs eternal in the human breast" - indeed, in business (and especially sales) optimism is highly thought of, and realism often denounced as "cynicism" or "negative thinking". This is all very well in activities involving human beings, who can easily be manipulated through their emotions. However, it fails utterly when confronted with the cold, hard facts of the physical world.
When someone seems to be unrealistically hopeful, we speak of "getting a reality check". In other words, finding our noses hard up against the brick wall of ineluctable, unarguable facts. The problem with most software development projects is that the ultimate decision-makers - those who have the gold and, therefore, make the rules - are very rarely able to get a reality check until the project runs out of time, money, or both. They are hopelessly ill-equipped to make reasoned, educated judgments based on the arguments presented by vendors, analysts, and their own technical staff. So it's hardly surprising that over-optimism tends to creep in.
I have been giving talks about software engineering for about 20 years now, and I usually stress the fact that "there are no silver bullets". This warning is always greeted by vigorous nodding, knowledgeable smiles, and sometimes applause. Afterwards, I sadly feel, the people who have just agreed that there are no silver bullets go out into the exhibition hall or open their magazines, and resume... looking for silver bullets.
Ultimately, I see just two ways out of this dead end. Either decision-makers take the time, trouble, and mental effort to learn the necessary basics about software development and maintenance. Or they start choosing technical managers and architects who really know their stuff - and trust them implicitly. As time goes by, I hope that both these things will happen more and more.
I am sure that there are many other solipsists out there.
I know this is nitpicking but how can one have an article that uses superscripts for references but not links?
Do I fault the author or the publisher?
I think you mean 'half-assed', unless your problem is getting rooted by script kiddies.
Ah. I stand corrected.
In general, it is safe and legal to kill your children. -- POSIX Programmer's Guide
I started out learning flow charts.
I migrated to strucured software development and PDL.
I learned Yordon-Demarco data flow diagrams.
I learned and began using UML.
It seems like we learn new technologies every few years that bring incremental improvements. However, software development is still stuck in a very manual, very craftman-like paradigm.
I too worked on a project that thought XML and web services were the solution to all the problems of man and machine. All must be controlled by the BEPL.
A one size fits all solution (common with silver bullets) is NOT the answer. We need to think beyond that and use ALL the tools at our disposal.
When will software development really achieve the gains that it is capable of? When will it be a mix between the skilled craftsman creating the low-level, optimized components, and the journeyman creating the final product from skillfully reusing the stable, optimized, well-tested components (or objects or libraries or web services)?
If we equate "Manager who buys into this crap" with the werewolf, and watch as said manager's project(s) fail miserably, in the end, the silver bullet has/will effectively done/do its job.
Opinion:=TMyOpinion.Create(Me);
I've seen programming paradigms come and go (structured programming). I've seen management techniques come and ago (PERT charts). I've seen technologies that had gone come back again (virtual machines) and even some that have gone come back (centralized computing services). If punch cards come back, I'm retiring to my cave.
There is one thing that seems constant: The mix of successful, marginally successful, and just plain failed projects feels the same as ever, even though I'm positively sure that our knowledge of how to create software is much greater than it was.
The glass half full aspect of this of course is that the sytems we are developing are far more powerful and complex than what we worked on in the early 80s. Back then many projects were just collections of utility programs that were invoked from the OS command line and ran top to bottom. Structure those programs, and the problem of how to create software is solved, see??? That's why structured programming was the silver bullet of the 70s and early 80s.
Now, it's not uncommon for a "lowly" application programmer to have to deal with things like aynchronous processes, something that was the province of the lordly systems programmer back in the day. Ordinary applicaitons are as or more complex today than major systems were back then.
The other thing that is constant is that some people get it, some sort of get it, and some don't get it a all. But the common shibboleths of our profession are freely available to all, level of englightment not withstanding. The difference is the lower the level of enlightenment, the more those things take on the role of totems and fetishes.
I've been looking at jobs listings recently, and curiously they never seem to be looking for charactersistics that would demonstrate that somebody "gets it". I've seen things like "Must have three to five years of programming with Struts." Now I have nothing against Struts, but I can see nothing about Struts that would indicate you need three years of hard labor to be able to work productively with it. After all, the point of all these frameworks is to make things easier. I can see "must have thre years working with distributed transactional systems", or "must have three years of experience with security on web applications", or "must have three years of experience with designing user interfaces."
I'd rather call things like the XML or web services craze "technology fetishes" than "silver bullets". A fetish is "An object that is believed to have magical or spiritual powers, especially such an object associated with animistic or shamanistic religious practices." Religious or technological, fetishes are for some aids on a difficult but rewarding journey, for others they're the promise of relief from hard work, thinking and risk.
Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
Reading this article has instantly solved all of my project management problems!
If you were blocking sigs, you wouldn't have to read this.
When you find a silver bullet, you usually end up shooting yourself in the foot.
The only true Silver Bullet is really smart people. I've seen it time and again. If a project absolutely positively has to get finished by a particular date, put the best people in your organization on the project and turn them loose. Even the mediocre people on the team will start performing well above their normal levels. I'm not saying that adding new tools and technology won't help. I'm saying that adding really smart people will do far more than tools and technology.
If that doesn't work move on to:
$BULLET won't help you BECAUSE your programmers are retarded.
If that still doesn't have any effect...
$BULLET won't help you because your managers are retarded.
For BULLET in "Structured programming techinques" "Top down design" "Bottom up design" "Object oriented programming" C++ java XML "six sigma" "agile (or extreme) programming" scrum
I'm trying to teach myself to set people on fire with my mind... Is it hot in here?
He rants about UML as well, and the effects of UML and XML and WSDL and WebServices and design issues such as strong typing versus weak typing, although I couldn't figure out if he was for or against weak typing. For API/integration layers, I prefer "weak" typing, as your API becomes cleaner by passing more generic data. I've personally seen a project where the integration API was around 400 methods defined for the API to essentially support about 5 functions, because there were multiple parameters possible for each call.
What he was really ranting about was the "integration" problem, via data modeling, protocols, and architecture, and the fact that all the silver bullets for this have pretty much just shifted the burden of real work somewhere else. I agree with him on this. Whether that was intentional, I don't know, but everything he lists was pretty much spot on for integration. (He did mention a couple of side uses: XML for configuration and UML for Use Cases which do not necessarily apply to integration).
I recall one project where we had to write the design doc and use cases for a bit of code first, to follow process. The problem? Well, this particular design was an adapter for a properietary internal undocumented API. That means that to be able to write the design doc accurrately, we had to write the code.
Process violation! Alarm bells going off. Men in black suits swing down from the ceiling.
Ok, so it wasn't that bad - but we wrote the code while doing the design doc, and then spent the 4 weeks of "build" time refactoring the code to actually be maintainable at a leisurely rate. Actually wound up being a win-win situation. The only reason we were able to do this was because the normal UML guys (BAs in our case) were completely clueless about the internals of the system and didn't even know where to begin drawing use case diagrams. Otherwise, I'm sure we would have gotten a nice set of useless diagrams like "user sits at computer", "magic happens", "user happy", please fill in "magic happens".
The cesspool just got a check and balance.
When all you have are silver bullets, all problems look like a werewolf.
"I am the king of the Romans, and am superior to rules of grammar!"
-Sigismund, Holy Roman Emperor (1368-1437)
Other things to try are
1) Stake thru the heart
2) Garlic worn around the neck
3) Holy water
4) Crucifix
5) Sunlight
try { do() || do_not(); } catch (JediException err) { yoda(err); }
Amen!
...). I forget how many "methodologies" I have been exposed to.
You are right on target. I have confused users with my creations for 2+ decades. I know over 10 languages, have been taught 15 or so, am currently conversant with about 3 (not counting markup constructions like HTML, XML,
Heck, when I worked for "HAL" we had a week long course on methodology. If fully implemented with all the requesite documents at each stage, all you would have is a CD full of documents and no product (no time).
I agree with you especially on job listings. These things are NOT written by the people who have a clue. They are more like shopping lists. HR asks for a skill set, some middle manager asks his workers what they know or are using (he doesn't know), that list is passed back, and HR tacks on 1-2 years for junior, 3-5 for intermediate, and 5+ for senior. And that is where you get silly things like "must know Java 1.4.02", like knowing 1.4.01 makes a person un-qualified. Yeah right.....
And the constant chase for the next best thing (management and techies). Had a manager which took a course in Total Quality Mangement (TQM). TQM, it seems teaches constant positive feedback. So every week I would get a memo telling me how good I was. The breaking point came when he called me into the office and asked "So what good thing did you do this week?".
Or the "Five Habits of Successful Suckers" series.
Yeah, it's a rant. I am SO tired of this bullshit. Give me a job, let ME interview the customer, get the F out of my way and let me complete the work.
- - - - - - - - - - -
I am a programmer. I am paid to produce syntax not grammar. Deal with it.
I tagged this story 'werewolf' :)
Whoo, signature!
DesireCampbell.com
--clickety--
Company policy against that sort of thing you say? I'm not sure, you'll have to look in the backup vault, in case we had it archived.
--slam--
Yow! I'm supposed to have a plan?
I enjoyed the snarky and smart tone of the article. And I largely agreed with everything he said. However, I implied from his remarks (and comments here) that he could count the Xtreme Programming and agile methods among the false promises of the silver bullet. And I have heard them referred to by people I trust as silver bullets.
Before we start a religious war on whether XP/agile are silver bullets or not, let's step back and ask whether we're talking about different things. I think there is no silver bullet that will kill a software monster created by Big Up Front Design (BUFD).
It's a good thing to put serious, deep thought into what must be done before one starts work. You have to do your homework and you have to write down everything you know for certain up front. Trouble happens because after some point up-front design becomes mere speculation. You have to somehow confirm early design decisions made when you're ignorant.
In the old days before computers, Engineers built prototypes to do that. Nowadays, Engineeers (or the pointy-haired bosses who lead them) are addicted to the notion of "shipping the prototype."
I personally favor the notion of capturing "user stories" because stories have a way of separating "what" from "how" and stories are an effective way to communicate pertinent details between customer and developer while skipping over one's ignorance.
A trouble with BUFD is that it becomes a "proclamation" about software from the developer (or customer, depending upon the power-relationship). If we were gods, that would not be a problem, but we have limited knowledge and we have sort our our ignorance. But we're not and I think a "conversation" between the two is a more effective way to sort out what's wanted and what's possible.
In a "conversation" the software monster never grows so big that the ammunition in our clip (UML, agile/xp methods, high-level languages, today's microsoft buzzword) can't kill it.
position: relative;
Use it in every element, it is the silver bullet to fix every CSS bug that IE contains.
Your ignorance is infinitely greater than you realize.
FYI, you need to update your talking point. The Supreme Court has already held that executing minors is unconstitutional. See Roper v. Simmons.
If you don't know where you are going, you will wind up somewhere else.
For a couple of years now, i've been entertaining the theory that a great many people in IT (especially managers) have trouble dealing with tradeoffs, side-effects and feedback loops whenever a choice has to be made on how the development process is to be setup/changed. The longer the chain of side-effects, the more complicated the feedback-loops or the less self-explanatory/measurable the tradeoffs, side-effects or feedback-loops are, the more likelly they will be ignored or not understood.
Hence the common practice (in some countries) of selling impossible deadlines to customers and then using overwork to (try and) achieve those deadlines, when, via the "tired developers make more bugs" and the "low morale" negative feedback loops, overwork usually leads to LONGER development times and a long tail of bugfixing after release but before the software is accepted for production.
The same theory could also explain the recurring reliance by some managers on the next "silver bullet" to solve all their problems - silver bullets are always sold as solving everything and having no downsides (thus no tradeoffs) and no side-effects (and thus no negative feedback loops).
For a couple of years now, i've been entertaining the theory that a great many people in IT (especially managers) have trouble dealing with tradeoffs, side-effects and feedback loops whenever a choice has to be made on how the development process is to be setup/changed. The longer the chain of side-effects, the more complicated the feedback-loops or the less immediatly obvious the tradeoffs, side-effects or feedback-loops are, the more likelly they will be ignored or not understood.
Hence the common practice (in some countries) of selling impossible deadlines to customers and then using overwork to (try and) achieve those deadlines (via the "tired developers make more bugs" and the "low morale" negative feedback loops, overwork usually leads to LONGER development times and a longer tail of bugfixing before the software is accepted for production).
The same theory would also help explain the recurring reliance by some managers on the next "silver bullet" to solve all our problems - silver bullets are always sold as solving everything and having no downsides (thus no tradeoffs) and no side-effects (and thus no negative feedback loops).
When I finally got someone at Wal Mart to open the glass case, the dude asked "how many boxes?" After the big production to get at them, I meekly asked for one box, but I thought of saying, "How bad a shot do you think I am?"
Back to the original topic, Brooks lists "High level languages" as a "Silver Bullet" -- they are perhaps not a silver bullet, but I am hard pressed to doing everything in macro assembler. OO is perhaps not a silver bullet, but I am so accustomed to that feature that I am reluctant to give that up either.
The one doubt I have about OO is that there will always be a need to bundle data with functions that operate on that data, and the Lisp/Haskell/OCaml people keep talking about closures and related things. I have the uneasy feeling that if OO is not the silver bullet it is then the silver hammer (everything looks like a nail) and that we are reinventing things that had been figured out in Lisp with OO, UML, Design Patterns, and all of the crazy things we do with objects.
If what your really need is to pass a pointer (OK, OK, reference) to a function conforming to a desired signature and what you end up doing is defining a class, creating an object instance, and passing an object reference to get such a thing to get at that one function, OO is the modern Cobol -- it has the functionality you need, but you have to type in a lot of boilerplate code to get it.
I've seen programming paradigms come and go (structured programming)
Structured programming is gone? I hadn't noticed.
I've been looking at jobs listings recently, and curiously they never seem to be looking for charactersistics that would demonstrate that somebody "gets it".
How exactly would you phrase that in a job listing? "Only people who 'get it' need apply"? Determining whether somebody does in fact "get it" is clearly best left for interview.
You must have modded yourself up - there's no other explanation.
TQM, it seems teaches constant positive feedback.
Actually, I remember the TQM craze well. However instead of learning about it from the trade rags, I decided to read Kaoru Ishikawa's book, "What Is Total Quality Control?: The Japanese Way". Dr. Ishikawa is the creator of the infamous "fish-bone" diagram.
The interesting thing about Ishikawa's book is that if you had to boil it down, it wasn't about tricks that would magically give your products "quality". Oh, there are some chapters on how to understand what customers' real requirements are (thus the fishbone diagram). But they aren't the heart of the book.
What the book really is, is a primer on character. And according to the book the bedrock characteristic of a quality producing organization is integrity.
It does no good to understand customer requirements if you don't understand your own products and processes; and you will never understand those if you fear the truth and you discourage its spread. So the first thing you need to do is eliminate the culture of fear: fear of failure,mistakes, and plain old bad news. Once fear is eliminated from the organization, useful information begins to flow. In Ishikawa's vision of the quality organiation, fear of the truth is the greatest enemy: victory in competition goes to the organization that discovers and rectifies its faults the quickest.
Which is why it is foolish to motivate with praise, particularly undeserved praise. I've never met an engineer worth his salt who really enjoys getting personal praise on more than a occasional basis. The good ones are more motivated with the prospect of becoming better. Praise has its uses; mainly to help maintain a realistically balanced view in the painful process of self improvement.
Manufacturing is different than software development. But it is true that the integrity and fear play a huge part in determining software quality. Some day I will write a book: Why Good Engineers Write Bad Software. The number one reason has to be this: not facing reality. This leads to the number two reason: not doing what you know you should be doing.
Both of these proceed from fear. A software development organization that eliminates fear eliminates the number one barrier to achieving its potential. In the end, the personal qualities of courage, compassion, and integrity that we bring to our work matter much more than any methodology.
Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
Structured programming is gone? I hadn't noticed.
It is no longer a fetish.
How exactly would you phrase that in a job listing? "Only people who 'get it' need apply"? Determining whether somebody does in fact "get it" is clearly best left for interview.
For examples, see my original posting. Let me give you an example of why the way job listing are usually written are broken.
Suppose you use WebWork in your application. So you say, "Must have three years of experience with WebWork". Now you have three engineers. Engineer A has worked on a WebWork based application for three years, although he has mostly been coding business logic POJOs. Engineer B has five years of Struts experience, and in the last six months has converted an application from Struts to WebWorks in anticipation of WebWork becoming Struts 2. Engineer C has been programming Java MVC applications for the web for ten years. He lead the development of an in house MVC framework in 1998, and has periodically done evaluations of Struts and WebWork, but neither has enough of and advantage to convert from the in house framework.
Under the criteria you have the job, only the least qualified candidate is going to get an interview.
Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
After seeing the word "silver" used for the 29th time I'd say he was guilty of depending on a gimmick in his writing.
I am surprised Mr. Bell did not mention the latest wave in Software Development, "Meta" Silver Bullets, ie nebulous heuristics which are neatly packaged and given an MBA friendly label. Currently the mother-of-all Meta Silver bullets is "Agile Development" , which has only proven successful for the guys who write books about it and sell seminars on the subject.
When the problem you have is a werewolf, all your tools look like silver bullets.
If you don't get it, think of it this way: When your problem is driving a nail, all your tools look like hammers. Yeah, you can drive a nail with a screwdriver (if the nail is small enough) or a wrench, but hammers work better.
But in software development, most problems turn into werewolves eventually, so...
My viewpoint on the article is that the author got what he deserved. He gave out a
vague description of his problem so he got a vague solution back.
He gets what he deserves!
I'm starting to get extremely annoyed when bosses just say "implement configurable behavior" or "just make the system work right" or "just use your best thought" and then come back to you compiling that the system doesn't work right. Of course it doesn't work right. The boss didn't put any thought into what he actually wanted!! This is why design documents are a waste of time. They are completely unrelated to reality since reality WILL BE THE CODE!! So program smart, program agile/XP/http://martinfowler.com/ieeeSoftware/con
Cheers
Ben
I think a lot of this comes down to the 'solutions mindset' vs the 'tools mindset'. A 'Solution' is self-contained, operates itself, and requires little thought. A 'Tool', on the other hand, requires a wielder (or operator), may need other tools to be effective, and requires thought and skill to use.
The problem is that computer technology, by and large, is much more a tool than it is a solution, while management tends to gravitate towards 'solutions'.
Most 'silver bullets' are in fact useful tools, if treated as such. When treated as a solution, they always come up short, because no tool, by itself, is a full-blown solution. The result is that management ends up using and discarding one silver bullet after another, rather than concentrating on gathering a useful set of tools and a group of people capable of using them skillfully.
I didn't much care for TFA, as I thought he was as simplistic as the people he complained about.
/. and elsewhere trying to understand what it does for me. Thus far I'm not impressed. Much of what the zealots point to as strengths, I already have using VS.NET wizards with ASP.NET 2.0. I can drop a data connection on a page, and I can have it automatically implement the CRUD functions when I attach the connection to an editable grid view, etc.
You're right, people who propose that Open Source is the secret to all problems, without really understanding what the problem is and have no answer as to how Open Source could solve that, are problems.
The same is true of any technology. Obviously the reason why a new technology was created because somebody perceived a problem with the old technology. Why do we use XML rather than comma-delimited files? Because XML includes definition of the data, rather than having to also ship a seperate document which describes what's in the CSV file.
However, the other truth is that new technologies introduce new problems. It may be slower to parse an XML file than a CSV file, the XML file may take up much more space on disk, etc. Are these problems show stoppers for your implementation? That depends.
That's the key. It all depends.
I think what TFA was really complaining about, when he gave the example of the using XML for configuration, is that there was no detail as to why. Why was XML chosen instead of other methods?
All technologies suffer from this, and the problem with zealots is that they fail to address those issues.
I keep following the Ruby on Rails discussions here on
The wizards work great when you are tossing together a sample, or a very simple application. Where they fall down is because most apps aren't that simple, and you start having to do joins and manipulation of the data and such, which is why we build our own custom data layer.
What I haven't seen from the zealot's discussion is evidence that they've gone beyond the simple applications yet.
The same is true of the marketers. If you go through an ASP.NET training webcast, they'll show you the wizards too. They want you to think how easy this all is... woo hoo. buy it now. The reality is a bit more complicated, but there are aspects of the easy stuff you can use, like binding a grid to a dataset or better yet a collection of business objects. It just isn't as easy to demo and market.
I'm open to any new technology, but I'm going to think through it's ramifications. While I don't like people who advocate a hammer for ever screw... I also don't care for people who argue for the devil we know and lose track of the benefits of the new devil.
we are reinventing things that had been figured out in Lisp with OO, UML, Design Patterns, and all of the crazy things we do with objects.
;)
We are even reinventing the design principles behind the Lisp syntax.
USE HOT GRITS WITH STATUE OF NATALIE PORTMAN (NAKED AND PETRIFIED)
There is one thing that seems constant: The mix of successful, marginally successful, and just plain failed projects feels the same as ever, even though I'm positively sure that our knowledge of how to create software is much greater than it was.
For a given value of "our". As you point out, some people get it, some don't. The people who don't are called "managers".
The older I get, the more convinced I become that certain types of brain damage are common amongst managers. Toward the end of his life my father had a series of small strokes that damaged his temporal lobe. Although he could still read and write, carry on a conversation and do some kinds of reasoning perfectly well, he more-or-less lost his ability to estimate the time a task would take, to sequence events, and to understand that simultaneous actions are exclusive (that is, while a person is doing X they cannot at the same time be doing not-X.) My mother actually noticed the first effects during a trip when he suddenly became incapable of understanding that it was going to take five hours to get between points A and B. He could follow the argument, but the result was meaningless to him.
I have observed exactly the same deficits to be common in project managers. I think it might be instructive for one of these groups doing fMRI studies to have a look a manager's brains and see if they have any temporal lobe deficits. It would really explain a lot.
Blasphemy is a human right. Blasphemophobia kills.
Indeed. My take on all this is that people just don't care all that much about whether a given project is successful, or whether the product is any good. Sure, they'd like it to happen, but it's not all that important to them and they aren't going to go out of their way to make it happen. The industry seems to encourage this attitude.
After all, there will always be another project after it, so you'll still get paid. And if the product sucks, you can simply delude yourself that it didn't, by revising your objectives to match what was produced. Finishing the project is the only thing that counts, not how well it works or how much better it could have worked.
My friend Bill and I made a serious study of this several years ago. We had a blinded pair-wise taste test of beers, which included all premium beers available in cans in Sna Antonio, some 16 brands at the time. These were poured by Bill's wife Linde into identical chilled mugs and the tasters were blinded.
In an attempt to assess the reliablility of the ranking and the reproduciblilty of the test (kappa statistic), many pairs were re-tested.
After over 400 pair-wise taste tests, the winner was, believe it or not, Schlitz Beer. I was stunned. I always viewed Schlitz as a rather low class piss, but was I wrong. Interestingly, Anheiser-Busch products occasionally scored well but exhibited marked variablility in quality, apparently from batch to batch.
Coors scored poorly - next to last- which happened to confirm my opinion of the company and Mr. Coors' politics
P.S. I usually drink St. Pauli's at my house, but in the cooler on the boat, it's no longer blue runners but Schlitz.
IBM is developing memory storage that is essentialy the same as punched cards on a microscopic scale.. http://www.zurich.ibm.com/st/storage/millipede.ht
Hope you cave is well furnished.
-- Senior Software Engineer, Attorney appearance services, locallawyerapp.com.
Look, now, it's *vampires* that are from Transylvania, not werewolves. Silver bullets work on werewolves, not vampires. Vampires need a stake through the heart or sunlight. Now get it right, dammit, or everything else you say is meaningless.
Terrorists can attack freedom, but only Congress can destroy it.
I think what he was referring to here about HLL, OO, and the other technologies you cite is that, at their time of inception, they were considered THE "silver bullet".
Think back to when all your examples were first introduced. They were touted as the fix-all. After the market hype died down, technical folks were able to sort the wheat from the chaff and figure out just WHERE in their processes these new technologies could fit (if at all!).
It was only after this point in the "solution lifecycle" that the tech became indispensible, because it FINALLY was just used to do what it was good for, not everything management and vendors billed it as.
Quidquid latine dictum sit, altum sonatur.
But good coders were basically writing OO code before the language was inforcing for them. They just used different buzzwords. Calling Functions on data structures is an awfull lot like calling a method of an object.
John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
Been there. Done that.
I'm convinced. I'm gonna trade in my oversold silver bullet for a golden hammer!
Table-ized A.I.
I believe military history and military science have something to help us illuminate this issue.
I am a reader of military history, and I recall reading about the German 81mm mortar in WWII - about how the allies conducted studies into its design after the war, as they wanted to find out what the German "secret" for such an effective weapon system was . . . the secret was, there was nothing special about the 81mm mortar - its crews were simply well trained, highly motivated, and well led.
The Germans did more with less, beat materially superior opponents consistently, and maintained tactical superiority up until the last moments of the war - I believe there is something to be said for all this (moral/political/personal opinions aside) and one of their core philosophies was that it's not the weapons, it's the men.
Now, the historical points I have brought up are debatable, however, I am convinced that the fundamental idea stands:
It's the Men, not the Weapons.
MRH
SARAVA!
Sorry to be off topic, but could you please contact me cmr.Pent(a)gmail.com or somehow tell me your email? It's regarding FastDIB library.
The character theme is one that is in Stephen Covey's "7 Habits" books. In Principle Centered Leadership, for example, he emphasizes that you cannot be a good leader without good communication, which requires trust, which requires that you be trustworthy. I'd recommend the book for anyone in a leadership role.