Fog Creek Software
Discussion Board

is this industry intellectually moribund?

I've been around for quite some time, and I've never seen such boring times. Not bad times, mind you. Everyone I know is employed. Not bad times, boring times. There are no interesting projects. 10 years ago I had friends who could get me a job working on compilers, interesting graphics architectures, projects where I actually wrote "algorithms."

These days the same people are retired if they were successful, and if they weren't successful, they are writing medical billing systems. I see a lot of work in my future writing SQL queries for medical billing systems. Perhaps I'll get to use a "case" statement, also. Even the founder of this site makes a "bug tracker" and a program that organizes HTML. Is anyone working on anything cool? I'm thinking of going to film school, or moving to Mexico to learn spanish, just so my brain doesn't rot away.

Saturday, October 4, 2003

I think it's just that the easy problems are solved. The interesting things that are left, algorithm research and such, seems to be the domain of academics. What algorithm-type problems remain to be solved? Sure, people are working on trees and other data structures for databases and filesystems and such, but how many DBMSs and FSs are there?

If you're doing graphics work, you're either on a death march writing games, or you're working on what, one of the 4 visualization projects out there (Ok, there's more than visualization and more than 4 of those, but...).

And consider: Even if its not *new*, it can still be new to you. Also, at least you're not a doctor: medical doctor's almost never deviate from established procedures (unless doing research. Does your general physician do research? Didn't think so.).

Most industries do this. It's dissapointing, sure, but there's still an ocean of things out there I've never touched. Is that enough? I don't know; ask me in 10 years.

Mike Swieton
Saturday, October 4, 2003

Mr. Ellipsis Person, I couldn't have said it better myself!  When I was a kid in grade school, I watched Carl Sagan's "Cosmos", and I couldn't wait to see what wonders the world had in store for someone with a MS in math, and one in the brand new world of COMPUTER SCIENCE!  "Surely", I thought, "when I'm thirty-five I will be beholding the mysteries of the Universe with astonishment and awe!"

Now I write inane "enterprise" database applications as I bide my time until I have to take a job at Wal-Mart when this job gets outsourced to India.

Saturday, October 4, 2003

What's happened is: computer technology has become commonplace in the household and office; everyone takes technology for granted; so, tech has become a commodity. And so have the people who do technology.

When something becomes a commodity, it becomes "boring" to its users, and the really talented people don't take an interest in it. The commodity approach is seen all over our industry. HR departments in companies treat us like cattle, as do most managements.  We (developers) are regarded as "consumers of technology", so we're marketed to based upon glitz and features.  It's assumed that none of us has any business developing our own stuff with own unique individual fingerprints, so the emphasis is on commodity tools like other people's components, and fitting into huge bureacratized teams.

It's a shame given that there's so much cool technology around us. The attitude toward technology has changed over the last 15 years from a few appreciative geeks who seek to learn and improve the state of the art, to the massive overwhelming consuming rabble that treats it like a phone or a toaster, and the hiring parties who want to regiment us like we joined a branch of the armed forces.

Bored Bystander
Saturday, October 4, 2003

after thinking about it, google is doing some cool stuff, i guess.
however they seem mostly finished with the cool part. too late for me!

designing phones and toasters actually seems more challenging than the software projects I'm involved with. maybe i should start ramping up to become the next michael graves.

mike makes a good point. most jobs are pretty rote. but at least doctors can assauge themselves with the fact they are "helping the sick become well." whereas my medical billing system is "helping the sick become poor."

Saturday, October 4, 2003

I'm sure that people who grew up in the 30's talked excitedly about new advances in robotics, and how cool robotics would be and what new problems they would solve.

...only to find themselves designing the new paint sprayer for Ford Motor Company.

Without the "mundane" applications of exciting new technology, nobody would bother spending the money on the cutting-edge stuff.

In addition, I think "exciting" is what you make of it. I think my current job is pretty exciting - I get to do cool stuff with browsers, .Net, and SQL Server. *I* think it's very cool to see something that *I* have built being used by a lot of people. But I guess *you* would find it "boring" since it's "just" an invoicing application for a truck parts buying group.


Saturday, October 4, 2003

If the easy problems have all been solved, why is there so much crappy unstable insecure software that is frustrating to use and doesn't do what I want?

What I'm saying is that if it as easy to make stable, usable software, there would be a lot of it.

Since it's so easy.

But there's not.

So it must not be.

Dennis Atkins
Saturday, October 4, 2003

if writing truck parts buying applications float your boat, i'm all for it. i have tainted my brain with a bit too much academic nonsense, thus i don't think i'm going to ever be too happy writing sql server applications. it *IS* nice when people use and appreciate your work. The only time I hear from others about my work is when something goes wrong. I don't think boredome is a sustainable position for too long, so I'm just ranting a bit.

That, and it's a rainy day, my friends are all out of town, and i'm in a bit of a funk.  Perhaps I'll head over to the coffee shop and read a book.

Saturday, October 4, 2003

Just because *I* find something boring doesn't mean I'm saying that *you* have to find it boring too.  Nor am I suggesting that your work isn't important.  I'm just saying *I* wanted to work on something *I* consider cool and, as "..." said, it seems like a lot more people had jobs *I* consider cool back in the day.

Saturday, October 4, 2003

"The only time I hear from others about my work is when something goes wrong"

There's your challenge - write software that is 100% bug-free. Perfect your development environment. Create the perfect setup for delivering quality software.

Once you've done that, let us know how it's going.


Saturday, October 4, 2003

Dennis, I hear your point. But the problems you are talking about are engineering problems. It is a different mindset. Certain people have the engineering mindset, I don't think I do. I like to figure out weird things. Once the weird thing is figured out, it isn't so interesting to me to figure out the 80,000 possible things that could go wrong and write exception statements to display the proper error message. I used to be able to get jobs where there was some hairy mathematical/optimization thing no one could figure out, so I got to figure it out for them. Now I just encapsulate bureaucracy in software.

Saturday, October 4, 2003

Yes I think there are two types of programmers: results-driven "engineers" and intellectually-driven "scientists".  The results-driven ones tend to get stuff done and get promoted.  They like the technologies that get the job done (SQL server or whatever).  The intellectually-driven ones tend to mull over some hard problem for awhile and spit out an original and elegant answer (which may or may not improve the product, and which may or may not produce anything visible to management).  They tend to like stuff like C++ template metaprogramming and python.

The best programmers are an equal mix of the two, but most people I have met skew one way or the other.

Saturday, October 4, 2003

roose, that is a good way to put it. I'm definitely in the second group you mention. (however, I don't really like python. ;-))
I can implement "best practices" like anyone else. I'm doing pretty well financially, my clients are happy with my work. I'm just not that happy with the work. It seems like anyone could do what I do now, and I liked it better before, when I felt unique and special. ;-)  I don't claim to be doing anything but whining at this point, just doing some late-afternoon venting on a rainy day.

Saturday, October 4, 2003

>>  "I'm doing pretty well financially, my clients are happy with my work. I'm just not that happy with the work. It seems like anyone could do what I do now, and I liked it better before, when I felt unique and special."

There are many unemployed IT folks around and recent college grads that would probably love to do what you are doing... for a while at least.

I think everyone likes to do unique and special things and to feel the same way.  I know I do.

I believe you will find this in everything you do, whether you work at McDonalds or you're President of the US.  It is the way life is.  Life simply isn't one big "high".

Enjoy your time, spend it with your family and your friends.  Join some clubs, join a church, go site seeing (I take long drives to settle my mind) or what have ya.

Let me tell ya, join the army.  You'll be glad you only have to code SQL all day.

Script Kiddie (In The Basement)
Saturday, October 4, 2003

Hm... well I don't see it that way. Sounds like you're saying I'm just a lowly 'engineer' and not some high and mighty 'scientist'.

in both science and in engineering, it's 99% perspiration and 1% inspiration. So, yeah, you have do the leg work if you want to get results. Anybody can have a hypothesis, or a brilliant idea if only someone would work out the pesky details.

I've developed quite a few clever algorithms myself over the years. So that makes me a scientist I guess, huh? Well actually I am a scientist and a designer as well. There's no method I know of to develop the next smash hit pharmaceutical now is there? Or breakthrough in plasma physics? Nope... it's just a lot of hard work. And once some breakthrough occurs, which is rare, it's still tons of work to make it usable and figure out all the details. If all this is 'boring', then scrience is boring because science is about work, not just about about philosophizing about how brilliant one is and how everyone else just doesn't measure up because they are sullying themselves with nasty boring 'brickie' work figuring out those pesky details.

For all the brilliant scientist who are so easily bored, I recommend an exciting career in pure academics.

As for me, I find it incredibly difficult to write stable software that users find intuitive. It's quite a challenge and not boring at all -- it seems to be an almost Sissyphian undertaking. Now I do understand that designing software that is stable and easy to use is quxte boring and easy for you smart folks out there. It's a real shame that you guys are too bored with it all to be bothered doing so because I'd really like to see some of this brilliantly designed easy to use and stable software you guys would be  capable of creating if you weren't so bored with the tediousness of it all. I'm sure there's a lot of great ideas you brilliant guys have that the less intellectually capable such as myself could learn from, if only we could see an example.

Dennis Atkins
Saturday, October 4, 2003

I don't think you're addressing me, but see the last comment in my post.

If you're purely intellectually-driven, then you're NOT a good programmer.  That includes myself.  You're just a smart dude who knows a lot about programming.

I agree that the best programmers are the ones who have created the best software.  But that takes both skills.  The purely results-driven people produce utter shit code that no one (including themselves) can understand or modify 6 months later.

If you don't have people who are balanced, then you can achieve the same result by having both types of people on your team, working closely together (which is a challenge, considering how differently they work).  The scientist people can handle some stuff that the engineers can't, and vice versa.  But as I said, the best programmers can wear both hats.

Saturday, October 4, 2003

Hey! Triple Dot :

Move to BioTech mate and go and find
a cure to AIDS.

If you wants something which stimulate you intellectually.

Go ahead coz it's a hell of a task!

Have Fun Craking It :-)

Saturday, October 4, 2003

Fairlight, I am actually looking into going into a phD programme in bioinformatics. I'm just waiting for the one at UCSC to start so I have an excuse to move back to the west coast. :)

Saturday, October 4, 2003

Mr. Ellipsis Person,
Just curious because that sounds interesting; what's your background?  How old are you?  How old is too old to start a bioinformatics program?

Saturday, October 4, 2003

Bionformatics is writing programs for scientists
who are solving the real probem. Not sure if
that's what you have in mind.

Saturday, October 4, 2003

bob, i am too old to be going to grad school for anything. but i don't have a wife or kids, so I wouldn't be harming anyone other than myself. I also have worked with 3 MD/PhDs in the past who would write letters of recommendation. I'd just have to re-take organic chemistry.
I have a math degree and have taken loads of night classes in everything from economics, electronics, biology, etc.

valraven, I'm slightly anxious about that fact. I don't necessarily want to be a sysadmin for a BLAST installation somewhere. However, at least by taking a phD i'd get to learn more about molecular biology, biochem, statistics, genomics, proteomics, etc. Thus I'd be learning some new stuff along the way. Due to my software background I have a better chance of getting into a bioinformatics program vs. say an atmospheric physics program.

I'm not sure I will do it, because the program I want to get into (UCSC, for personal reasons (all my friends/family live there)) hasn't been approved yet. But that just gives me a bit more time to prepare and decide whether or not it is something I want to do.

Saturday, October 4, 2003

Well there you go then! Sounds like a good solution actually, triple-dot. You'll get to work on more challenging problems.
Even if the program isn't official, would there be some way to find out from UCSC the likely requirements for it and start in on those?

Dennis Atkins
Saturday, October 4, 2003

I've emailed one of the professors, and read through this:

Saturday, October 4, 2003

also, I actually like the name "triple dot". maybe I'll register the domain... :)

triple dot
Saturday, October 4, 2003

I have taken several of the bioinformatics classes
from the extension and they have been very

Biology/chemistry/physics is a hell of a lot harder
than computers. It the ultimate hacking though.
And the jobs won't soon go to india.

Few people can do computer science. Even fewer can do
biology. What will remain? Back to farming?

Saturday, October 4, 2003

Well, the page you gave looks neat. It does say that they *currently* offer a PhD in bioinformatics. So, although they haven't created the bioinformatics department quite yet, they do seem to have a degree program in it. Why not apply? Looks like a fun program.

Dennis Atkins
Saturday, October 4, 2003


"There's no method I know of to develop the next smash hit pharmaceutical now is there?"

Funny you should mention.  I'll admit to not knowing a heck of a lot about the pharmaceutical industry; however, it seems like a great deal of this kind of "science" has been reduced to "hey, let's see if we can find a new complex molecule and exploit it, even though we don't really understand how it works," and uses methods very similar to Edison's attempts to find a suitable material for use as a filament in an incandescent bulb -- in other words, brute force algorithms.  ;>  So the term engineer doesn't carry much stigma to me, since being a scientist seems to entail just as much stumbling around in the dark, and the use of "impure" methods like array "analysis."  (=

Sam Livingston-Gray
Sunday, October 5, 2003

Hey Sam,

Yeah well that's exactly the point I was making.

Actually though, there is one near-sure-fire method to do it...

Step 1 - find an herb or other natural substance with the miracle curative properties

Step 2 - identify the exact molecule that does the magic

Step 3 - develop a method to synthesize said molecule

Step 4 - slightly alter the molecule so it's patentable

Step 5 - use marketing to compensate for inconvenient fact that Step 4 made the molecule toxic and introduced a number of dangerous side effects not present in the naturally found substance

Dennis Atkins
Sunday, October 5, 2003

>Step 4 - slightly alter the molecule so it's patentable

>Step 5 - use marketing to compensate for inconvenient fact >that Step 4 made the molecule toxic and introduced a >number of dangerous side effects not present in the naturally >found substance

As a Chemical Biology grad student, I'd like to point out that this is Grade-A anti-corporate BS. Example: cyclosporin. Great immunosuppressant, horrible for your kidneys, 100% natural. Changing around functional groups on a natural product can make it more toxic, sure. It could also make a nasty natural product more tractable. The idea that natural products are good for people but altering them makes them bad is a ridiculously anthropocentric fallacy.

Chris Hoess
Sunday, October 5, 2003

So Chris, you are saying that that is NEVER the way it works? Altering natural substances that work and are safe simply to make them patentable ABSOLUTELY does not happen in the industry and those who claim so are simply spouting "anti-corporate BS" against the pure and noble deeds of the pharmaceutical companies?

And I suppose when we notice that every single teenager who has gone on a murderous killing spree in the last twenty years was taking a SSRI... that's just a coincidence because those drugs are SAFE and EFFECTIVE and anyone who says otherwise is a wrong and should not be allowed to say such things?

Dennis Atkins
Sunday, October 5, 2003

Triple-dot, you need to start your own company.  You're not going to get the intellectually interesting work you're looking for in a corporation. Unless you have a PhD and can get hired by one of the few companies that still do R&D.

T. Norman
Sunday, October 5, 2003

Well, you mentioned compilers for example, take operating sysetms, take web browsers, they are all still in development. Why not get involved in some open source projects, best yet, as soon as you have a good patch to fix bugs or add features, it'll be used.

Mozilla for browsers, gcc/tendra for compilers, the *bsd or linux or hurd kernels...Why not get involved with them?

Sunday, October 5, 2003

> Why not get involved in some open source projects ...

Yeah, copying something else would sure be exciting.

Sunday, October 5, 2003

My first serious work as a programmer was quite exciting, where I had to implement a query system and a database from scratch. My second job was in a web-publishing company, but it too was very exciting because I learned about UNIX, Perl and other things. My third job, as a tester of software-based modems was also quite nice, albeit more tedious.

Since then, I've been studying for my first degree in Electrical Engineering, and also hacking on open source projects. Some of the projects I was involved in were very exciting: a solver for Freecell-like games, which ended up implementing many interesting data structures and algorithms; a first-come first-served readers/writers lock; I also translated the MikMod player to Java, which was quite tedious job, but the code itself was very interesting.

I think many open source projects now are very exciting and employ many interesting algorithms. Of course, most people are employed at writing in-house code of all types, which may or may not be exciting.

Shlomi Fish
Sunday, October 5, 2003

dot dot dot,

>> I used to be able to get jobs where there was some hairy mathematical/optimization thing no one could figure out, so I got to figure it out for them. <<

If you really want to match your intellect against a particularly challenging problem, you could do worse than trying to build a master-level chess program.

Contrary to popular opinion, chess is not a solved problem. It's true that the best programs currently available combine extremely clever tree-searching techniques with a moderate level of chess knowledge and some monster hardware. This devil's brew has created a few programs that can hold the world's top 10 GMs, and blow away everybody else.

But nobody has yet cracked the representation of extensive chess knowledge in a computer program, and allow that knowledge to be searched at high speed. If you can do that, you've solved a very difficult problem.

And if you're into complex software, programming chess algorithms is seriously mind-bending.


Mark Pearce
Sunday, October 5, 2003

"If the easy problems have all been solved, why is there so much crappy unstable insecure software that is frustrating to use and doesn't do what I want?
As for me, I find it incredibly difficult to write stable software that users find intuitive. It's quite a challenge and not boring at all -- it seems to be an almost Sissyphian undertaking. Now I do understand that designing software that is stable and easy to use is quxte boring and easy for you smart folks out there." - Dennis Atkins

That is an interesting point. There is no glory in writing stable intuitive software. It is laborious and mostly unrewarding work. Once the design is ready, it's mostly boring from that point on. As "mythical man month" explains, it costs $1 total to have something for personal use, $3 total to make it suitable for larger audience, and $9 total to integrate it into a package with other such things for many users. That is a lot of dispersed effort with little reward at most steps, and little immediate gratification. And the joke is that then your customers end up being happy and don't return. So your intellectual rewards are 1) the initial design, and 2) the thought of a job well-done, may be few ingenious solutions along the way. Is that enough to keep one going while doing all the boring things? I do not know, I guess one needs 3) money, to really make it worthwhile.

Plus, what is intuitive? There is so much background info usually goes into "intuitive", that you end up collecting lots of information to see what your users are like. The effort ends up being mostly external, where little is actually figured out by you. For me, no concentrated intellectual effort - no challenge.

Dealing with the users is for the most part dirty work as well. They mostly bitch and moan while there are problems. Once things work, they stop paying attention to and forget to express their appreciation. I know of some sysadmins staging outages just to make people realize how well things work most of the time.

Mr Curiousity
Sunday, October 5, 2003

Curiosity, you make some great points. Perhaps this should be a topic on its own.

There are good critiques of bad designs out there by 'big names' but very little in the way of practical, usable, or even right-thinking advice. I recall the debacle of Donald Norman releasing an interactive ebook of his treatises on usability and the ebook that Norman designed was simply the worst and most unusable interface I've ever had the misfortune to be exposed to. To keep it short, he and many of the other big names have great criticisms but little in the way of practical advice.

Joel's book is quite good though and does combine interesting and thoughtful insights with practical advise. It's not perfect, but about as good as it gets in the UI scene.

Perhaps the best lab for learning UI design is to really think about good designs. Successful video games are one obvious example. Old standbys like TurboPascal are another. iTunes and iMovie are pretty nifty as well.

What's a great UI principle in one domain may be foolish in another -- a FPS game interface for a database is probably not the way to go. Or maybe it would if done right.

Two things that do work:

1. The best interfaces come from thoes who eat their own dog food.

A special case of this is when someone who is primarily a domain expert or even an artist and secondarily a developer creates the program.

2. You have to listen to the customers. Ignore what they are saying specifically though -- they don't know what the want. But they DO know when it's not what they want.

Silence is one form of communication -- silence from all users usually means they can't figure out your program's features. There aren't any crash and burn bugs so they can't say anything specifically bad, but the UI is so incomprehensible they don't know where to start. And they don't want to appear stupid in case the advice you give them is obvious (you need to turn it on first) so they just remain silent.

What's a good intuitive UI? You get that feedback from people who have *just now* bought the program. They email you after messing with it for a week and say "I just want you to know that this is a fantastic interface and I am getting a thousand times more done than with the program of your idiot competitor. Keep up the good work." You don't get too many of those emails, but when the interface is finally just right, you do get a few of them.

How to get there? The dog food yes.But also, every single time someone asks you a question about how to do something, you need to think about making the UI more obvious. Give some feedback. Make an animation or graphical preview pane. Replace a text field with a slider. Remove or hide an advanced function rarely used.

Ignore feedback from users requesting specific new features. Don't take their advice. Your UI will become a bloated incomprehensible mess if you do. But you should think about the needs behind the requests -- what are they really trying to do? Wait until you get a few similar requests and then figure the general principle behind them. Then think about the new feature.

Dennis Atkins
Sunday, October 5, 2003

"Bionformatics is writing programs for scientists
who are solving the real probem. Not sure if
that's what you have in mind." - valraven

Well, not to rain on someone's parade, but triple-dot sentiment about bioinformatics/scientific programming appears to be in line with the notion that grass is greener on the other side.
People that write scientific programs in academic places are usually interested in the problems first, and programs - second. Once you start doing just the programming, you end up using prepackaged libraries/tools in order to satisfy user demand. If such work is diverse, it'll be more or less interesting. Otherwise you may end up with boring work in other domain of knowledge. You'll just reach the inevitable later.

  To find something "permanently" intellectually rewarding one should seek out tasks involved in content creation. Such as new ideas, new methods, new ways of looking at old things, art, etc. By definition, these things are new or novel, thus boredom is not an option.

And, try to stay away from being a "service" guy to people who are involved in content creation. You either end up with working on fuzzy/poorly parsed ideas generated by others with little being done, or, you work for a great person with good ideas. In either case, you get little credit since you weren't the one coming up with the content.

Work for yourself. Either do things which can be boring but generate a lot of money, or, create content, and claim full credit for it.

Mr Curiousity
Sunday, October 5, 2003

Its the economic times we live in. What with the ever-increasing pressures to increase profit, along with the thread of oursourcing, companies are concentrating on just surviving.

When CEO's and other high-up types place greater emphasis on the bottom line to the almost exclusion of everything else, there's no money available to take chances in doing the interesting things.

Wait for better times? Wait for those managers to get promoted?

Monday, October 6, 2003

I'm hoping that interesting applications can be made from some combination of powerful portable computing (laptops, PDAs, cellphones), and faster available always-on wireless networking (WiFi and 3G).

Toss in one or two other words (GPS, Digital Photography, Gaming, Community, etc) and you've got a post-dotcom-bust startup business plan.

Flamebait Sr.
Monday, October 6, 2003

Maybe you just need to get a new job? There's many many many companies where research is an important part of the job. I work for a video game company as a graphics programmer and I spend most of my time trying new stuff out (better shadowing algos, optimize shaders, combine passes for faster rendering, geometry culling, better art pipeline for artists, etc). Research is what I spend most of my time doing (reading & writing test apps).

Tuesday, October 7, 2003

---" But nobody has yet cracked the representation of extensive chess knowledge in a computer program, and allow that knowledge to be searched at high speed. If you can do that, you've solved a very difficult problem."----

Chess has been cracked by brute force. Forget about trying to find a chess algorithm that shows how humans really play. Might as well go for the philosophers stone while you are at it!

They tried for over thirty years to find out how humans played and failed abysmally. Any commerical program around now can beat me 99 times out of a hundred, but ten to twelve years ago the proportion was reversed. I haven't got much worse and the programs haven't got much better; what has happenied is that Moore's law has kicked in with a vengeance.

Now you would face a real intellectual challenge, do a lot of good for humanity, and make tens of millions of dollars if you can get a program to play Bridge in a half way decent fashion. All the programs I know suck big time.

Stephen Jones
Wednesday, October 8, 2003

*  Recent Topics

*  Fog Creek Home