Simplicity, and yet refined Sophistication

Watched a rare interview of Steve Jobs circa 1980 yesterday. That man was a genius. He knew what he wanted 30 years ago. And I believe he accomplished what he wanted. *RESPECT*

Some key points that just blew my mind away:

  • Man builds tools to amplify his abilities.
  • A computer is a tool to help you solve a problem. But we throw a big problem betwn you and your problem-learn how to use the computer. Our goal is to simplify that problem between you and your problem as much as possible”
  • For some crazy reason in the Universe (that I dont know about), two people in Los Altos and Cupertino had a need for a computer (and built), that a million other people want. Crazy that this fits the exact same need of all these people.
  • The name “Apple computers” represented what we wanted as a culture – simplicity and yet very refined sophistication”.
  • We should be talking about solutions, and not hardware or software. It is the solution that should just work – whatever it takes.
  • Comparison of Automobiles to Computers. Dump trucks, cars, buses – they have pretty much the same parts – transmissions, steering mechanisms, wheels, seats. They are all a means of transportation. What they differ on is emphasis on its function. Same way, we will build Apple computers with an emphasis that we will refine and define.
  • We have about 500 people. We will probably do between a 150 and 200 million dollars of sales. If you divide this by the number of employees, the sales $ per employee that you will get is probably a number that no one ever has heard of before. Thats because we have the most incredible collection of people on the planet.

 

Quotable quotes from Steve Jobs

Yes, there are many many more. But a couple that I came across today morning, that are worth mentioning.

On focus groups?

“It’s really hard to design products by focus groups. A lot of times, people don’t know what they want until you show it to them.”

“You can’t just ask customers what they want and then try to give that to them. By the time you get it built, they’ll want something new.”

On creativity

“Creativity is just connecting things. When you ask creative people how they did something, they feel a little guilty because they didn’t really do it, they just saw something.

On how innovation really happens

“But innovation comes from people meeting up in the hallways or calling each other at 10:30 at night with a new idea, or because they realized something that shoots holes in how we’ve been thinking about a problem. It’s ad hoc meetings of six people called by someone who thinks he has figured out the coolest new thing ever and who wants to know what other people think of his idea.”

On designing products

“Design is a funny word. Some people think design means how it looks. But of course, if you dig deeper, it’s really how it works… To design something really well, you have to get it. You have to really grok what it’s all about. It takes a passionate commitment to really thoroughly understand something, chew it up, not just quickly swallow it. Most people don’t take the time to do that.”

And ofcourse, the quote from his famous Stanford Commencement Speech –

“You can’t connect the dots looking forward; you can only connect them looking backwards. So you have to trust that the dots will somehow connect in your future.”

Thanks are due to Inc.com, from where I found these.

Icon Ambulance

n
Steve Jobs (Circa 1981) - Source nymag.com

An incident narrated by Vic Gundotra about Steve Jobs. Beautiful and touching.

Icon Ambulance

One Sunday morning, January 6th, 2008 I was attending religious services when my cell phone vibrated. As discreetly as possible, I checked the phone and noticed that my phone said “Caller ID unknown”. I choose to ignore.

After services, as I was walking to my car with my family, I checked my cell phone messages. The message left was from Steve Jobs. “Vic, can you call me at home? I have something urgent to discuss” it said.

Before I even reached my car, I called Steve Jobs back. I was responsible for all mobile applications at Google, and in that role, had regular dealings with Steve. It was one of the perks of the job.

“Hey Steve – this is Vic”, I said. “I’m sorry I didn’t answer your call earlier. I was in religious services, and the caller ID said unknown, so I didn’t pick up”.

Steve laughed. He said, “Vic, unless the Caller ID said ‘GOD’, you should never pick up during services”.

I laughed nervously. After all, while it was customary for Steve to call during the week upset about something, it was unusual for him to call me on Sunday and ask me to call his home. I wondered what was so important?

“So Vic, we have an urgent issue, one that I need addressed right away. I’ve already assigned someone from my team to help you, and I hope you can fix this tomorrow” said Steve.

“I’ve been looking at the Google logo on the iPhone and I’m not happy with the icon. The second O in Google doesn’t have the right yellow gradient. It’s just wrong and I’m going to have Greg fix it tomorrow. Is that okay with you?”

Of course this was okay with me. A few minutes later on that Sunday I received an email from Steve with the subject “Icon Ambulance”. The email directed me to work with Greg Christie to fix the icon.

Since I was 11 years old and fell in love with an Apple II, I have dozens of stories to tell about Apple products. They have been a part of my life for decades. Even when I worked for 15 years for Bill Gates at Microsoft, I had a huge admiration for Steve and what Apple had produced.

But in the end, when I think about leadership, passion and attention to detail, I think back to the call I received from Steve Jobs on a Sunday morning in January. It was a lesson I’ll never forget. CEOs should care about details. Even shades of yellow. On a Sunday.

To one of the greatest leaders I’ve ever met, my prayers and hopes are with you Steve.

-Vic

Source: [link]

Can you beat Apple?

Jason Kottke has  a very compelling article on the few weaknesses of Apple. Very good observations I should say. On hind-sight, and on reading this list, they do seem like missing link. I list a summary below:

1. Apple doesn’t do social well on a large scale

2. Apple can’t do the cloud either

3. iTunes is getting long in the tooth.

4. The Apple software that rock (eg KeyNote) are the ones that Jobs uses. The ones that he does not care about (social, ical) etc are the ones that are not so good.

Read the full article here.

20 questions I ask myself – Vineet Nayar

Fantastic slide set from Vineet Nayar (CEO at HCL) – 20 questions he asks himself everyday. Two things I liked about this slide set:

  • The questions themselves (content is key, anyday).
  • The simplicity of the presentation. Hard hitting points yet on a plain spartan template.

Zoho project

Wow. Just saw the zoho project tour ppt. Looks awesome. I think they have the right tag line – the social way to get projects done. Some of the cool things that I saw were:

  • Integrated chat functionality – which is archived. Small decisions can be taken right there right then.
  • Import Microsoft MPP
  • Neat Gantt charts
  • Dashboard showing the nearby milestones
  • Dedicated wiki which is accessible from the dashboard.

I think it is pretty cool. Should check out.

http://projects.zoho.com/ – Zoho project

For some weird reason – Zoho reached out to me to remove the link – apparently the back links are hurting their Google rankings (or some such reason). The respect that I had for them has decreased substantially with this. Why would a company get in touch with a blogger who has written well about you.

[youtube=http://www.youtube.com/watch?v=oY5dxFDorX8]

Be a better engineering manager

For the sake of this article, I refer to an engineering manager as an R&D manager in the hi-tech software engineering industry. But I am sure, these are applicable to engineering managers everywhere. My experiences has been with respect to the highly challenging EDA industry, and so, the information below may potentially be biased towards this industry.

An engineering manager will need to have a few qualities and need to do some things which are absolutely essential to manage a productive high energy team.

  1. Lead technically: This leads the pack. The leadership has to be technical. An ideal engineering manager is one, who has grown up the ranks from software engineer, to tech lead, and now to engineering manager. He should know the specialization technically. When his developer explains a complex idea and is reasoning out why it would take a month for him to develop — the least he should be capable of, is to understand the idea, and realize its complexity.
  2. Be able to code: When there is crunch time, the manager should roll up his sleeves, and get to brasstacks. He should be able to fire his gvim/emacs/editor-of-choice, and be able to debug.
  3. Review code: He should be able to review code, atleast at a high level. There is no way, an engineering manager can ‘own’ his team, is, if he is atleast partially accountable to the teams deliverables. I am not saying, he should review line by line. He should be able to skim the bug-fix, or a feature algorithm, and be able to determine, if it is deviating or conforming with any pre-determined spec/discussion. Speaking of code reviews, there are two good side-effects. Firstly, the manager knows exactly what each of his team is working on, and can guage the productivity of the team, at any given point in time, first hand. Secondly, he is continually sharpening his saw (in Covey language). He keeps in touch with programming, and with the algorithms in his niche.
  4. Be an excellent communicator: He needs to be able to talk two languages. He should be as conversant to the developer/engineer, as he should be with management. This is crucial. Developers should build their trust in their manager. The manager is the conduit of communication between the engineer and management. The manager should also be able to distill the communication going downwards, and pass only information that is useful the developer downwards. Engineers almost always feel there is too much of management communication that flows down. A good manager distills this information and feeds only relevant information to the engineer.
  5. Be a good listener: As I said earlier, the developer builds trust in the manager. He expresses his anger, sorrow, angst, happiness – everything to his manager. A good manager listens and empathizes. There is reinforcement of trust here. A good manager listens carefully and remembers. Have you ever seen the pleasantly surprised look on an engineers face, when you ask him/her, how his/her mother is doing, after her surgery. How do you know ? He was ranting a couple of weeks ago, about how hospitals in Bangalore suck. You rememebered. You asked. There is nothing more rewarding than seeing that pleasant surprise on his/her face.
  6. Be good in planning: You should be able translate developer deadlines to project level estimates and vice versa.
  7. Be a good negiotiator: You will have plenty of situations when you have to bargain with your developers and quite a few situations when you would have to bargain with the management as well. Most likely, the latter.
  8. Be a good influencer: This is a big one. It is related to the previous point, but a little more subtler. When you win your negotiation, you win one, lose another. But, with being influential, you win both ways. You convince. You make sure, the other side takes a decision – the decision you want them to take.
  9. Have good meeting organizing skills: Two skills are needed for this. Have meetings only when required. Start the meeting on time, and finish it on time.
  10. Be flexible: You would need to be flexible. You cannot expect a developer to turn up for a meeting at 10AM (very early morning !). You should be ok to shuffle around meetings so that it is convenient to most people. Be flexible in cancelling meetings, if one is not needed at that time.
  11. Work with the team: Last but not the least – work with your team. Do not sit in your room and let the team do their work. Work with them. Debug with them. Discuss with them. Plan with them. This is not just good for the team. It is good for you as well. You are abreast of what the team is doing technically. It will help you plan your schedules more accurately. And you are continously sharpening your saw – broadening your knowledge.

These are some of the techniques, that could make you the star engineering manager. These are but the tip of the iceberg. The main thing is, you stand for the team. You are their conduit to management. And you are the face of the team to management.

Note1: The above list is in no particular order of importance.

Note2: The usual disclaimer: The opinions expressed in this article are solely mine, and are not of my employer, in any way.

Managing start-ups

First off, for those who claim that management is not necessary in a technical environment — I respect your opinion, but what I am going to be writing below is not going to interest you. You might as well go to slashdot, or metafilter, or coding horror, or …. (Disclaimer: The fact that I believe that management is necessary in a technical environment does not mean I do not visit the above sites – I am still a geek at <3 .)

Managing a start-up environment is different from managing a mature software business. There are several things that work in a startup but may  not work in a mature setup, and vice versa. You should notice that I have emphasized the ‘may not’. There are several companies that I know, which work in startup mode. Some of the below may work in these, if it is part of the culture of the company.

The following points are not arranged in any particular order.

  1. Avoid meetings – have discussions: It may seem like I am just calling it by a different name. It is really not so. There are several significant differences. Some of the key differences are:
    1. In a discussion, there is significantly more participation from the grass roots engineers, than in a meeting.
    2. There is no agenda. There are points of discussion. The key point is here is that, meetings are over when the agenda points are done. Discussions are over, when everyone is convinced.
    3. There is a lot of learning in a discussion. People can ask for clarifications and elaborations.There is no “lets take this discussion offline“. This is the discussion.
    4. Action items are taken by the ‘actioners’ themselves. There is more accountability this way.
  2. Avoid status meetings: Status can be covered either by discussions like the above ; or by just walking over to the cubicle of the developer. I sometimes write down the action items etc on the white board in the cube.
  3. Give more freedom to developers: They are more creative this way. They are more accountable, and they feel good about it. Developers who feel good about code they develop, just are more productive.
  4. Break stereotypes: Get wifi to the coffee room/pantry. Who says the pantry is only for relaxing. If the developers are most productive in the nights, and request for coffee/tea in the night, get it to them. Do they require dinner ordered in – order in. Do not think about, what others will think about it — or whether it has ever been implemented before. Just do it.
  5. Isolate from management: As far as possible, you the technical manager, should be the one who oversees the development. Try and avoid as much as interference from higher management. They do a very important job of bringing business to the company. Let them do it in peace. Try and avoid them giving advise/suggestions/recommendations on what should go into the product, or how easy/difficult it is to develop something. You, the technical manager, should be the conduit between the upper management.
  6. Reward rebels: There are programmers, and there are rebel programmers. These are the bearded ones, which get maximum work done between 11pm and 1am. Encourage through whatever-means-appropriate-means for them to align with the high level objectives of the company, and you have a winner here. Reward the rebel handsomely. One must understand that rebels do not consider money as the only reward. They can be rewarded with better machines, dual monitors, leaves-with-no-questions-asked.  These things will equally excite the rebel in your team. Go on, encourage the rebel in your team, and kick-back-and-watch-the-fun.
  7. Infuse energy: Have you ever walked into a start-up office (atleast one that is doing well, and that is managed well). Can you feel the energy. There are heated technical arguments in the hallway. There are ‘rebels’ having good over-ear headphones, listening to some loud music and bobbing their heads, as their hands furiously program. You can see people coding with feet up in the table. You can see someone who has just finished coding a module, get up, and throw up his hands in accomplishment, and drag a few of his mates for a coffee. Thats the energy. Encourage it. You, the technical manager should be part of this energy. Go and hi-five the guy who just finished the module. Participate in the hallway argument. Kick back and have a cuppa coffee with the so-called-junior-developers and share some history. You will not only be considered the cool guy. You will be the one who will be accredited for all the energy (and hence the productivity).
  8. Small perks are valued more: Perks such as spending a hundred dollars on a fancy expresso machine are valued much more in a start-up. It reinforces in the workforce the confidence that management is trying to make the place as much fun and comfortable for them. Fresh cut fruits in the morning is another example. Rebel coders rarely have the time to shave, leave alone, have breakfast. They will come to work, and have fruits and coffee. Do not lay your hands on these small ticket items, when management tells you to cut discretionary spending. You can save more in economizing other things. Infact, get the dev team together, make the decision together.
  9. Percolate field news to dev team ASAP: This is something that successful start-ups always do. Some of them do it partially, and get bombed for it. When I say partially, I mean, only bad news from field, in the form of bugs, and enhancement requests, trickle to the dev team. This is no good. Did sales bag another order – however small it is? Share it with the team, and celebrate. Hey the sales team celebrates it. And the dev team usually gets to know about this, and thinks – “dang! I created the feature, and I get nothing.” Percolate good news and bad news from the field down to dev team. You gain two things by doing this. You gain good-will from the team – the team thinks they are a part of the whole gig. And secondly, you get the dev team working more productively towards what the field and the customers require.
  10. Celebrate every occasion: Yes, I mean every occasion. There need not be a lavish 5 course meal. Celebrate with ice-cream. Celebrate with pakoras or samosas  (in the Indian context). A feature that has been under development for 6 months, just got done. Celebrate. And call the whole team for it – not just the 3 people on the project. A new customer. Celebrate. 1000th bug fixed. Celebrate. A developer fixes his 250th bug. Celebrate. Give him a uber-debugger award certificate for it ! It is not about the food, or about the time, or about what you are celebrating. It is about, getting the whole team together, and reinforcing the thought, that the team is doing something very cool, and the management recognizes it.
  11. Practise management-by-walking-around (MBWA): I just walk around and gather status. I just go and sit on the developer’s desk, while he lounges in his chair, and explains what he has in plan for the next week. He basks in the glory of fixing his 4 bugs last week. He tells me that he will be on leave on Tuesday. What did I just do ? That was my status meeting. I walk back to my office and note down important things in the conversation. You can get a lot of work done this way – and if you notice, the developer did not get off his chair, and he got back to work, right after you buzzed off. Wow, talk about productive meetings eh ?
  12. Aggressive targets: Set aggressive targets, but after buy-in from the developers. Push the line. Raise the bar. Tell the developer that you are raising the bar. Make him/her raise the bar. Challenge the developer.

These are some thoughts on how managing start-ups can potentially be different from managing a normal software factory. These are not rules. That is the whole point. Take these ideas. Spin them off in your context. And watch the fun unfold.

The opinions expressed in this article are solely mine, and are not of my employer, in any way.