Friday, November 07, 2008

Frequently Forgotten Fundamental Facts about Software Engineering

Bruce Eckel blogs about this article by Robert Glass. I've never seen this list before, but it is really good. The first one is so true:

C1. For every 10-percent increase in problem complexity, there is a 100-percent increase in the software solution's complexity. That's not a condition to try to change (even though reducing complexity is always desirable); that's just the way it is. (For one explanation of why this is so, see RD2 in the section "Requirements and design.")

I would add:

C2. For every increase in the software solution's complexity, there's a disproportionate increase (10-to-1? Maybe? Depends on the project I think.) in the cost of implementing the software.

I think he lets us programmers off the hook here:

ES3. Most software estimates are made, according to several researchers, by either upper management or marketing, not by the people who will build the software or by their managers. Therefore, the wrong people are doing estimation.

I don't know if I've ever met a technical person who overestimates, but I've met plenty who underestimate (myself included). You could argue the reason is insufficient information (see ES2), but we could all probably do a better job asking the right questions to get the information needed to make the estimate.

Thursday, November 06, 2008

G1 Phone

I love the G1 phone so far. Being able to access gmail, google reader, google calendar, maps, etc... from my phone makes it worth it.

What needs to be improved:
  1. Update me when a third-party application that I've downloaded from the Android Market has a new version available. Do it just like Firefox notifies you when new versions of add-ons are available. Do it very soon.
  2. Battery life.
  3. The orientation of the screen should change depending on how you're holding it, not on whether you have the keyboard out or not. Did they just run out of time?
  4. I want to be able to edit docs in google docs. Also view PDFs.
  5. The way contacts work: there's no good way to handle the fact that we all have friends that are couples. Usually these couples share a home address and home phone number, but they each have their own email and cell phones. Either you make them one contact, then whenever you send or receive emails or calls to their cell phones, you see their names together ("Bill and Melinda Gates are calling you". Which one!?). Or you make them two different contacts, but then you have to duplicate their information (do I just hate that because I'm a programmer?) Or you make them three different contacts ("Bill", "Melinda", and "Bill and Melinda") and store individual information with the individuals and shared information with the couple. I'd love to see a better way to handle it, but I can't find one.
  6. Please someone write an app that will track the stocks in my portfolio. While you're at it, a better twitter client. And a picasa app that naturally would allow me to upload photos from my phone to my web albums.
  7. I want to be able to close applications. Sometimes I suspect my phone is slow because of some app that's running. Now I have to reboot the phone.
  8. The maps application needs to display zip codes. Sure you don't need a zip code if you're navigating to somewhere, but you do if you want to look up an address so you can address a letter.