Friday, October 19, 2007

A good instant messenger status message

Hi all,
Here's a good instant messenger status message I came across that I felt like sharing with people around. (Thanks to my cousin Roshan for this, for it was from him that I picked it up)

Message:
Here's the test to find whether you mission on Earth is finished: if you're alive, it isn't.
- Richard David Bach (author of 'Jonathan Livingston Seagull')

Sunday, May 06, 2007

Two movies .. and probably destiny ..

This weekend was one in which I chose to spend some time quietly with myself - A mood that I get into sometimes when you feel something's not just right with the way things are going on. People around you are happy, things at work are going great, you've got some good compliments from your boss, from friends .. still .. something feels wrong.

I guess resigning to myself in these times has generally brought out the best .. interesting part is that .. I am a firm non-believer in destiny .. so much so that I believe that God is my friend and guide in life rather than someone above .. that is probably one of the reasons I really do not pray. That does not mean I am a non-believer, I believe in the power of God to guide me .. but .. BUT .. only as a guide .. If I want something, it is ME who will have to do it ..

As usual, I got the guidance ;) and again, as usual, in an unexpected way (This is where I begin to wonder whether there is something in this "destiny" thingy ;) ). This time it was in the form of 2 beautiful films.

The first one, "The Hurricane" (http://www.imdb.com/title/tt0174856/) .. wow .. this one really blew me away. It was a beautiful portrayal of a mind which refused to give in to what was being forced on it. Another movie of the same cadre is the "The Shawshank Redemption".

The next one is something I've seen before .. found on rummaging through my disc collection in the hope of bringing some order .. (after all, discs were invented for random access .. geeks/nerds .. pardon the irony ;) ) .. this one is a marvellous piece no matter how many times I see it "Spanglish" (http://www.imdb.com/title/tt0371246/) . This one's about believing in your identity .. in what defines you ..

The beauty of films is the way they let you relive the emotions that the characters play. Am thankful for having found these two films this weekend to get back on track and thank God for making some film-makers follow their heart to produce such films.

Sunday, April 15, 2007

Lessons for Online Business


Got the following in a forward from a friend. Could not trace the origin of this article but really good stuff. If somebody finds the source, could you please let me know so that I can duly acknowledge it here.

- Hemanth


-----------------------------------------------------------------------------


It's 3:00 am and I just finished watching 300 for the second time (this time in IMAX). I sit here struck by a moment of clarity. Frank Miller must be an online entrepreneur in his spare time because 300 is the perfect metaphor for online business. Now I know what you're thinking, this guy has completely lost it, and to be honest, that might be not far from the truth
Nevertheless, here are 10 Lessons Frank Miller's 300 can teach you about successful online business…


Know your surroundings, and choose the battleground that most suits your strengths


Just as King Leonidas chose the Hot Gates as the perfect location for Sparta's stand against the Persians, the same methodology applies to deciding on the niche and hook for your new online enterprise. Do your research and pick an avenue where your skills will thrive and your competition will fall. Choose a plan of action that highlights your skills while taking away advantages of your predecessors. Just make sure you cover your back at the goat path! You never know who's sneaking up behind you!


A handful of well trained soldiers can out-perform thousands of weak ones.

The Spartan 300 stood against the million Persians for days because they were strong, well trained, and powerful. The same holds true for sites in the online marketplace. A well done site, where the owner takes the time to build a community and support it with continuous, quality content, has the best chance for success, even against hundreds of sub par competitors. At the end of the day, any successful formula requires repeat business, and you can't get repeat business if your soldiers died in battle!

A few good friends is better than an army of acquaintances.

The Spartan 300 drew their strength from their family of fellow soldiers on the battlefield. When it comes to online business, the temptation to work your way from one end of the web to the other begging for links is very high. Take the time to actually contribute to community sites like Digg, DigitalPoint, or even blogs you read every day. In the end, it will take you much farther by becoming a respected community member then a single comment that is never revisited ever could.


The gods aren't always right, do what's best for yourself, above all else.

King Leonidas knew that the Ephor were wrong when they advised him to stand down on the eve of battle. In online business, it is far too easy to read advice from people with sites that are more popular than yours and take it to heart. A lot of this advice is good but a lot of it is bad as well. Taking the wrong advice can cut you off from avenues that may be right for you, even if it wasn't for the person who gave it. Always do what is best for yourself, and never be afraid to experiment. After all, the Gods were all in the same position as you at one point in time. Remember that!


Keep your skill set sharp, cause you never know when you might have to defend yourself.

At a moments notice, the Spartans were ready to march into battle, with no hesitation. The same applies to EVERY area of business. Never stop learning, experimenting, and improving yourself. The moment you drop your guard, is the same moment your opponents take away your land.

Never retreat, never surrender.

Even to the bitter end, King Leonidas and his 300 fought for Greece, never retreating and never surrendering. While it's not so cut and dry in online business, in most cases this is great advice. A lot of people quit because it gets too tough to maintain their blog or too hard to keep the products up to date on their website. If you retreat, if you surrender, you'll never know if a month or two more of hard work might have paid off. You'll also never be a Spartan!

Constantly adapt to your changing situation, it's the only way to survive.

When the Persians dispatched Rhinos, the Spartans adapted and prevailed. When they charged in with elephants, they adapted and once again came out the victor. The web marketplace is no different. Technology is CONSTANTLY changing. If you want to stand atop a mountain of defeated competitors, you have to stay on the bleeding edge of technological advances to ensure your ready to ride the new wave the second it arrives. A spear is fine and dandy, until your opponent charges in with Lasers!

Never be satisfied with your past accomplishments, it might just get you kicked down a bottomless pit.

When the Persian messenger delivered his ultimatum to King Leonidas, he was cocky and backed himself up by the past accomplishments of the Persian Empire. What did he get for that? A trip to the bottom of a bottomless pit! (is that even possible???). While success is great, always look to improve on what you've done and never underestimate your competitors. The Web 2.0 world moves so fast that one days champion can be another days failure in the blink of an eye. Don't let your site get kicked into the pit. THIS IS SPARTA!!

Even a man-god can bleed.

King Leonidas proved that even the seemingly untouchable Xerxes was capable of bleeding after all. It is easy to look at the true juggernauts in a specific field and think it's impossible to compete against someone of that size. No one is untouchable, and great ideas rule the world. Be innovative, be cutting edge, and most of all be fearless even in the face of god-like competition. The history of the Web is littered with stories of the little guy rising up to conquer the great Internet beasts, with nothing but a better idea to drive them. As King Leonidas showed his Spartans, not everyone who seems like a God really is one!

Even if you're a hideous, misshapen troll, the right networking can get you riches and women.

Even in his hideously grotesque form, Ephialtes knew the value of networking. He made friends with Xerxes who ended up helping him to both riches and companionship. While you most certainly can use the web to find companionship through networking, from a business side networking can help you improve your income by leaps and bounds. If you make friends with other people in your niche, work on link exchanges and mutually beneficial collaborations, and actively contribute to sites with quality feedback and comments, there is no limit to the opportunities ahead of you. Know your strengths and know your weaknesses, and use networking to take advantage of both. If you can't be successful in one route, look at others. Constantly keep your best interests at the forefront of your decision making process.

Sunday, February 04, 2007

The Art of Interviewing



Had always wanted to know what it is like to sit on the other side of the table. But, ironically, one year and about a hundred interviews later, I realized that it is all about being on the same side of the table. Interviewing, I realized, is about sketching the character of a person; and the simplest way to do it is to make the person feel at home in the interview. Otherwise, you unfortunately have the task of figuring out the "true" from the "superficial".

So that's rule number 1: Make the candidate feel at home.


Call him boss or bhai (as we call any friend in India), just make the candidate feel comfortable; anyway you want it. Sometimes, if possible, sit on the same side of the table as the interviewee to stress the fact that you are just there to support their thinking and not to criticize it. Setting the stage can also depend on the candidate. Some candidates are nervous at the start. In such cases, I have found that a small chat about their hobby or favorite game helps a lot. For a geeky guy, a talk about the algorithm in his project or some interesting recent tool he worked on etc. sets the tempo. We also don't have any dress code for the interviews at our company. We just ask the candidates to dress in any way they are comfortable.

...

Another important fact about interviewing is that you are there to make a decision.
So never have an analagous answer scale - he was good but ..., he was average but good on some factors etc ...

The answer has to be a definite "Yes" or "No". The simple logic behind this is that you "might" just lose a good candidate by saying a "No" but the fact is that you will always mostly be able to find another good candidate. On the other hand, a misjudged "Yes" can cost the company dearly over a long term.

So rule number 2: Make a clear decision.

...

Interviewer: What do you do if you want to reverse a linked list?
Candidate: I would just iterate over the linked list editing pointers and go on ....
Interviewer: Hmm ... how do you do it recursively?

Find anything odd in the situation above? Well, the point to make here is that people think differently. So do not try to force your idea or solution onto the candidate. The best interviewers build the interview around the thought process of the candidate. So every interview might be unique inspite of the same questions being asked.

That makes rule number 3: Listen and adapt.

...

Another thing to have in mind while preparing questions for an interview is to decide carefully around what each question tells you about the candidate. Jot down the various areas you want to evaluate the candidate on. Plan the questions and discussion accordingly. You can wrap up the interview at any time you have collected all the data points you were looking for. This will greatly improve the efficiency of the interviewing process.


Thereby, rule number 4: Have an evaluation plan.

...

There is generally a false notion that you need to ask really tough questions to pick out the best candidates. In this sense, there is also a dread in many interviewer's minds is that - if the candidate already knew the answer to that question, then they might not have got a clear idea of the candidate's capabilities.

The best way to counter this is to focus on the discussion around the problem rather than on the actual solution. So design your questions in a way that they involve some discussion. Even if candidates know the question, you can easily judge their prowess from the way they describe and validate the solution. Maybe, ask a few variations on the original question to see how they improvize.

So here goes rule number 5: Focus on the discussion; not on the solution.

...

For industry hires, the best way to recognize a good software engineer is from his code. So, the questions asked are pretty simple. What we need to concentrate on is on the elegance of the solution. This is closely related to my previous article http://ynaut.blogspot.com/2007/01/code-is-beautiful.html . It is about finding how deep a foundation have the coding practices laid into their daily work.

Rule number 6: Ask the candidate to code!

Guess I did learn some of these stuff personally over experience and also from this link

http://www.joelonsoftware.com/articles/GuerrillaInterviewing3.html. So this post is probably my summarization of Joel's article with a few of my own hints.


Overall, I hope you found this article informative.


Signing off.

Sunday, January 28, 2007

Code is Beautiful



If you ask me what is the difference in me as a programmer from the time I left college, I would say it is my view of coding. At college, I loved algorithmic problems. It used to be a favorite post-lunch past time at college; a bunch of us huddling around the Bodhi tree right outside our department building and have a go at some wacky problems. We also used to have rapid-fire coding sessions where we used to code in-order to verify the ‘correctness’ of the algorithms.

Nowadays, as well, it is the same intensity with which myself and few of my colleagues solve problems, but when it comes down to coding them, well, there’s a big difference now….

A simple example, to give you an idea,

int x, y, z; // in college days

is nowadays,

int noOfVertices;

int noOfEdges;

int edgeConnectivity;


and that too, in different portions of the program, i.e. closer to the context where they are used. Guess you are getting the point.

This love for coding started with the exposure to real-neat enterprise scalable code in the organization. It was not love at first sight though. The very first time I saw how many lines of code change you needed to do something which took about one line of code at college, I was a bit aghast. At first, it gives you the feeling that this is probably some rule of conduct in the industry that classifies it as ‘enterprise’ code.

But very soon the dynamic nature of the software requirements and functionality hits you in the face and you realize the beauty of those lines of code that looked so abstract early on.

Welcome, to the world of design patterns. These nifty set of tips and tricks take the pain of software maintainability away from software developers. But it is important as well that they do not overwhelm you. Two points in this sense are to be noted:
- Inappropriate use of design patterns.
- Overdoing of design patterns.

A few books that are worth mentioning in this context that help you avoid the above pitfalls are
Effective Java (http://java.sun.com/docs/books/effective/)

Agile Software Development, Principles, Patterns, and Practices (http://www.amazon.com/Software-Development-Principles-Patterns-Practices/dp/0135974445)

So one of my favorite questions at industry interviews is to ask the person to write some really simple recursive code. Recursive code in-spite of not being the optimal solution in many cases still catches my imagination because of the magic in the way it works. It’s really amazing how a few lines of code can neatly portray the solution to a really complex problem. Potential hires come up with neat and concise code. It also pays to observe the gleam in their eyes as they explain the solution to you. You know that you have a good candidate.

Will cover the “Art of Interviewing” separately in a later post. It’s a cool and very responsible art of sketching the character of a person in half-an-hour.

Signing off.

Saturday, January 27, 2007

Management - What it should really be


If you are looking at some really good discourse on management and software practices, then please move on to http://www.joelonsoftware.com/Archive.html.

This post is from a yankee who landed in the industry in 2004 right out of college looking for some really challenging techie work. Must say that my career here so far has provided me with lots of those, but interestingly, it has also taken me through a roller coaster ride on how exactly do you lead a bunch of people.

Even though at college, we had learnt the principles that make a single guy at the top to manage an extremely large organisation with thousands of employees under him - Hierarchy and Delegation. All that sounded very nice when we learnt it, but once in the industry, the reality bites you hard. How I just wish delegation just meant transfer some of your responsibilities to a person below and get the work done. Probably, it might work fine in software design where-in high-level modules delegate their work to low-level modules. But it is just not the case when individuals are involved.

To get to the point, Management, in short, is about,
- Respecting the individuals under you.
- Trusting the individuals under you.
- Caring for the individuals under you.

[probably I reiterate the term "individuals" often as against "people" but that more goes to say the stress am laying on it]

Management is in reality all about relationships with individuals. Management is personal. In another sense, management is about listening. The more you listen, the more you understand the individuals under you and the better you can care for them.

That is why, people, ahem, sorry, 'individuals', more often don't leave their jobs; they leave their managers. So the key to building a great place to work is not about having great paychecks or great perks for employees. It is just about having a mechanism in place that ensures that managers care for those under them. Any organization that achieves this, whether it be a mammoth organization with thousands of employees or any run-of-the-mill organization with half a dozen employess, is sure to be a great place to work.

Another common misconception in many employees mind's is that once you rise to management levels, all you need to work around with are schedules and deadlines. So when it so happens that such employees do permeate to higher levels, the life becomes tough for those down under.

I would like to sign off for now with the role of management as defined on this site (http://www.fogcreek.com/About.html), [the CEO of this company is the guy who writes the JoelOnSoftware blog (link in the first line of this post), it is one of my favorite sites, so please bear with me if I keep getting back to this site in my future ramblings.]

" ... management, not coding, is the support function. Management is not here to make decisions, but to get all the furniture out of the way so that software developers can do great stuff. ... "