How useful is math to most programmers? In other words, how often does a typical software developer use something they learned in, say, Calculus class or beyond? Joel cites the original Google PageRank algrorithm paper (pdf) and Google’s MapReduce (pdf) as good examples of math in practice for mainstream programming.

I believe it’s important for programmers to develop skills that aren’t programming, necessarily, but that are complementary to programming, such as graphic design. (Or databases, or HTML/CSS, etcetera) Remember, good programmers write code; great programmers steal code. This applies triply to design.

Joel and I both believe that status reports should be treated as a “public wall”, never as weapons to determine how people get paid or promoted. The single best thing I’ve ever read on this is Poppendieck’s Team Compensation (pdf) — which I discovered through Joel’s first collection of software writing. If I could, I’d print out a copy of this and staple it to the face of every person in the world who manages software developers. Yes, it really is that good. Go read it!

One team at Fog Creek instituted a daily standup meeting for their project, which is a staple of most agile development approaches. In addition to the “Daily Kiwi” convention, Fog Creek also use a locally hosted instance of Laconica, an open source Twitter clone. It’s certainly an interesting alternative to email.

Joel believes most small to midsize software companies will deal with an economic downturn by (temporarily) deferring development of new versions of their products. For companies that have a lot of “extra” staff, the economy might be an excuse to get rid of the worst performing 10% of your employees.

Joel justifies having a nice office space as 1) a recruiting tool 2) enabling higher programmer productivity and 3) the cost of a nice office space is a tiny number relative to all your other expenses running a company. I argue that companies which don’t intuitively understand why nice office space is important to their employees who spend 8+ hours every day there.. well, those companies taren’t smart enough to survive anyway.

My favorite Stack Overflow question this week is Are Parameters really enough to prevent Sql injections? Joel and I have a long discussion about the importance of parameterized SQL, both for performance and for security (beware Little Bobby Tables!). But you should know that it’s not 100% foolproof; it is possible (though rare) to have latent SQL injection exploits even when fully parameterized.

Mike Akers: “How much time should programmers be spending in Photoshop?”

David from the UK: “How do you handle status reports at Fog Creek?”

Matthew Glidden: “How do you run a software company in lean economic times?”

If you’d like to submit a question to be answered in our next episode, record an audio file (90 seconds or less) and mail it to podcast@stackoverflow.com. You can record a question using nothing but a telephone and a web browser. We also have a dedicated phone number you can call to leave audio questions at646-826-3879.

1. Thank you for such a wonderful site.
2. Sorry for not sending an audio question. I don’t have international access at office I hope it gets visible here.

My question is, how do you feel about a proliferation of questions that are not programming related being so popular while other that are truly about programming languages being closed or donwvoted furiously.

While the ‘cast downloads I browse the show notes to get an early peep (listen?) behind the curtain of what I’ll be listening to during the homeward leg of my commute.

So without actually having heard this week’s discussion yet, I thought I’d mention that next Thursday is the 30th anniversary of my starting work in the information technology business. And I’m still programming, with no immediate plans to stop. Fairly grumpy these days, mind, what with all these young whippersnappers who think relational databases are old hat (they weren’t any kind of hat at all when I started).

Regarding Jeff’s question about when you need math in programming: I was on a team with a reasonably skilled developer who had no math education. I didn’t notice until one day when he wrote some very simple vector transformations. He obviously didn’t realize that was what he was doing, so his code turned out horribly unreadable and wrong in a lot of cases. Still, after hammering on it for long enough it worked.

My point is that you can always get around a problem without math education, but you will probably not realize it when you are taking a huge detour to get to a suboptimal solution.

Like Jeff, I’ve never been very good at maths, but my verbal skills are off the wall. Again like Jeff, I’m a really good programmer, but not a really great programmer.

I wonder if there’s a lot more of us out there. I’ve always gone a little bit quiet when people say “you need solid maths abilities to be a programmer” because I’ve never had them. I’ve always been able to “translate” customer requirements to the required programming language.

Anyway – I think it’s all quite interesting. We need some evidential proof that good verbal skills equate to good programming skills.

Now I don’t feel as bad. I suck at math and I feel I’m a good programmer, but never felt great because of my lack of math skills. I’m a musician, so I believe its my creative side that helps me make up for my math deficiency. I think unless your doing some type of analytical or statistical programming, you don’t really use traditional math in programming. I guess what your really using in programming are the concepts of math like Polynomials and functions. Your using abstraction a lot which is I guess the fundamentals of algebra.

Josh, according to wikipedia http://en.wikipedia.org/wiki/Ironic_(song), at the time she was writing the song, she thought examples she had given in the song were ironic although she wasn’t really making sure everything’s 100% correct.

Your discussion about its being possible to be a useful programmer without knowing (much) math shows how much computing has changed since the first computers. Much of the original motivation for hardware development was to do math faster than humans can. Early programming was to a large extent what we now call computational science (as opposed to computer science).

Of course, even now, the unique function of many (if not most) important applications is mathematical in nature. Weather prediction, climate modeling, structural design, pharmaceutical development, statistical analysis, virtual reality, …. The list goes on and on.

To me the fun part of programming is the interplay between the design and implementation of algorithms.

@lubos: Actually, as I was pressing the send button for that question, I was thinking to myself “I bed they’re going to rip my question apart and say something like ‘what are we supposed to be here, mind readers?’” I figured no matter what happened, my question would lead to some interesting discussion, which it did.

Also, Joel was right, I was working in a dysfunctional workplace at the time, and I’m happy to have moved on to a new job that’s dysfunctional in other ways ;)

There is an interesting article here http://www.maa.org/devlin/devlin_10_00.html about why math is good for programmers. The argument is basically that doing math teaches you to work with abstractions, something that is also needed when programming.

“But software engineering is all about abstraction. Every single concept, construct, and method is entirely abstract. Of course, it doesn’t feel that way to most software engineers. But that’s my point. The main benefit they got from the mathematics they learned in school and at university was the experience of rigorous reasoning with purely abstract objects and structures.”

Re: Joel never having met anyone who hasn’t made an 800 on the SAT math section… Really? Even in programming circles, that’s some pretty rare air. While exposure to collegiate-level math may have some benefits to programmers working on certain problems, I certainly don’t think flawless execution of math skills is a requirement to be a good programmer. I think the majority of developers wouldn’t come anywhere close to that level. I, like Jeff, had decent math scores and very high verbal scores, and I think I at least have the potential to be a very good programmer.

The web is packed with critics devising coincidences that are more “ironic” than Alanis’ examples (“It’s like rain, on your wedding day – if you’re marrying a weatherman! And he predicted that it wasn’t going to rain!”), but the song actually seems to deal in minor everyday instances of *situational* irony, [defined] as “a state of affairs or an event that seems deliberately contrary to what one expects and is often amusing as a result”. It’s “often” amusing, but doesn’t have to be: a “black fly in your Chardonnay” therefore runs contrary to the wine’s la-di-dah connotations; “rain on your wedding day” flies in the face of Western associations between happiness and sunny weather. There’s no doubt that Alanis could have come up with more “ironic” examples if she’d studied genre classics like Oedipus Rex – “It’s like killing your father/ when you’re trying not to/ It’s like marrying your mother/ when that’s socially taboo” – but her original scenarios were probably more recognisable to the CD-buying public.

Per the Windows-specific behaviour of reinstalling USB devices each time you change the port: it sucks especially badly if you don’t have admin rights. Changed the mouse port? Sorry, won’t work, you’re not root.

No other OS does this.

Any why the f**k did this peculiarity get carried over to Bluetooth devices as well?