Can't you just... ? redux

by Andy Lester

About a year ago, I wrote this in my journal:
I grate my teeth any time I hear a sentence that starts "Can't you just?" If those words come out of your mouth, stop and think. You're missing something important.

"Can't you just" is usually said when discussing a problem with someone else. The other person will explain the problem, and you'll jump in with the handy, simple and obvious answer. Some examples:

  • "I'm not sure how we're going to get that server onto the network. Turns out that this wall jack is dead."
    "Can't you just run an extension cable over to that jack over there?"
  • "The system needs to support users that have control over other users. I think we need to have some sort of table that tracks relationships."
    "Can't we just add a flag to the USER table?"
  • "I don't have enough for an NT license in the budget, but I have to get print services up and running by the end of the week."
    "Why don't you just run Linux on the server?"

In each case, someone has a complex problem, with the not-very-helpful suggestion of an obvious, quick-win solution. The suggester has undoubtedly not taken all the issues into account. The response in each case will be one of the following:

  • "I thought of that, but that leaves open the possibility that...",
  • ... and then a list of the reasons why that simple, obvious solution is not workable.

  • "Ooooh, yeah, that's a good one. Let's do that."
  • This doesn't mean that the simple, obvious solution is any more viable, only that the listener hasn't thought of the reasons why yet.

It's rare that a complex problem has a simple solution, or that the simple solution doesn't have far-ranging side effects. Running an extension cable adds to the rat's nest of cabling in the server room, or the user flag will soon have to be a set of flags that become a maintenance headache, or the Linux server causes problems in an all-NT shop.

As programmers, we're used to doing magic and making things work right. As Perl programmers, especially, we are Lazy and Impatient, and expect the problem to be easily solved. However, if someone has been struggling with the problem for a while, the chances that they've missed an obvious, painless solution are small. It's also somewhat insulting to presume that the answer is right there in front of the person, unseen. Rephrase "Can't you just" as "Have you not noticed that the obvious solution is to", and you'll see what I mean. You're probably not that much better of a problem-solver than the other person.

There's nothing wrong with being helpful when colleagues are faced with a problem. Just keep the enthusiasm for your solution balanced with a healthy amount of skepticism, and expect that they're not blind.

Now, Piers Cawley has expanded his OSCON 2003 Lightning Talk into a thoughtful essay called "The Fine Art Of Complexity Management" where he argues that the word "just" is an excellent design tool. Read on as he discusses test-driven development, refactoring, Exegesis 6 and clarified butter.


2003-08-03 10:36:32
Should just just work, I'm sure
Well said!

I consider "just" to be a warning cue alongside "should", and "I'm sure": "That should work..", "That should only(just!) take a few moments", "The -previous/next layer- should cover that case" and "I'm sure that will be there in the next release"

2003-08-04 06:13:31
Can't agree in general
Hmm. You're assuming that the person (or persons) ahead of you in the process chain are all deep thinkers and that they don't make mistakes or errors in judgement. Essentially, you assuming that all your inputs are perfect. Not alway the case, I'm afraif.
There are a lot of knuckleheads out there - that's why troubleshooting guides often start with 'Ensure the unit is ....'.
2003-08-04 06:49:26
Can't agree in general
That's my very point. If someone says "Can't you just...", it's a flag that they've made an error in judgement. More importantly, if we as programmers find ourselves thinking "Can't I just...", we've probably made our own errors.
2003-08-05 05:03:01
Can't agree in general
Yup. Only when absolutely sure that *I* cannot say "Can't I just ..." should I be infuriated by someone else saying "Can't you just ...".

An example: I've got a neat new IP phone connected to an expensive, and powerful VOIP PBX. The feature set on the phone is magnificent! I'm sure it reads minds! However, I'm perfectly justified in saying to its designers "Can't you just put some damn LEDs on it so I can tell which lines are active/ringing/on hold. They're cheap, and if you can change the contrast of the LCD screen next to the line buttons surely you could light up an added LED."

My point is: sometimes people can't see the wood for the trees. Sometime they miss the obvious stuff and when they do it's a little silly to be annoyed by someone ponting that out by saying "Can't you just ..."