Chief Technology Officer– High Level Career Development Plan

Standard

From last few days, I was working on my career development plan at Microsoft. Career planning is an iterative process and it keeps updating with time. Here’s the high level plan I have come up with so far. I will be blogging more details about each aspect of this plan soon.

Long term goals (10 years): By 2023, I would like to be the CTO of a large scale organization.

Short term goal (5 years): By 2018, I would like to be an Enterprise Software Architect.

Career development plan:

Personal Traits

  1. Be recognized as trustworthy and truthful person. Untrustworthy and fake people never succeed in long term.
  2. Be available to team members. Work selflessly. Nobody wants to work with people who always ask for credit.
  3. Be helpful to others in the best capacity. There is always a return for being helpful.
  4. Undergo voice modulation training. (Learn how to modulate Pitch, Pace and Power based on situation).
  5. Work on Ego-management. Be driving but not aggressive.
  6. Take responsibility during failures and share credit with others during wins.
  7. Avoid short cuts.

Community & Networking:

  1. Participate in the discussions in the technical communities and establish a reputation for being the ‘go-to’ person (SME) in at least 3 technologies.
  2. Build a network and stay connected with various SMEs on various forums.
  3. Participate in Business and Technical Conferences
  4. Identify a group of trusted individuals who can advise/suggest/mentor on technical/professional issues.
  5. Mentor people.

Technical Expertize:

  1. Invest in being technical SME in at least 3 major technologies.
  2. Be an enterprise architect.
  3. Keep up to date with the latest technologies, tools and techniques (at least Level 100)
  4. Become hands-on with programming.
  5. Learn to strike balance for ‘time, scope, cost and quality’ for projects.

Business Acumen:

  1. Invest in Financial & Business Education (CTO is a bridge between technology and business)
  2. Keep up to date with the trends of Industry and market. Read Gartner reports regularly.
  3. Interact with various CTOs inside and outside of Microsoft.
  4. Participate in business and political discussions related to IT industry.

Big Picture:

  1. Understand the 360 degree view of the organization.
  2. Develop a ‘Trust but verify’ approach with people.
  3. Understand business problems and identify technical solutions. Be the bridge.
  4. Raise above the organisational politics.
  5. Be a strategist and articulate the vision.
Advertisements

Typing ‘Sall Allāhu ʿalay-hi wa-sallam’ in MS Word and MS Office Documents

Standard

All Muslims are obligated to say ‘Sall Allāhu ʿalay-hi wa-sallam’, whenever they hear or write the name of Holy Prophet Mohammed  صلى الله   عليه وسلم  As you have noticed, in the previous sentence I wrote ‘Sall Allāhu ʿalay-hi wa-sallam’ in Arabic after the name of the Holy Prophet. In Holy Quran, Allah says “Indeed Allah and His angels send blessings on the Prophet; O People who believe! Send blessings and abundant salutations upon him” – (Chapter 33, Verse 56).

The phrase ‘Sall Allāhu ʿalay-hi wa-sallam’ means ‘May Allah honor him and grant him peace’. While Muslims do say ‘Sall Allāhu ʿalay-hi wa-sallam’ when they hear the name of Holy Prophet Mohammed ( صلى الله عليه وسلم), but when the name is being written in MSWord or Outlook, they face with challenge of writing the phrase in Arabic font. As you can see, it’s not easy to type the phrase in Arabic, especially when you are working on an English keyboard. To overcome this challenge, it became a commonly accepted practice among Muslims to write the English translation of ‘صلى الله عليه وسلم, that is ‘May Allah honor him and grant him peace’.

However, some people, in order to save some time and energy, have further reduced the phrase to ‘Peace be upon Him’. If one translates ‘Peace be upon Him’ in Arabic, it is ‘عليه السلام‎’ but not ‘صلى الله عليه وسلم’. Muslims are obligated to say ‘ عليه السلام  ’ for archangels and Prophets of Islam except Prophet Mohammed (صلى الله عليه وسلم). For Prophet Mohammed (صلى الله عليه وسلم ), a Muslim must say صلى الله عليه وسلم. Yet, many of the Muslims, continue to use the phrase ‘Peace be upon Him’ for Prophet Mohammed (صلى الله عليه وسلم) too.

In recent times, as an act of laziness, Muslims have started using the abbreviation ‘PBUH’ for ‘Peace be Upon Him’. Several Islamic scholars have severely criticized such abbreviation. Several Fatwas (orders based on Islamic laws) have given against usage of abbreviations instead of writing  صلى الله عليه وسلم . I must accept that, I have also committed this sin of writing abbreviation. I pray to Allah for forgive me for my sins.  

So, this demands a question, how should a Muslim get over the challenge of writing ‘صلى الله عليه وسلم’ in Arabic font and not commit any sin by using abbreviations? Is there a solution to it?

I did some research on this and found that, there is indeed an elegant and easy solution. In computers, every character is assigned a unique code called ‘Unicode’. Formally, ‘Unicode’ is a computing industry standard for the consistent encoding, representation and handling of text expressed in most of the world’s writing systems. Whether it is English or French or Arabic, every character that can be typed, is assigned a Unicode. In order to reduce the length of the code, hexadecimal system is used instead of decimal system. Without going into too much of technical details, here’s an elegant solution to typing ﷺ in a MS word or any MS Office documents.

To type in MS Word or any MS office Document:

(1) Type FDFA.

(2) Type ‘Alt+x’. (Hold on to ‘Alt’ key and press ‘x’ key.) As soon as you type ‘Alt+x”, ‘FDFA’ is converted to ﷺ

Unicode for ‘ﷺ’ is ‘FDFA’.

Below table gives Unicode Values of common Arabic Words/Phrases:

Arabic Phrase/Word

English Transliteration

Unicode

Allah

FDF2

Sall Allāhu ʿalay-hi wa-sallam

FDFA

Mohammed

FDF4

Akbar

FDF3

Rasool

FDF6

Jallajalaalahu

FDFB

Salla

FDF9

Wa-salam

FDF8

Alayhe

FDF7

Salam

FDF5

Qala

FDF1

Salla

FDF0

For example, if you want to type ﷲ, then

(1) Type ‘FDF2’.

(2) Type ‘Alt + x’ (Hold on to ‘Alt’ key and press ‘x’ key). MS Word or any Office document will then convert FDF2 to ﷲ.

For the Unicode for all the Arabic characters, refer to this link.

Note: This technique works for all MS Office products. In case, due to some issue, if it doesn’t work for you, then add ‘U+’ to the Unicode and repeat the steps mentioned above. For example, for typing ﷺ, type ‘U+FDFA’ and type Alt+x.

To know the general techniques for inputting characters via Unicode in Windows, Mac, Linux, etc., check this Wikipedia link. (http://en.wikipedia.org/wiki/Unicode_input).

What does Google think of famous Indians?

Standard

I am sure, you might have come across Google Auto-Complete feature. While you type the search keywords, this feature predicts what the keywords could be. According to Google, functionality of this feature is

“As you type, Google’s algorithm predicts and displays search queries based on other users’ search activities. In addition, if you’re signed in to your Google Account and have Web History enabled, you may see search queries from relevant searches that you’ve done in the past. All of the predicted queries that are shown in the drop-down list have been typed previously by Google users”

Today, I received an email that spoke of interesting results that auto-complete feature gave, when the names of current Indian Politicians are typed. So, I thought of doing a little experiment to verify what are people searching about famous Indians. Note, I am not logged using my Google account during this experiment, hence the results are not impacted by my past searches.

(Btw, I think, the researchers working on social behaviour of people on Internet must take a note of this. I wonder if any research papers are written on this).

Current Politicians:

image

image

image(Seems like nobody searches the name of Leader of Opposition)

image

Some freedom fighters:

image

image

image

Some Indian Hindi Movie actors: image

image

 

image

image

image

Some talented Indians:

image

image(This is seriously embarrassing. How come Indians aren’t searching about Ramanujan. When I search Srinivasa Ramanujan, no instant results!)

image

image

image

image

Effective Career Planning Discussion

Standard

For an employee, having an effective and open career planning discussion with the manager is must for career growth and job satisfaction. Today, I had a great discussion with my manager on my career plan and what I must do to enhance my career growth.  In this blog post, I am sharing most of the non-confidential things that we discussed during our career planning meeting (I can’t share confidential details such as my salary, organization and promotions for obvious reasons). There are two reasons why I am sharing this.

1.      Often we have this type of meeting behind closed doors and then we forget. By putting it in open, I have to set goals for myself. This is how I was in 2011.  In future, I can always look back and say, where I was and in which direction I chose to take.

2.      This might also be useful for other employees and managers who are looking for information on how to have career planning discussion.

To begin with, let’s first understand the ground rules for effective career discussion between employee and manager. From the employee point of view, these are the ground rules

(1)    You must be open with your manager about your professional ambitions

(2)    You must be self-critical about your weakness and limitations

(3)    You must give a deep thought to the feedback given by your manager

(4)    You must respect the opinion of your manager, even if you disagree

(5)    You must draft a career plan, immediately post your discussion

From the manager’s point of view, these are the ground rules  

(1)    You must carefully listen and understand the ambitions of your employee

(2)    You must provide realistic and true assessment of your employee’s abilities

(3)    You must provide fair feedback on areas where the employee needs to improve

(4)    You must put sincere effort in helping the employee grow in his/her career

(5)    You must be open enough to tell to your employee on areas where you can’t help  

If anywhere the ground rules are violated then the discussion won’t produce useful results. Also, both the employee and the manager must realize that, career planning discussion is not just about ‘career-growth of the employee’ but also about ‘how the employee can contribute to the organization in the most effective way’. This is often ignored in career discussions. Another reality of career discussion is that, employees must always keep in mind that their ‘manager is a human being with limited abilities’ i.e. ‘they cannot expect the manager to solve all their problems’. You have to be realistic.

Now, the next most important thing for an effective career discussions is ‘pre-planning of what you are going to discuss’. In my case, I used a template of nine questions for self-assessment. These nine questions were prepared by the managing director of my organization. By the way, I didn’t use these nine questions template because these questions are prepared by some high level guy in my organization but because they are fairly good for self-assessment. I spent about 45 minutes answering these questions.   

1.      Where do you want to be in next 3-5 years?

Answer: In next 3-5 years, from the technical point of view, I would like to be in a position to design and review large-scale enterprise applications. At the same time, I would like to be a fine orator in fields of science, technology and politics. By 2014, I would like to be author of at least four books. 

2.      Do you have a mentor? How often are you meeting with them?

Answer: Nope. I would love to have one. 

3.      What do you think are your strengths?

Answer: Over the period of time, I have realized my strengths are

(i)    Being fearless towards taking on technical and non-technical challenges in life. One of my childhood dreams was to be a warrior, someone on the lines of Achilles and Alexander. While as I grew up I realized, I am not born in an era of warriors, however, I have found that the qualities of warrior still apply. Whenever a new challenge arrives in life, I would prefer to face it like a warrior than make a compromising decision.

(ii)   I have huge interest in ‘writing’. This has reflected in my ability to write technical research papers, blogs, articles, etc. I would like to put more effort in further developing this skill and turn myself into an influential author. 

4.      What do you think are your weaknesses?

Answer: I believe following are my weakness.

(i)    After spending three years in software industry, I somehow haven’t fallen in love with it. Because of this, whenever a new software technology comes up, it doesn’t create an excitement within me. Lack of excitement means, I won’t be learning a technology until there is a necessity.

(ii)   In general sense, I am not the kind of person who would spend excess amount of time on a particular activity. This has reflected in my varied interests and hobbies. Long story short, I can’t be subject matter expert in one particular technology. Instead over a period of time, I would prefer to gain insights in every technology I come across. 

5.      What do you think are your areas for improvement?

Answer: Couple of areas that I feel there is an immediate need for development

(i)   I would like to get a strong grip over .NET 4.0 and Windows Azure programming skills.

(ii)  I would like to improve my inter-personal communication skills, especially interacting with the people who have skewed opinions (technical and political). Current challenge is to figure out a way of changing the mindset of people in minimum amount of time. 

6.      A year from now what do you want to be different in your skill set?

Answer: I would like to gain core development skills in .NET 4.0. I am also interested in developing skills in web UX design. 

7.      What kind of work appeals to your heart? What are the kinds of things you LOVE to do?

Answer: From last two years, I have enjoyed meeting external customers of Microsoft and helping them resolve problems. In these two years, I have realized,

(i)    I enjoy the work when I am given the authority and responsibility to handle things

(ii)   I enjoy the work when I am not being micro-managed.

(iii) I have thoroughly enjoyed delivering trainings to customers 

8.      What kind of tree captures your growth aspirations? What are the ways in which you want to grow – horizontal vs. vertical vs. below the surface growth?

Answer:  At this stage of my career, I would prefer to ‘below the surface growth’. I haven’t set any precise goals for what I want to be in 10 years from now. And to make that decision, first I must know what truly I want. Horizontal or vertical growth would be unnecessary distraction before I make that decision. 

9.      What kind of Star recognition do you like? How do you like to be rewarded? In public or in private? And what are the kind of rewards that motivate you?

Answer: I would prefer being awarded in private for my work. As for as ‘what kind of rewards that motivate me’, well, that would depend on what kind of rewards that are on offer!

Once I had the answers ready for the nine-questions, we decided for a one-hour career discussion meeting. Make sure that, before the meeting, your mood is good. Just to avoid any unforeseen situations, I cancelled all meetings three hours prior to the career planning discussion. Being in right state of mind and good mood is absolute must. And I must confess I spend couple of hours watching videos on YouTube just to relax myself.

We didn’t decide on a strict agenda for the meeting, but at the end this is how the time got distributed around the three tasks.

Task

Discussion Time

Self-Assessment – Going through 9 questions and the employee’s answers

20 minutes

Discussion of employee abilities/skills

20 minutes

Manager Feedback

10 minutes

 

As the meeting started, for few minutes my manager and I had a candid conversation about some non-sense. And yes, I told him that I am going to blog this career discussion, for which he replied ‘if that’s going to help you impress few girls, then go ahead!’ Once the serious discussion started, we went through each of the nine-questions and the answers I have written down. Basically, based on my answers, my manager was assessing ‘where do I stand now’ and ‘which directions would be suitable for my career growth’. For each of the questions, my manager asked me ‘examples’ on why I have written a particular thing. Once we were done with the questions, we used a table to measure my core abilities. These abilities are defined below.

Leadership: Ability to influence and persuade.

Communication: Able to communicate via emails, presentations, writing, etc.

Shipping: Ability to track things and get work done on time.

Technical: In-depth knowledge regarding features/specs, development, testing, operations, build/release, etc.

Business: Domain knowledge and insights about our products and competitive products, customers and ability to provide breakthrough insights on paradigm shifts in software technologies. 

After a brief discussion, my manager provided his feedback on where I stand, what I must do to improve and what opportunities I must pursue. Here’s the feedback given by my manager. As far the skill ratings is concerned, I think he has rated me slightly above than I am.

 

Low

Medium

High

Leadership

   

X

Communication

 

X

 

Shipping

 

X

 

Technical

 

X

 

Business

X

   

 

Also, based on my work, this is the feedback given by my manager on the areas that I need to improve upon  

(i)                Task management: Develop an organized way of managing and following up on tasks. Sometimes, I commit to some tasks but due to other high priority works, I missed out delivering low-priority tasks. Also, sometimes, I don’t follow-up on the low-priority tasks.  

(ii)              Business Skills: I don’t have much knowledge about the competitive technologies offered outside of Microsoft. Having extensive knowledge of both Microsoft and non-Microsoft technologies would help me in developing business acumen.

(iii)             Technical Skills: I need to improve on core programming skills especially on .NET 4.0 and Windows Azure.  Also, I need to get some expertize on using Team Foundation Server (TFS). Also, push further on technical knowledge with regard to application architecture review from performance standpoint. Recommended to attend online trainings in free time.

(iv)             Influencing Abilities: Identify effective techniques for persuading stubborn customers to do the right things. Recommend reading the book ‘Great dialogues by Plato’.

(v)              Mentor: Identify a good mentor within Microsoft on career and technical guidance.  

After the end of the discussion, I documented every point we discussed. Overall, I think this was a positive discussion. We discussed several things, which I hadn’t thought about earlier. For example, discussion about the competitive technologies in the market stumped me. Post discussion I realized that my business acumen is severely lacking. Also, the discussion about simple things such as ‘task management’ was very fruitful. Many times, I think I am doing well in my day-to-day job but little things like forgetting a low-priority task might create a negative impression. The good thing about my manager is that, he is very solution oriented than merely highlighting the problem. That helps in a big way. 

With that, I want to conclude this long post. I don’t know whether it would be useful for anyone for having a meaningful career planning conversation, but this will definitely serve as document that will remind me what I was in February 2011.

 

Cloud Computing – Overview

Standard

image

The latest buzz word in IT world is ‘cloud computing’ and it’s been hailed as the paradigm shift for the industry. Before I elaborate further about cloud computing, let me clarify for those who aren’t familiar with IT industry, ‘cloud computing’ hasn’t got to do anything with either ‘clouds’ or a new form of ‘computing’. As you know, IT folks have a habit of adding fancy words to their computer vocabulary, apparently ‘cloud computing’ happens to be the latest. The word ‘cloud’ is being used here to refer ‘internet’ and the term ‘cloud computing’ means ‘computing services delivered via internet’.

‘Cloud computing’ is neither a new invention nor something unknown to IT industry. Ever since internet came into existence, it has existed; it’s just that we know it with other names. Yahoo Mail & Messenger, Hotmail, Gmail, Facebook, etc. are all examples of cloud computing. In fact, every internet application can be considered as an example of ‘cloud computing’. You might ask, then, why is it being considered as the next big thing? The answer has to do with something called ‘marketing’. In recent times, most of the software giants have realized that, small companies (both IT and non-IT) are unable to afford and maintain IT infrastructure for their online applications. This is due to increasing costs of reliable software, maintenance and administration costs along with additional costs such as space, electricity and high speed LAN connection. Note, here IT infrastructure refers to the datacenter, not to be confused with physical client computers.

As a solution to this crisis, several software giants such as Microsoft, Amazon, Google, VMWare, IBM, etc. have proposed the idea of renting IT infrastructure to companies on pay per use basis. However, unlike traditional renting of physical assets, IT infrastructure renting is slightly different. Here, companies don’t pay for the IT infrastructure per se; they pay for the processing capabilities of IT infrastructure. Here’s how it works. Company engages a service provider to host their web based application. Depending on the request, service provider allocates servers (computational resources) to the subscriber in the data center, while taking the entire responsibility of maintaining servers with latest software, data security and energy needs. Also, the subscriber is provided with the flexibility to reduce or increase the servers on the fly. Depending on the usage of the servers, subscribers pay to the service providers.

clip_image002For example, Microsoft’s cloud computing model is referred as ‘Microsoft Azure’. Azure allows companies to host their applications on Microsoft datacenters on pay-per-use basis. A company subscribing to Azure need not own IT infrastructure to host their application, all it needs to do is… specify Microsoft about their IT infrastructure needs and Microsoft would be providing the same. The responsibility of maintaining the IT infrastructure, software upgrades, reliability, security and legal compliance of servers rests with Microsoft. This gives a good deal to subscribing companies, as they just have to take care about their application rather than all their IT infrastructure needs. Similar models have been proposed by Amazon, Google, VMware and IBM.

If you still don’t understand the model, let me give you another example. Let’s say, you along with your friends want to play Cricket. Logistically, you would need a cricket kit and a cricket ground. Of course, you can purchase a cricket kit as it is affordable but what about a cricket ground? Would you purchase a land, hire a curator and create a cricket pitch or just rent a slot in a nearby cricket ground? Unless you have lot of money, purchasing a land, hiring a curator, and creating a cricket pitch for playing cricket doesn’t make sense. It’s just common sense to rent a cricket ground for playing cricket and pay for the time-duration you use. Similarly, for a company (IT and non-IT) to host its applications over internet, it’s just common sense to take IT infrastructure on rent for hosting their applications and pay for the processing capabilities they want.

If you look at the cloud computing scenario, you might question, why isn’t this option available right from the beginning? It makes no sense for non-IT companies, who want to host web based applications to purchase and maintain IT infrastructure. Why wasn’t this idea of renting IT infrastructure thought earlier? The answer to all these questions has to do with ‘dependence’. Just like, playing cricket on rented ground makes the game dependent on the pitch conditions, hosting their applications on the rented datacenters make the companies dependent on service providers. Each service provider of cloud computing model will have its own limitations and the subscribers have to comply with those limitations. Another reason that I see has played an important role in delaying the entry of cloud services in the industry is ‘data security’. What if the sensitive information stored on IT infrastructure owned by service provider gets compromised? Does the service provider give the guarantee of data security? These questions often play a major role in deciding on whether a company has to subscribe for cloud computing services or not.

In the end, I want to say, cloud computing (or whatever other name we used to refer it) is here to stay and there is nothing too special about it. If implemented properly, it will be beneficial to everyone.