May
10.
2008

Cheaper talent: a must read

Posted by: Drazen Dotlic in Categories: general | rant.
Tags:

Relation between developer's quality and compensation is a hot topic. Lots of e-ink has been spilled over this issue but not much crystallized in the end. Unlike lawyers who have established a baseline price of their work, developer's pay fluctuates wildly and is not necessarily related to the quality of their work (in fact, more often it boils down to how good negotiator you are). Quite often you'll see developers (who recently started contracting) asking for help on how to price their work on a public forum. Clearly we need some kind metric to measure developer's productivity, but even more we need to understand the quality of the work, more than the quantity.

Martin Fowler's Cheaper Talent Hypothesis is a great read that covers many important points. The relevant piece that talks about quality says:

Faster cycle time leads to a better external product, but perhaps the greatest contribution a talented team can make is to produce software with greater internal quality. It strikes to me that the productivity difference between a talented programmer and an average programmer is probably less than the productivity difference between a good code-base and an average code-base. Since talented programmer tend to produce good code-bases, this implies that the productivity advantages compound over time due to internal quality too.

I'd say this is actually the most important aspect. Of what use is the ton of code if it doesn't work? In one of the previous companies I worked for, an informal study showed that every bug that ends up in developer's lap (confirmed bug that needs fixing) costs the company, on average, one thousand euros. The reason is not that developers' time is expensive, but that the problem needs to be processed by support personnel, repeated, described/documented and after the developer is done fixing, the issue needs to be confirmed as fixed.

Think about this. With a couple of bugs "generated" a cheaper but lower quality developers will nullify the salary difference. Or vice-versa: with each bug not created a more expensive but higher quality developer will cost you less.

Unfortunately not many (if any) companies look at the problem this way. Usually the only metric is how fast one can reach the "finished" product state. The time spent in fixing all the issues introduced by rushing the product out of the door never "counts". It's a shame.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
0 Comments
Mar
10.
2008

IE 8: no madness afer all

Posted by: Drazen Dotlic in Categories: general | rant.
Tags:

When it was revealed that IE 8 is indeed in the making a couple of months ago, the news of the day was the improvements Microsoft has made to IE regarding standard compliance.

Theoretically, things were going great: Microsoft passed the ACID 2 test demonstrating quite a big step up from the IE 7. For years Microsoft has been catching up with the Web standards, but the pace of the progress has been slow. Each new version of IE after and including version 6 was just a bit more compliant. Passing ACID test was supposed to demonstrate that IE 8 will in fact be sufficiently standards compliant so that Web developers can finally code once, deploy everywhere (for more on the different modes of browser behavior see Wikipedia page on “quirks mode”.)

Or so it seemed. The problem at the time of the original IE 8 announcement was the way the standard behavior of the browser was supposed to be triggered. Due to the large number of Web sites that still target broken “standards” mode of older IE versions, Microsoft decided to introduce a new meta tag with which a developer would opt-in to the “really really standards mode”. Thus, by default, the IE 8 would behave the same as IE 7, which in a way defeats the purpose of the real standards mode and would most likely slow down the adoption of the standard compliant pages.

The decision to go with the IE 7 standards mode by default resulted in a huge backlash from developers. Basically by doing this Microsoft introduced yet another special case that a web developer has to think about. If the IE 8 was in the standards compliant mode by default and judging by the level of the standards compliance of both Safari 3 and Firefox 3 it looked like web developers could finally stop conditionally styling the pages, which is a huge win for everyone.

InternetExplorer8Beta1Then a great thing happened. During this years’ MIX conference Microsoft announced that IE 8 will in fact by default do things the right way. If a developer wanted to get a IE 7 “standards” mode it had to explicitly say via a meta tag, so the situation is a reverse of what it used to be. To rectify the cases where a developer didn’t say anything, the web site was targeting IE 7 and therefore looked bad in IE 8, Microsoft added an “Emulate IE7” button featured very prominently in the main toolbar.

We can only speculate what motivated Microsoft to make such a change. Some think that increased pressure from various lawsuits in Europe and particularly complaints by Opera about the need for Microsoft to increase IE’s standard compliance was a main driver. Some think that it was simply a part of the overall Microsoft strategy to open up. Some think Microsoft actually listened to customer feedback.

Whatever it is I am grateful. Even though I do not do much Web work, what I did do was often an exercise in pain trying to align the look & feel across major browsers.

Here’s to hoping that by the end of this year one will have very reasonable standards support across all major browsers  and that the compatibility nightmare will finally be over.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
0 Comments
Jan
23.
2008

The headline of this post is a quote. I last read it in a most-excellent book that I wrote about before called “Founders at work”. In short, the book is about success of the many startups that did something great (some subsequently crumbled) in the last fifteen years or so.

For some reason, this quote really resonated with me. Despite all the information I’ve gathered before I even thought about going at it on my own, I’ve still made many small mistakes that could have been easily avoided. More often than not, I see this pattern repeat itself with other entrepreneurs too. We either get too enchanted by the technology, we misjudge the size of the market or we continue “brushing the diamond” (trying to produce the perfect piece of technology instead of selling something that works).

It’s easy to blame the circumstances. If only one of the partners did or didn’t do something, if only market wasn’t in a slump, if only the exchange rate of your primary currency wasn’t so bad at the moment etc. But more often then not, we are the enemy, we’re the ones who shot ourselves.

 

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
0 Comments
Jan
22.
2008
I ran into a great question on the Business of Software forum the other day. I give it to you in its entirety:
I want to make a rich web application. Ajax is out of question (too many horror stories). I want to choose 1 platform and stick with it. Requirements are:
  1. Widespread install base (I guess Silverlight's already out!)
  2. RAD. Need to write an app from inception fast.
  3. Has a lot of third-party/free code available on the net.

BTW I'm a C++ Win32 developer, and I would definitely prefer Silverlight *if* it had a higher install base.

I'M ESPECIALLY LOOKING FOR INSIGHTS ON PEOPLE WHO HAVE FIRST HAND EXPERIENCE IMPLEMENTING ONE OR MORE OF THE AFOREMENTIONED TECHNOLOGIES. Yea, I just yelled.

This is a great question for several reasons: the poster tells you why one of the technologies (AJAX) is not on the list (even if you disagree with the reason). He tells you about the criteria for choosing the platform. He gives you his background. Finally, he preempts any “evangelist” comments – do give advice if you’ve used one or more of the technologies above.

Unfortunately, the poster is in a “cheap, fast, good: pick two” situation. None of the technologies listed will satisfy all or even most of his requirements.

I was a C++ Win32 developer, just like him. I have used Java (for applets) and WPF (a bit of Silverlight). I only know what I’ve read about Flash. Here are my 2 euro cents…

Silverlight in its deployed version 1.0 (no CLR) is, for his needs, useless, regardless of the adoption. What he would most likely want is Silverlight 2.0 (CLR included), but that’s months away and then there’s the question of adoption and tools. Personally, I don’t think adoption is what he should be worried about, but that’s another story. Tools (RAD) should be fine for him as most will be integrated in Visual Studio where he should feel right at home. Third-party code will be scarce.

Flash has a great install base (anecdotally, around 90%). Tools appear to be very RAD. I don’t think there’s much third-party/free code available on the net as Flash is not so much about code. Mainly, as far as I can tell, the problem with Flash is the host language. It’s some kind of JavaScript mutant called ActionScript. It appears to be faster than JavaScript in the latest incarnation of Flash, but it’s still a script language. Him being an ex-C++ developer, I don’t see him using a script language and being productive with it. But that really is the only problem with the Flash.

Java has a widespread install base, but you never know which version users have installed. I’ve seen point releases of Java breaking applications and that is to me one of the biggest problems with Java. RAD is questionable (depends on your definition of RAD), but on the other hand if the applet is graphics intensive, he’ll be able to trivially transfer all the GDI/GDI+ knowledge accumulated over the years. There is a lot of third-party and even more free code on the net, so much that it might be a problem to pick which library to use, not to find if there’s one to suit his needs.

All in all, it’s tough for Win32 desktop developers trying to build RIA. Java feels great as a language (if you have C++ experience), but there are deployment issues and RAD aspect. Silverlight looks even better, but it’s not ready. Flash uses awkward script language. Let’s not forget that unlike Java which still uses rather traditional GUI concepts, both Flash and Silverlight are fully vector-enabled and use substantially different GUI concepts and this takes time getting used to.

My recommendation? If possible, wait for Silverlight. If not, go with Java.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
0 Comments
Jan
21.
2008

My trusty Dell laptop is now 3.5 years old and the batteries have basically died at this point. The extra battery for the drive bay (slide DVD out, slide extra battery in, enjoy several more hours of unplugged goodness) can’t be charged while the primary battery only lasts for an hour or so.

A quick search shows that the batteries are insanely expensive. Roughly, they cost 120€ each, 240€ total, which is around $350! (yeah, this is mostly due to the weak dollar, but still). For comparison, the laptop cost me around 2500€ at the time (it was top of the line and that’s why I can still comfortably use it today) so the new batteries would be 10% of that price.

NewDellBatteryI wasn’t ready to pay that much so I turned to eBay. Guess what – I found the same batteries, brand new, for a quarter of the price. Both were about 64€ with shipping from Hong Kong.  As expected, the batteries do not have Dell official sticker, but are for all intents and purposes identical to the ones I already have. You can see the ID and serial number of the primary battery on the screenshot.

The new primary battery lasted almost 4 hours yesterday, exactly what it should for light Internet browsing, news reading etc. I had LCD brightness to the max, Wi-Fi on and an external hard drive attached so I wasn’t really saving power.

I guess that the batteries sold by other “official” sources still come from the same group of vendors as this one, except that they have “official” sticker (Dell’s or somebody else’s). I don’t like paying for branding and I’m extremely happy with my purchase.

A few sites on the Internet show you how to replace the actual batteries inside the laptop packaging. This is a slightly tricky process that requires soldering and careful manipulation of the battery package (so that it can fit back into the laptop), not to mention the possibility to fry the battery and/or laptop if mishandled. With batteries as cheap as this, there’s no need to opt for do-it-yourself whatsoever.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
0 Comments
Jan
14.
2008

The headline is actually a partial quote, here’s the full quote:

Duplicating software is about as close to legally printing money as a company can get; profit margins regularly exceed 80 percent.

It comes from Jeff Atwood and is (in Internet years) quite old, from April 2007.

The blog post this appears in unfortunately talks about a different topic than I want to touch here, but here’s link for completeness.

This quote demonstrates a common misconception about software development that I will demonstrate using a well-known* Slashdot presentation style:

  1. Build the application
  2. Duplicate it (no cost to do so)
  3. Sell it
  4. Distribute it (very low cost if done over Internet)
  5. ?
  6. Profit!

The problem with this reasoning is that software is not a vacuum cleaner – it is never “done” and off to the duplication facility we go. There are bugs to fix, weird UI interactions to solve, new functionality to add (that seems obvious once a customer points to it), new marketing venues to try, new markets to win (often by adding features, if nothing else than language support) etc.

Therefore, the investment (in money and time) never ends, especially if you are a µISV or a small company. Yes, unlike traditional manufacturing, you don’t have to incur the costs of raw materials, warehouses and traditional transport (by truck or a train). But you still have to pay for computers (hosting), bandwidth, support… We just replaced one set of problems with another.

This does not mean that building software is harder than growing tomato. At least we don’t have to look into the sky and pray that there is (or there isn’t) rain. But unlike tomato production where clearly there is a cycle of seasons, our job never stops.

*That is, well-known if you’re a geek and read Slashdot. Despite all the mindless Microsoft bashing, I find Slashdot amusing and occasionally (quite rare these days) thought provoking.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
0 Comments
Jan
13.
2008

Outlook Connector: WHY??

Posted by: Drazen Dotlic in Categories: rant.
Tags:

So you have a Hotmail account (who doesn’t) and you want to use it just like you use most if not all of the other accounts – through your desktop email client. It is understood that if you are one of the proponents of the Web based email clients that this post does not apply to you.

What you’d expect is that you’ll just create a new account in your email client (most clients support many accounts), set POP3/IMAP parameters, set aside a separate folder in the email Inbox and that’s it, yes?

Wrong. Hotmail is not accessible via simple POP3 supposedly due to the large number of spammers that would then more easily abuse the service. I wonder how come Google offered POP3 access to everyone for the GMail service if this was such a huge problem.

Microsoft decided to create a project called Outlook Connector. It’s an add-in for Outlook 2003/2007 (only these two clients are supported) and to justify the creation of the whole thing they threw in a couple of extra features like synchronization of contacts, tasks and notes.

While the additional features sound nice, I wonder why this functionality isn’t integrated in the Outlook in the first place (even if it's a paid service). Most people just want to access their email and nothing more and for this task, the Connector is a horrible tool.

Connector’s UI is ugly, inconsistent with the rest of the Outlook and looks like something welded on the regular Outlook’s UI. It’s a 4+MB download that replicates basic account management UI already present in the client. Finally, it only works with Outlook (duh!) as the name implies.

A simple POP3 access for any email client would be just fine (if Google can do it, Microsoft can do it too). Why this product exists is beyond me. I think the programming effort should have been spent on better spam fighting techniques on the server and not burdening end-users will pointless add-ons.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
0 Comments
Oct
15.
2007

Ever since I went digital-only by getting rid of my traditional telecom provider (France telecom here in France) I basically lost the ability to send classical fax. But that’s OK because I need this service very rarely and only because some institutions here are not tech savvy enough to receive the scanned copies by email.

On the other hand my ISP (Free) has recently introduced a new “virtual” fax service for its subscribers. You upload a PDF file through a web form, type in the phone number of the recipient and they get a fax from you. There is a special number derived from your phone number that acts as an originating fax. If somebody sends you a fax back, you’ll get it via email as a PDF attachment.

In theory, all this sounds great. In practice, there was a very irritating problem I ran into. To send some documents, I used my newly purchased Cannon MP600 to scan them straight into PDF files. I verified that the file is nicely readable in Acrobat Reader, but when I tried to send it, instead of email confirmation I got back a message from Free fax service complaining that PDF format cannot be recognized.

It turns out that the PDF produced by Cannon MP600 is a PDF version 1.3 which for some reason Free’s software cannot read. The solution was ridiculously stupid: I “printed” the very same PDF into PDF through a virtual printer driver, producing essentially the same thing but in PDF version 1.4, which worked fine (go figure).

Why would Free reject older, more compatible PDF format in favor of newer is beyond me.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
0 Comments
Oct
10.
2007

At least in Microsoft world, the MVC pattern is back in fashion. Note that I say back and not finally. Bashing Microsoft is popular and many I’m sure believe that the move towards the MVC is just trend following, but it’s not entirely.

If you did any serious programming during nineties in C++ on Windows, you have most likely used MFC. From the very beginning MFC had MVC pattern, albeit a bit weird (it wasn’t clear is the Frame was supposed to be a controller or not). This presents a bit of a challenge for the newcomers as it’s yet another conceptual thing they have to struggle with but pays off in the long run because even rookies write relatively sane structured code from the beginning.

MVC is suspiciously absent from all three major versions of the .NET Framework and I can’t really say why. Without this foundation, most .NET apps end up a mess, or just a group of Forms with scattered business logic, DAL and view mashed up together. There is no excuse for this and I’m really disappointed in this decision.

Good for us though, thanks to the popularity of other frameworks/libraries that do use MVC or simply because MVC proponents in Microsoft finally had their voice heard (or both, or something else entirely) we’ll be (relatively) soon getting MVC for desktop and web development on the .NET platform!

Project Acropolis is bringing MVC into the desktop world (WPF oriented, but supposedly can be bolted on the Winforms as well). Just a couple of days ago Scott Guthrie demonstrated the ASP.NET MVC  framework in a surprisingly low-key way during the ALT.NET conference (video of crapish quality but watchable is available here, thanks to Scott Hanselman).

The web framework is quite a bit like Ruby on Rails, but that’s to be expected as RoR is well thought out framework. Thanks to the DLR the new ASP.NET MVC framework will most likely be immediately usable from Python and Ruby too. Great times.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
0 Comments
Oct
6.
2007

I bought 2GB or RAM the other day as I started hitting the 1GB (the amount I got when I bought my laptop 3 years ago) limit quite often lately.

Considering my previous good experience with the beta and RC versions of Vista on this same laptop, I decided to go for Vista as I was planning on rearranging my partitions anyway.

What a mistake. I lost the whole day trying to make the following work:

  1. Wireless. This was a deal-breaker in the end. Even with the March 2007 drivers from Dell site I was not able to reliably connect to my access point.
  2. Speedstep just did not work. Turns out that Dell is probably to blame here because random people on the Internet report that their old laptops’ Speedstep started working after the BIOS upgrade from the laptop manufacturer. Obviously, Dell is giving us the nudge in the direction of a new laptop purchase here.
  3. Modem did not and will never work. I think Microsoft is to blame here, but it doesn’t matter – I need modem very rarely, but when I do need it, I need it badly.

Who knows, maybe I would have discovered even more incompatibilities, but I gave up and reverted back to XP.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
0 Comments