Showing posts with label Technology. Show all posts
Showing posts with label Technology. Show all posts

Saturday, August 11, 2012

A Little South of Perfection: Idealism vs. Pragamatism

So, I woke up this morning musing about idealism vs. pragmatism in the field of software development -- but also applies elsewhere. Many of us at some point or another have had ideas, concepts, visions for a product, bug fix, enhancement and so forth. Whether due to nature or nurture, we tend to strive for perfection, but that’s a lofty (and often impossible) goal to attain and one that’s likely to discourage you somewhere along the way.

How many times have you started a project (be it software or any other kind), for some time you keep chiseling away your idea and then sometime later look at all the work needed to get from where you are at all the way to “perfection” and feel somewhat or completely discouraged (and possibly abandon the idea altogether)? I know I have, many times. So, is the mantra of “aim for the stars” actually a detriment or a self-defeating ideal? Well, I wouldn’t say that; not in and of itself. Aiming for perfection is a good and noble source of motivation, but shouldn’t be your main goal, in my opinion. So, you may ask, “what should my goals be?” Well, without know the specifics,all I can recommend is: a little south of perfection and a bit north of “good enough”.

In the software world perfection might come in the form of 100% test coverage, 100% feature-completeness, 100% automated deployments, properly styled every nook and cranny of your web app and so forth. But, in doing so we face a rather formidable law of nature (that Economists borrowed): the law of diminishing returns and increasing marginal cost. So, how much is it going to cost you to have 95% test coverage vs 91%? How much effort it will take to have your product to be 100% tested/deployed automatically as opposed to having all but two steps being manual steps? How much will it cost you to have your app 100% UI/UX reviewed/designed as opposed to having, say, the 75% most used parts of the UI UX reviewed/designed and the rest get “generic” treatment? In my opinion, even without knowing the process you use or the funding style the answer to all of the above is: too damn expensive. Perfection is expensive, very expensive.

Don’t mischaracterize what I’m positing here. I’m not making an argument for mediocrity and sloppy software. I’m putting forth the argument that a little better than “good enough” is the so-called sweet spot and that perfection, in as good and tantalizing as it sounds, is actually not a place you’d want to pay your journey to. If you want a more concrete example of the message I’m trying to convey, consider Google, for instance. Google strives for “really good”, not perfection. All their services are great (and many of them are right out mind blowing), but none of them is perfect. Their services may lack a few “featurettes”, might not enjoy perfect UI, might do unexpected things, have little bugs, etc. and yet they still are, by any measure, really good products.  For something smaller, consider turntable.fm. They’re far from perfect: they lack some key features that should be there for a social app, their phone and tablet apps have a somewhat clunky UI and yet people keep using the service. Why? because the service/app provides a lot of value and works great at its core while leaving the imperfections for “later.”

Just to reiterate, perfection is great as motivation, not as an end-goal. And don’t forget to head a little south of perfection and a little north of “good enough” if you really want to get things done.

Tuesday, March 20, 2012

The Long (Space Age) Hiatus Needs To End

Recently I've been reading and watching documentaries about the Voyager mission. The more I've learned about it, the more flabbergasted I've become at the long hiatus we, as a society, have taken about exploring outer space. Sure, we all awe at the breathtaking images the venerable Hubble Space Telescope and certainly felt utmost excitement when the Mars Pathfinder sent the images of our red planetary neighbor. However, at this point, I think we have all but abandoned space research. We, as society, leave that task  to the academicians and practitioners at NASA (or its subsidiaries) without much care whether they take their funding away, or budget constraints put missions on indefinite stand-by. I find perplexing that with the incredible advances in science and technology in the last twenty years, we don't have plans to have a human on mars in, say, the next ten years. We are perching on information from a mission that was conceived and launched thirty-plus years ago. Those people, that generation didn't have the technology we have today -- not even in their remote dreams. They had to MAKE the technology. They endeavored in a mission they had anecdotal information about. They pushed forward with a lot of theoretical knowledge, but very little, if any, practical sapience. They painstakingly designed gear to withstand the trip, and then when they found out that those specs were not going to be sufficient to survive the hazards of inter planetary travel, they redesigned and retooled it pretty much on the fly: everything from electronics, to the vessel itself. There was a huge push and pressure to get it right. It was much more than seeing the giants of the solar system "up close". It was about expanding the bounds of human knowledge. And at that, I would say, the Voyager Mission was a colossal success that caused "shockwaves" we still hear about  to this day.

Why should we not do that again but with loftier goals?  Why can't we think about and beyond of what's known? We have gained a substantial amount of knowledge and technology since the Voyager Mission set sail, in terms of materials science, computer science, electronics, telecommunications and so forth. Why not harness that in order to learn more about our solar system? Let's send a drone to do "Recon", if you will, of Venus' crust? Let's learn more about Io, Europa, Callisto and Ganymede. Let's send space craft there, take samples and bring them back! Imagine being able to see/examine/study a piece of the crust of one of Jupiter's moons? How about sending probes to Neptune and Triton. You get the idea: let's expand the bounds of human knowledge again! If we can spend days musing about HTML semantics, distributed databases, metrics and code poetry, we surely can support those who spend their days musing about the exact chemical make-up of a distant planet or what would it take to put a human on Mars (and back). I think it's crucial we get the Space Age back to the forefront and as a priority for the advancement of the human race.

 

Friday, March 2, 2012

A brief rant about CAPTCHA's and ReCAPTCHAs

To me this is a good case study in and of itself, but since I'm neither an academician, nor do I get research money to do so, I'm going to briefly say why optical-obfuscation CAPTCHAs, in general, should be mercy-killed.

1. It's mainly an anti-OCR measure, but, the smarter OCR clients get, the more convoluted the challenge words get. Soon enough, it'll be so convoluted that a human won't be able to discern the characters.

2. It's a bad user experience if just about everywhere they go, they have to type CAPTCHA codes (specially if they're annoyingly obfuscated)

3. There HAS TO BE a much better way to tell humans and computers apart. I refuse to believe that OCR (for web UIs) is the most optimal solution to combat automatons. Humans have the emotional and cognitive abilities to be able to respond challenges that even sophisticated AIs cannot, so why not use that to develop a solid system that doesn't involve brute-force obfuscation of optical characters?

/rant