Fog Creek Software
Discussion Board




Can do anything with software

I've heard managers say too many times, "Anything can be done in software" when discussing new projects.

How do you respond to this? Do you really think there are no limits as to what can be done with software?

XYZZY
Friday, July 30, 2004

Anything is impossible until some comes along and does it.  Therefore, anything can be done with anything including software.

OP
Friday, July 30, 2004

My VP likes to say...  "It's just a matter of time, talent and money."  How do you argue with that?  When miracles are required, it just comes down to the fact that I don't have the requisite *talent*.

bpd
Friday, July 30, 2004

I remember being in a meeting with other developers and managers, and they wanted some sort of task done, and all the (non-college educated) developers were saying it would be easy. And folks hated when I got up and started explaining that not only wasn't going to be easy, and that this was an np-complete problem. It took about an hour to explain why the problem was exponetial in time executed, what that meant, and why if the marketing folks got the growth rate they were looking for, they would be looking at taking several years to run each days processing.

Can you do anything with software? A sarcastic cynic would ask your program to fetch him some coffee.

Sure, a lot of things can be done in software, but it may take a long time to do. There are a lot of problems that can be turned into a travelling salesman problem, and that takes n! time to solve.

Cream and 2 sugars please.

Peter
Friday, July 30, 2004

Stand up, piss on his desk, ask can this be done in software?

old_timer
Friday, July 30, 2004

Simply tell him that it's true, and it does only take time, talent and money. Say you'll provide the infinite talent required when he provides the infinite cash and money.

Andrew Cherry
Friday, July 30, 2004

I remember reading an article recently where all of the "educated" folks were arguing that something couldn't be done. 

It's a good thing that this guy was stupid enough to believe that he could do it, because he actually got the job done. I forget who it was, something about making CPU's run at faster cycles.

Wayne
Friday, July 30, 2004

Too many times a programmer will say that it can't be done when he really means:

1) I think it's a stupid idea
2) I don't know how to do it
3) I have an idea on how to do it, but it's hard and will take a lot of work

If you can write down a process for a person to do it, you can do it with software. If it requires something that you can't formalize, then it is likely to be a very hard problem to solve.

MilesArcher
Friday, July 30, 2004

What dat guy said. I say nothing's impossible in software as well (except when I'm fixing a bug, when it becomes "This is fscking impossible!").


Friday, July 30, 2004

Peter, I like how you worked in the holier-than-thou attitude about non-college educated programmers.  Plenty of us do space/time complexity analysis too, you know.


Friday, July 30, 2004

You just can't argue rationally with some people.  Many people, particularly managers, end up believing what they want to believe.  When somebody uses a pithy saying to end an argument, it is either meant as (a) a joke or (b) a signal that the person has already made up his mind and any further discussion will be ignored.

In real life, you've just got to accept that companies often ignore good advice and do dumb things.

It's not your company; it's not your call.  You've done your best to give them the benefit of your experience and that's all you can do.  If they don't want to benefit from it, that's their problem.  If they want you to labor endlessly on a fool's errand, well, it's their money.

I call it the One Time Rule: If you've made your case once and they still don't believe you, it isn't your problem anymore.

If you feel bad because they imply that a lack of talent or dedication is why *you* can't do it, you've just got to get over that feeling.  Focus on your opinion (and pride) of yourself, not other's opinions of you.

Only one person is the world's best programmer; the remaining 5 billion are inferior in some way.  Ethically, you are only responsible for making a *reasonable* attempt to make your employer satisfied.

In the end, you provide a service.  If your employer pays for that service, he's essentially telling you that he likes the service enough to pay for it.  If your employer discontinues that service (i.e. fires you), he's essentially telling you that he doesn't like or need that service.  Lots of people cancel their cable TV service because they don't want it, don't need it or think that it sucks.  So what?  Maybe your employer doesn't want your service anymore but somebody else might.  Just because one person thinks that a service sucks that doesn't mean that nobody else in the whole world wants it.

Daniel Howard
Friday, July 30, 2004

Yes, pretty much anything can be done in software.  The question is always whether it can be done *economically*.

Hit him with that, and you'll probably find a little bit more respect from your boss because you've shown an understanding of his side of the problem.

Justin Johnson
Friday, July 30, 2004

How about "anything can be done with software, but we don't have an infinite budget or infinite time, so there will be limitations."

sir_flexalot
Friday, July 30, 2004

No...the truth is anything can be done with enough AND, OR and NOT gates and a big beach full of sand :-)

Code Monkey
Friday, July 30, 2004

>I like how you worked in the holier-than-thou attitude about non-college educated programmers.
If you had taken college classes in CS, you would have taken a class on algorithms. Things like the "big-Oh" notation. I've never seen a self taught programmer who knew what it was about. At that company, there were 2 college educated programmers and about 50 self-taught ones. Why is bubble-sort a bad sort, and quick-sort much better? Can you get a sort algorithm to work in better than n*log(n) time? You would learn that in college.

There is a reason that academic research in software development is 5-30+ years ahead of the industry. And why people in this industry keep making the same mistakes over and over and over again. Thanks for pointing the reason out. Are your feelings hurt? Too bad.

Peter
Friday, July 30, 2004

"Things like the "big-Oh" notation. I've never seen a self taught programmer who knew what it was about."

Maybe you need to expand your horizons... There are plenty who do know what it is about.

"Why is bubble-sort a bad sort, and quick-sort much better? "

If I was facetious, I'd complain that this is the problem with college educated programmers - They only remember the average case and forget about the worst  case...

Fact of the matter is that good programmers continue to learn and will know things like that, and bad programmers don't. In no way related to where you got your initial education. All that does is give you a starting point.

"There is a reason that academic research in software development is 5-30+ years ahead of the industry."

They don't have performance/budget constraints?

Kidding aside - that is at least completely untrue in the graphics arena. A large percentage of last SIGGRAPH's presentation was made by people working for actual companies, not for universities.

"And why people in this industry keep making the same mistakes over and over and over again."

Because they have set world views and don't want to learn new things?

"Are your feelings hurt? Too bad."

Not at all - I *am* college-educated, after all. It's just that I have and had plenty of non-college co-workers that were showing me things I didn't know. Maybe we can just stop the stereotyping now?

Robert 'Groby' Blum
Friday, July 30, 2004

Whenever my boss asks that I say, "I can do anything given anough time.  How much longer over-due is acceptable for this project?"

Usuallly, the answer is, "OK, forget it."

me@me.com
Friday, July 30, 2004

>Things like the "big-Oh" notation. I've never seen a self
>taught programmer who knew what it was about.

Maybe you're making conclusions from a sample size that's too small.  How many "self taught" programmers have you known?

Anyway, space/time complexity analysis (e.g. best case, worst case, average case) is something that I think pretty much everybody knows.  They introduce it in the first couple chapters of SICP, which is what most college freshmen are taught as an introduction to CS.

Incidentally, I think that "self taught" is kind of inaccurate in most cases.  I think that I'm just as much "self taught" as somebody who takes a class with the textbooks I've read.

>Why is bubble-sort a bad sort, and quick-sort much
>better? Can you get a sort algorithm to work in better
>than n*log(n) time? You would learn that in college.

Sure that's great.  Everybody should know this stuff, I agree.  But do you think that there's something magical about the chairs that you sit in or the building you listen to lectures in?

>There is a reason that academic research in software
>development is 5-30+ years ahead of the industry.

Where that's true, it's true because academic institutions with essentially limitless funding are able to work on projects for as long as they'd like.  It's not because industry is full of 'idiots who can't pick the right sorting function'.

>And why people in this industry keep making the same
>mistakes over and over and over again. Thanks for
>pointing the reason out. Are your feelings hurt? Too bad.

My feelings aren't hurt.  Actually I've got that "watching a train wreck" feeling.  I know that one of these days you'll think back on how much of a prick you were and you'll wince.

I'm happy with the level of experience I've got so far.  I've written an efficient compiler, 3D games from the ground up, a relational database system, made a computer from transistors and basic parts, and so on.  Doing space/time complexity analysis is a footnote.


Friday, July 30, 2004

Peter, it's wankers like you who cause the problems in the industry.

The biggest disasters I've seen in my career in every case have been created by "college-educated" programmers. And I am talking about filthy messes of spaghetti code, abut huge jobs by consulting companies that just don't work.

The beauty is that a self-taught or other -educated programmer is only there because he has succeeded. He never gets a job on the basis of having spent three or four years at such and such university. Nor on getting a recommendation from the course advisers he sucked up to.

I actually think the academic gig in CS is one of the biggest rorts going.

.
Saturday, July 31, 2004

>The beauty is that a self-taught or other -educated
>programmer is only there because he has succeeded.

That isn't necessarily true.  He could be there because his dad owns the company.


Saturday, July 31, 2004

Like... solving the halting problem! eh... wait...

Matt
Sunday, August 01, 2004

Oh and:

>Things like the "big-Oh" notation. I've never seen a self
>taught programmer who knew what it was about.

I stand up as a counter-example. That said I have done a maths degree. Just no programming classes.

There is something rather ugly about big Oh as a mathematical notation, I reckon. It tends to be used very ambiguously by people who don't quite understand what it's saying mathematically. I mean things like

f(x) = O(x^2 log x)

just look like sort of vague-ified function definitions ('goes like / ends up like x^2 log x'), whereas they actually make very precise statements about the limit of a ratio of two functions...

Matt
Sunday, August 01, 2004

//Stand up, piss on his desk, ask can this be done in software? //

Hey this is what my customers do when I show the product my  developers have put together -:) (maybe not the asking part)

Mr OwnComp
Friday, August 06, 2004

*  Recent Topics

*  Fog Creek Home