Archive

Archive for December, 2007

Social Skills

December 5th, 2007

Occasionally, I will go back and reread some of Paul Graham’s essays, of which I am a huge fan. Recently I re-stumbled upon Why Smart People Have Bad Ideas. I had somehow missed his recommendation to read How to Win Friends and Influence People, so I picked up a copy (the 11th printing, from 1937, as per his recommendation). What a worthwhile read. The book describes several things that will make you say “now why didn’t I think of that?” I tend to have a good temper (at least most of the time), and I feel that the points made in this book will allow me to take advantage of that to help advance my relations with others.

That being said, I would like to add to what Jessica Mah, who I have had the pleasure of meeting while in Silicon Valley, said about geeks, startups, and social skills. I feel that the social skills Jessica is (or was) looking for in a cofounder are by far not teachable by a mere book. I have met many of the types of people Jessica refers too (I go to Carnegie Mellon, which has more that its fair share of smart people, both with and without social skills), and have found that they generally fall into the following categories:

  • Don’t Realize - These people simply undervalue the importance of social skills to their lives. They feel that the pursuit of knowledge is sufficient to make them successful entrepreneurs. For them, a book on human relations will at most allow them to realize the importance of human relations, it will not teach it to them.
  • Don’t Know - These people realize that social skills are important, but for one reason or another (too shy, don’t know where to start, etc) aren’t developing them. The best a human relations book can do for them is help them build the confidence to start being more social.
  • Don’t Care - These people are the real tough case, and I’ve been fortunate enough to only have met a few. These people consider themselves so high above the rest of society because they think they are better at something than everyone else (the most common is intelligence, but I’ve found “Don’t Care” people who are so because they feel they are more socially capable than others…paradoxical, I know). They see no need to be more social to people because they’re better than them anyway. These people are difficult to work with, and I have yet to be able to interact with them calmly (like I said, a good temper most of the time), so I will not give my opinion on them.

Note that most these people are more than capable of being successful, but problems arise when they try to go into business with these beliefs. Ignoring or undervaluing human relations is a huge problem, since by definition the field of business and the art of interacting with others go hand-in-hand.

The key here is that the basic concepts of human relations…those the allow for the concepts taught in human relations books to be applied, such as sincerity and kindness, cannot be taught. The attitudes and body language that convey these feelings to other people must be learned by doing.

So, to all the geeks out there, get the hell out of your rooms. If you’re in Silicon Valley, go to Super Happy Dev House and Lunch 2.0. If you’re at college, join a club, whether it be juggling, robotics, or debate, at least you’ll be meeting people. Even if you’re shy, merely watching people interact constructively will do a world of good.

Update - Apparently Jessica didn’t mean to imply that social skills can be taught by books…changed my wording to reflect this.

, ,

The Cost of Web Development

December 2nd, 2007

Douglas Crockford has a very interesting article on fixing HTML. He points out many of the most annoying things about HTML that make web development difficult. The currently proposed HTML spec only fixes one thing as far as I can see (being a developer), the addition of more specific types of inputs: time, date, email, etc. The W3C has consistently done a poor job, as do most standards bodies, at rapidly improving their spec due to the semi-understandable fear of pissing people off by breaking standard. Yes, I know that backwards compatibility is important, but is it worth the years upon years of expense in training, debugging, extra staff, etc just so that companies don’t have an extra inconvenience of having to maintain two versions for a few years?

But this post is not about new HTML standards (nor is it an IE bash, though it may appear so initially). It’s about the cost of developing to different specifications, and a proposed solution.

I’ve noticed that at every company I’ve been with, at some point I have this discussion:

Me: Man, these cross-browser bugs are annoying
Coworker: Yea, I spend more time adding in hacks than I do developing
Me: I bet if there was one browser out there web companies would save billions in development
Coworker: Yea, I can’t really thing of a reason not to only have one browser

Then we both go back to coding out IE hacks

It’s an undeniable fact that cross-browser compatibility is a huge black hole when it comes to productivity. Design, development, QA, nearly the whole process is bogged down by having to take this into account. Why? When it comes to developing for Windows/Macs/*nix it is at least justifiable: there’s big money in OSes (at least for now). Browsers? Maybe, though it’s arguable, especially since there are free open-source ones with fast release cycles and mature feature sets. My question is why are there different rendering engines?

And that leads into my proposed solution, which, for perspective’s sake, warrants an analogy:

Consider the consequences if the DNS namespace were like the current browser situations. There would be one major DNS provider, the default on most computers sold, along with one popular one with around 20% market share, and some smaller ones. There are a bunch of hacks in place to try and ensure that people using one DNS could still view sites from another provider, and sites will register with a bunch of DNSs, but if your not using the hacks and the company doesn’t have the finances to register with all these DNSs, you’re out of luck.

Sounds ridiculous, right? The solution to prevent this is supposedly ICANN. Granted, this organization has its issues, the internet as a whole seems to be better off with it. So why not do the same thing with rendering engines?

Why not have an organization, say for example the WHATWG, be the sole developer and distributor of a rendering engine. Just like how the Linux kernel is used by all Linux distributions, make this renderer’s source code the de facto standard for web parsing. Changes to the way it parses things would be discussed in a public forum, with significant input by all browser developers, and implemented accordingly. Of course, there would be a distinct line between renderer features and browser features, with things such as default style of buttons and how spell checking is visualized left to the individual browser, but things like size of default buttons, graceful failing, etc, specified in the renderer.

Granted, I’m sure this solution has been proposed before, but usually more along the lines of “why doesn’t everybody use Firefox.” I feel this is a better compromise…browsers can still have their silly little war, users would no longer have rendering issues, companies would no longer have twice the development time, new specs would be adopted much faster, bug fixes could be implemented much more quickly, and so on and so forth. Everybody wins!

I can see Mozilla and Opera going for this very quickly. Apple shouldn’t be hard to convince. The big issue would be Microsoft (not to single them out, but they do seem to be the most stubborn). Development resources are nothing to them, and they have a lot of IE-only sites that take advantage of IE’s quirks, such as Outlook Web Access, along with lots of sites. They also probably see IE-only sites as a hindrance to Firefox growth, which would discourage participation.

The solution? There’s always the “because the government said so” option, where they provide either massive incentive or legal requirement to use this spec (i.e. giving the body that makes this spec a legal monopoly, just like the power companies). Then there’s the PR option. Similar to Intel’s Intel Inside&rest; campaign, make the render brand a household name. Make people question why IE doesn’t use it. The final nuke that can be dropped on Microsoft’s headquarters is an idea that also came from my workplace conversations. If two or three major websites, say Google and Yahoo, which control over 75% of the search market (up to 90%, depending on who you ask), do one of three things, alternative browser usage would jump significantly:

  1. If they block all users not using the recommended renderer, even for a day, and provide easy instructions on installing another browser, millions would switch. Of course, they would lose millions of dollars, but the amount they would save in development costs would make it worth it. Even the mere threat of this, coupled with a deadline, could cause MS to change their minds.
  2. If they put up a prominent icon recommending a compliant browser, it would cost them a few pixels and virtually no revenue, and would get plenty of people to switch, again, doing this, if it yields results, would force MS to reevaluate their stance so as to not risk losing significant market share
  3. Stop developing for IE, allow it to become deprecated. This would have to be done carefully, perhaps with a notice at the top explaining that other “better” browsers provide enhanced functionality. If not done well, users would simply go to a competitor (as is the risk with option 1, but that’s short term, whereas this isn’t), but if done carefully and over enough websites, it would slowly force either IE to conform, or users to switch (browser or website, hopefully the former).

Note that I’m singling out IE here since Microsoft is historically stubborn…these methods would work with any browser, especially smaller ones who don’t have as much pull as IE.

So there you have it, a perfectly reasonable solution to the browser wars, or better yet a way to not let it impact other fields. Stop being stubborn internet (like that will ever happen…)!

, , ,