I just heard on StackOverflow Podcast 2 that Jeff Atwood does not know C!
I was like....WHOA!!!
Joel's reaction was along the same lines... He tried his best to disguise it politely, but the opinionated software guru inside of him couldn't resist telling Jeff to learn C...
Joel is right… Go learn C Jeff! Not having ever worked with C? Now THAT is CodingHorror!
Alright... for an Evangelist or a Program Manager, it doesn't really matter that much whether you know C or not...
But for a hardcore developer, I’d always prefer someone who’s done some C programming at some point in his life! The odds of finding a "rock star coder" who doesn't know C just seem very, very low to me...
I don't remember the inner details of C anymore, but those “basic” concepts & lessons from C programming have been invaluable to me as a developer!
Lets take an example…
Consider an array of strings “abc”,”def”,”ghi” etc…
and I want to concatenate them…
I could run a loop and use a string like so...
string alphabet = “”;
alphabet = alphabet + strArr[i] ;
Or I could use a StringBuilder and append to it.
StringBuilder alphabet = new StringBuilder();
Which method will be more efficient? Why?
If you don't know the answer, both intuitively & logically, I'm guessing you haven't ever been a decent C programmer...(yet)!
I just thought of a somewhat relevant analogy...
One doesn't really HAVE to know all the deeper details of photography like exposure, shutter speeds, apertures etc to take good photos... Because modern digital cameras simplify (abstract) all this for the amateurs (like me!). Also, we can always go and tweak the photos on PhotoShop...
But do you have any doubt that there are lotsa things that expert photographers can do, that ignorant amateurs simply won't even be able to think of...
Similarly, one doesn't HAVE to have learned C to make a useful program/application.
Yet, at the same time, knowing C gives a developer this sort basic fundamental programming insight, that comes only from coding closer to the machine level. He can use the simplified and abstracted features of higher level languages like C#,VB.net much more skillfully. This gives him a much better chance of writing "technically" beautiful software.
Quick Question : How important is the "technical beauty of code"...?
Short Answer : It depends... Could be absolutely essential in some project, and absolutely unessential in another...
Bottom Line : When hiring a "hardcore developer", I'd love to have one that has lots of potential for producing beauty!
Disclaimer : Though "potential for producing beauty" or knowing C is not always the most important requirement in a developer!
Friday, 25 April 2008
I just heard on StackOverflow Podcast 2 that Jeff Atwood does not know C!
Wednesday, 23 April 2008
I was TEDing around today when I came across this awesome talk by Barry Schwartz, who's also written a book on the topic.
More Choice = More Happiness?
The notion that Freedom + Choice = Happiness + Welfare... is widely accepted as common sense. Also, we assume that More Freedom + More Choice = More Happiness + More Welfare...
And this is exactly what Barry contradicts!
Choices make people feel miserable?
Barry says that too much choice leads to "Analysis Paralysis", and decreased satisfaction!
We set unreasonably high expectations, question our choices before we even make them, and blame our failures entirely on ourselves.
I was thinking about situations in my life... and Barry is right on!
What blog platform should I use?
I was paralysed for months, first in trying to narrow down the options to the best 3 or 4. Then I had to find out all about each of their features and decide which features were more important to me. Then finally I had to choose the best platform!
I took a month to come up with a name for my blog!
I took another month to decide whether I will have one blog for everything, or one tech blog, another personal blog, and yet another hobby blog... etc...
Then I took yet another month deciding on names for each of these!
(Just today I was thinking that "WebbingMyWay" is way too loong a name... and it has no good/easy to say short form... WMW? NYAAH!)
Car or Bike?
Every morning I waste time and energy thinking about whether I should
take my bike (+get to work 5-10 mins faster, +be eco-friendly, +save money, -eat dust along the way, -bake in the sun, -risk getting stopped by the traffic cops)
take the car (+comfort, +music, -take a little longer, -less eco-friendly, - more expensive).
Now that the sun's out in all its glory here in Hyderabad I've gotten too used to the car. I don't feel like getting caked with dust while biking to work anymore. I think I'm gonna stop thinking about this every morning. Dang it! That's another choice to make!
This weekend or the next?
Man...! You don't wanna know the number of hours I've spent thinking about whether it will be better to go to Pune this weekend, or the next..., or maybe the one after that! My thumb gets sore from all the coin tossing even!
So what to choose?
Some choice is better than none, but it doesn't follow that more choice is better than some choice. There's some magical amount of choice though... that is just right. And we need to find it!
The first time I went to get a Subway Sandwich I was sooo overloaded, I took half an hour to decide what I wanted. And I dint go back to Subway for a while after! (Though today I'm sort of a Subway pro, and Subs are almost like a staple diet for me now! did they make it simpler? I'm not sure...)
As far as customer/user experience is concerned, there's a huge "Keep it Simple/Less is More" movement going on all over the web, and elsewhere lately...
The point of it all is that we need to look for that tipping point... the right balance between too much choice and too few options.
On the other hand, as a person, who makes choices everyday, I guess you need to make a quick decision, and forget about the other options immediately... It just doesn't serve you to think about it once the choice has been made, and then become miserable...
If it turns out to be the less optimal choice, go
"Hmm... *shrug* So next time I'll try that other choice. I just learned something! : )
But if only I'd trusted my instinct and done it earlier, I wouldn't have had to learn it the hard way! : (
OK... no point getting miserable now... you can still choose to be happy! : )
Choose?! Again!? I give up! : "
[I am now considering whether to post this in my personal blog or on WebbingMyWay!]
AAARRRGH! I need to have just one blog! Maybe... not...
Tuesday, 15 April 2008
Welcome to my first (of many) "GetOffMyAss Challenge"...
I've been meaning to do a LOT of things in the past year... This year, I'm getting them done!
One of them is to sharpen my Software Design skills by participating in TopCoder Design Competitions...
The other day I mentioned (yet again) wanting to start TC Design, and my friends were like, "There he goes again..." with the full on eye roll and everything. That's when I was like "Alright, I HAVE to stop procrastinating on this already!"
One source of inspiration for me was Harsha, a fellow Code4Bill finalist... This guy is something else I tell you! He just won the "Design Digital Run" at TopCoder!
The main source though is that I need to learn design, and the best (and only) way to learn design is to practice! Also I know I'll kick ass at it if only I get off my ass first!
But this time I really wanted to follow through... (I'll show them doubting, eye rolling friends!) : )
So this time, to give myself some more leverage, I set up my "Design Challenge" on the 11th of April...
1 week goal : Have TopCoder Design set up with all software, and read the "Getting Started" tutorials.
1 month goal : Make at least one design submission that passes minimum rating.
3 month goal : Win my first design contest!
The condition is that if I succeed in the 1 month goal, they take me for a huge treat, else I treat them. The treat gets bigger for the 3 months goal.
This shouldn't be too difficult...
I've already got a copy of "Head First Design Patterns"... And I will NOT hit the sack tonight before getting the TopCoder Design Environment etc set up!
There's a fair number of important/useful/significant things I've wanted to do for over a year now... but I just haven't gotten down to doing them!
I want to do this, and I'm interested in that... I want to read more than 20 different books, finish more than 2 unfinished projects, start another 3 new projects, learn 3 technologies that I should have mastered last year, pick up some new skills etc etc etc...
All good things I enjoy... But I've just never gotten down to them...
...till NOW! And this is where I start shooting down these things in my "Important but not Urgent" ToDo list...
How do I get off my arse and cut through the inertia?
By getting leverage... And that's where this post comes in...
This is the start of a number of "Challenges"... Once I've put them up on my blog, I HAVE to get off my arse and conquer them already! : )
Let the challenge begin!
Monday, 14 April 2008
The web is revolutionising the world...
We have so much information at our fingertips, and soo many services, all for FREE...
How do web companies afford to give away soo much for free?
How does this work? Why is this happening?
How is the web changing business and economic models?
And more importantly, how can one kick ass in the "free" world?
In a brilliant article, Chris Anderson, Editor of Wired Magazine answers these questions and more...
My "free" notes...
The Traditional Free...
Gillete invented "The Cross Subsidy", by giving away razors for free and making money on disposable blades...
They shift the costs from one product to another...Give away the cell phone, sell the monthly plan; make the videogame console cheap and sell expensive games; install fancy coffeemakers in offices at no charge so you can sell managers expensive coffee sachets.
The New Free..
There's a freeky new model emerging based on the fact that the cost of products themselves is falling fast.
Bandwidth, storage and processing power are becoming cheaper and cheaper..."too cheap to meter". The web is all about scale... and the falling prices are bringing the marginal costs of technology, from the point of view of individual consumer consumption closer and closer to zero.
Different models of Free...
Technology is giving companies greater flexibility in how broadly they can define their markets, allowing them more freedom to give away products or services to one set of customers while selling to another set. Every business that touches digital networks feels the effect of falling costs. Practically everything Web technology touches starts down the path to gratis, at least as far as we consumers are concerned.
Between new ways companies have found to subsidize products and the falling cost of doing business in a digital age, the opportunities to adopt a free business model of some sort have never been greater...
What's free: Web software and services, some content. Free to whom: users of the basic version.
(think Flickr and the $25-a-year Flickr Pro).
What's free: content, services, software, and more. Free to whom: everyone.
(pay-per-click text ads, pay-per-page-view banner adds)
What's free: any product that entices you to pay for something else. Free to whom: everyone willing to pay eventually, one way or another.
(give away the cell phone, make money on the plan)
· Zero marginal cost
What's free: things that can be distributed without an appreciable cost to anyone. Free to whom: everyone.
(online distribution of music)
· Labor exchange
What's free: Web sites and services. Free to whom: all users, since the act of using these sites and services actually creates something of value.
(rating stories on Digg, voting on Yahoo Answers, or using Google's 411 service)
· Gift economy
What's free: the whole enchilada, be it open source software or user-generated content. Free to whom: everyone.
Ok... But where's the money!?
To follow the money, you have to shift from a basic view of a market as a matching of two parties — buyers and sellers — to a broader sense of an ecosystem with many parties, only some of which exchange cash. The most common of the economies built around free is the three-party system. Here a third party pays to participate in a market created by a free exchange between the first two parties.
In the traditional media model, a publisher provides a product free (or nearly free) to onsumers, and advertisers pay to ride along. Radio is "free to air," and so is much of television. Likewise, newspaper and magazine publishers don't charge readers anything close to the actual cost of creating, printing, and distributing their products. They're not selling papers and magazines to
readers, they're selling readers to advertisers. It's a three-way market.
What about the Economics?!
Look at any traditional Economics text, and it will tell you that Economics is "the social science of choice under scarcity." But in this "free" world of falling costs, money isn't that scarce anymore...
What then? This is where the concept of "externalities" comes in. This concept holds that money is not the only scarcity in the world. Chief among the others are your time and respect, two factors that we've always known about but have only recently been able to measure properly. Thanks to Google, we now have a handy way to convert from reputation (PageRank) to attention (traffic) to money (ads). Anything you can consistently convert to cash is a form of currency itself, and Google plays the role of central banker for these new economies of "attention" and "reputation".
There is, presumably, a limited supply of reputation and attention in the world at any point in time. These are the new scarcities — and the world of free exists mostly to acquire these valuable assets for the sake of a business model to be identified later.
Free shifts the economy from a focus on only that which can be quantified in dollars and cents to a more realistic accounting of all the things we truly value today.Marketing in the Free World...
Seth Godin says that "The most precious commodity on a momentary basis is attention."
Chris Anderson notes that...
If you want someone's attention, you're going to have to earn it. To pay for it. To do something that makes the person who just gave you this attention feel like a fair bargain was struck. You can do that by creating a remarkable service or product. You can do it by paying them with cash. Or you can do it with free. Free undermines the typical human's proclivity to ignore every offer. Even if it's a penny, we'll ignore it. Buying attention becomes a marketing expense.
From the consumer's perspective, there is a huge difference between cheap and free. Give a product away and it can go viral. Charge a single cent for it and you're in an entirely different business, one of clawing and scratching for every customer...
...Zero is one market and any other price is another. In many cases, that's the difference between a great market and none at all.
The interesting thing about most products and services is that we won't buy them until we know what they are and what they do. And often the best and only way to do that is to use them. For some products (like music) using them once and owning them are very close to the same thing. Hence, free. You can view that as a problem or you can see it as an opportunity. Up to you.
Marketing is not advertising, not any more. It is often found in the way you make something, talk about it and yes, price it.
Wednesday, 9 April 2008
Stanford is just awesome!
The brilliant people, the entrepreneurial pulse... There's something about the energy there... that's
calling shouting out to me!
They have an "Entrepreneurship Week" every year, and the last one was in Feb 08.
They got some seasoned entrepreneurs together to interact with the students, to inspire them, and to share some of their hard earned entrepreneurial wisdom.
They also had "The Stanford Innovation Tournament"...
You HAVE to check out the winners!
Your challenge is to create as much value as possible using rubber bands.
You can use as many as you want, of any size, shape, or color. Value can be measured on any scale you choose.
Remember, value comes from actually implementing your ideas and delivering results.
To be successful, challenge assumptions, seize opportunities, be creative, and Make it Happen!
My favourite is... umm... lets save it for another post...
In my last post, I explored some "Naming Guidelines for Web Apps and Companies"...
I'd been hunting for the right name for my blog for almost a week... But I wasn't getting anywhere closer to finding THE name yet.
I knew what my blog was going to be about... "Notes, thoughts, and ramblings on software, entrepreneurship and the web".
So all that was left was to find a name thats...
- easy to spell,
- fun to pronounce etc etc.
- AND manages to signify what my blog is about,
Oh and the last little detail... the domain name must be available!
I looked at some of my favourite blogs for inspiration.
I dint want to use PratikStephen.com for this blog (a la Paul Graham).
I dint want to call it pratikstephen.blogspot.com(a la Steve Yegge and Seth Godin).
PratikOnSoftware dint quite sound right (a la Joel Spolsky).
I thought about PratikOnTheWeb... but nyeaahh...
I liked RandsInResponse and CodingHorror as names... but couldn’t think of anything there...
...till “PseudoProgrammer” struck me.
Ok, not short, kinda catchy, definitely not sexy, but it does kinda summarise my blog, in that it’s not a hardcore tech blog about multithreading, compilers and assembly language.
I thought it’d be cool... that when the blog takes off, people might say “The PseudoProgrammer wrote this brilliant, insightful and entertaining post about...”
But when I asked a couple of people, most were like it’s too long, and pointed out that “pseudo” has too much of a negative connotation...
Plus I liked it, but dint love it.
Next was PseudoTech! As in Pratik’s PseudoTech Blog... but pseudotech.com was taken!
Then came PseudoTechie... which was nyeaaaahhh!
Then came WebWay, which was not available, TheWebWay wasn’t available either...
WeavingTheWeb, WebWeaver, WebSlice (Mahen’s suggestion) and WebbingTheWay were all taken!
That’s when “WebbingMyWay” hit me... and it was available!
I snapped it up immediately... It sounds good... and it summarises my blog pretty well too!
Tuesday, 8 April 2008
The amount of time I've spent thinking about the right name for my blog is insane!
But then again, having the right name IS super important!
Ask Mr. Lakshmi Kiran Khadalavda... or Aparshakti... or Sage Moonblood (Sylvester Stallone's kid), and they'll tell you...
(I guess some parents just love being creative more than they love their kids...)
No offense parents/kids! Those are... well... unique names!
Anyways, I love my blog, and I don’t want other blogs to make fun of my blog when my blog becomes big. So I put a good deal of thought into the name.
There are a number of “Naming Guidelines” for websites like keeping it simple, short n easy to spell. These made sense before the google age, when people used to (had to) actually type out the url... Also, back then, every “PerfectName.com” you thought of wasn’t already taken.
Lately though, its all about “NamingGuidelines 2.0” with all the web2.0 fluff...
The name has to be unique, googlable, full of keywords etc.
Also, it positively must look like a 5 year old got the spelling wrong! (So that you have a decent chance of getting “PurrfectName.com”... Which also happens to be cute and hence resonates with customers.)
One interesting thing I noticed is that most of the most popular Web Apps/Sites out there have names that follow the same pattern...
They all have two syllables, one stressed syllable followed by an unstressed syllable.
To have added effect throw in some alliteration... like Google, PayPal, YouTube etc.
These words "sound nice" and tend to roll off the tongue easy.
But then again, that’s all about naming web applications and companies... What about naming a blog?
What should I name my blog!?