Multi-Device Development in Visual Studio

Tue, May 27, 2014, 09:20 PM under Career

You've read on Soma's blog post that Microsoft is broadening Visual Studio's reach to other platforms (including for example Android)…  specifically this is what Soma wrote:

"With bring-your-own-device trends in the enterprise, and heterogeneity in the consumer mobile device market, developers are increasingly focused on building apps that can target a variety of devices. We are committed to enabling developers to build apps for this heterogeneous, mobile-first world with Visual Studio for the technology of your choice - whether .NET, C++ or JavaScript."

If you live in Washington state in the USA (or are willing to relocate here) I am looking for a Program Manager to help with this effort – read the rest of the job description here which is also where you can apply for the position (or email me).

Work for me on Visual Studio Diagnostics

Mon, January 13, 2014, 03:54 PM under Career

Do you want to work as a Sr Program Manager on the team that owns the Visual Studio debugger, profiler tools, and IntelliTrace? Do you fulfill the requirements outlined in the job description? If you do, then email me or apply online.

Effectiveness and Efficiency

Fri, April 12, 2013, 09:22 PM under Career

In the professional environment, i.e. at work, I am always seeking personal growth and to be challenged. The result is that my assignments, my work list, my tasks, my goals, my commitments, my [insert whatever word resonates with you] keep growing (in scope and desired impact). Which in turn means I have to keep finding new ways to deliver more value, while not falling into the trap of working more hours. To do that I continuously evaluate both my effectiveness and my efficiency.


The first thing I check is my effectiveness: Am I doing the right things? Am I focusing too much on unimportant things? Am I spending more time doing stuff that is important to my team/org/division/business/company, or am I spending it on stuff that is important to me and that I enjoy doing? Am I valuing activities that maybe I have outgrown and should be delegated to others who are at a stage I have surpassed (in Microsoft speak: is the work I am doing level appropriate or am I still operating at the previous level)?

Notice how the answers to those questions change over time and due to certain events, so I have to remind myself to revisit them frequently. Events that force me to re-examine them are: change of role, change of team/org/etc, change of direction of team/org/etc, re-org, new hires on the team that take on some of the work I did, personal promotion, change of manager... and if none of those events has occurred since the last annual review, I ask myself those at each annual review anyway.

If you think you are not being effective at work, make a list of the stuff that you do and start tracking where your time goes. In parallel, have a discussion with your manager about where they think your time should go. Ultimately your time is finite and hence it is your most precious investment, don't waste it. If your management doesn't value as highly what you spend your time on, then either convince your management, or stop spending your time on it, or find different management: Lead, Follow, or get out of the way!

That's my view on effectiveness. You have to fix that before moving to being efficient, or you may end up being very efficient at stuff that nobody wants you to be doing in the first place. For example, you may be spending your time writing blog posts and becoming better and faster at it all the time. If your manager thinks that is not even part of your job description, you are wasting your time to satisfy your inner desires. Nobody can help you with your effectiveness other than your management chain and your management peers - they are the judges of it.


The second thing I check is my efficiency: Am I doing things right? For me, doing things right means that I deliver the same quality of work faster [than what I used to, and than my peers, and than expected of me]. The result is that I can achieve more [than what I used to, and than my peers, and than expected of me].

Notice how the efficiency goal is a more portable one. If, by whatever criteria, you think you are the best at [insert your own skill here], this can change at two events: because you have new colleagues (who are potentially better than your older ones), and it can change with a change of manager (who has potentially higher expectations). That's about it. Once you are efficient at something, you carry that with you... All you need to really be doing here is, when taking on new kinds of work that you haven't done before, try a few approaches and devise a system so that you can become efficient at this new activity too... Just keep "collecting" stuff that you are efficient at.

If you think you are not being efficient at something, break it down: What are the steps you take to complete that task? How long do you spend on each step? Talk to others about what steps they take, to see if you can optimize some steps away or trade them for better steps, or just learn how to complete a step faster. Have a system for every task you take so that you can have repeatable success.

That's my view on efficiency. You have to fix it so that you can free up time to do more. When you plan a route from A to B - all else being equal - you try to get there as fast as possible so why would you not want to do that with your everyday work?

For example, imagine you are inefficient at processing email: You spend more time than necessary dealing with email, and you still end up with dropped email threads and with slower response times than others. How can you improve? Talk to someone that you think is good at this, understand their system (e.g. here is my email processing system) and come up with one that works for you.

Parting Thoughts

Are you considered, by your colleagues and manager, an effective and efficient person at your workplace? If you are, what would you change if you were asked by your management to do the job of two people? Seriously, think about that! Your immediate reaction may be "that is not possible", but it actually is. You just have to re-assess what things that were previously important will now stop being important, by discussing them with your management and reaching agreement on relative priorities. For example, stuff that was previously on your plate may now have to be delegated or dropped. Where you thought you were efficient, maybe now you have to find an even faster path to completion, perhaps keeping in mind that Perfect is the Enemy of “Good Enough”.

My personal experience (from both observing others and from my own reflection) is that when folks are struggling to keep up at work it is because of two reasons:

  1. They are investing energy in stuff that they enjoy doing which the business regards as having a lower priority than a lot of other things on their plate.
  2. They are completing tasks to a level of higher quality than what is required (due to personal pride) missing the big picture which almost always mandates completing three tasks at good enough quality than knocking only one of them out of the park while the other two come in late or not at all.

There is a lot of content on the web, so I strongly encourage you to use your favorite search engine to read other views on effectiveness and efficiency (Bing, Google).

Lead, Follow, or Get out of the way

Thu, March 28, 2013, 10:16 PM under Career

This is one of the sayings (attributed to Thomas Paine) that totally resonated with me from the first time I heard it, which was only 3 years ago during some training course at work:

"Lead, Follow, or Get out of the way"

You'll find many books with this title and you'll find it quoted by politicians and other leaders in various countries at various times... the quote is open to interpretation and works on many levels.

To set the tone of what this means to me, I'll use a simple micro example: In any given conversation, you are either leading it or following it, at different times/snapshots of the conversation. If you are not willing or able to lead it, and you are not willing or able to follow it, then you should depart. The bad alternative which this guidance encourages you NOT to do is to stick around and obstruct progress by not following, not leading, and simply complaining or trying to derail the discussion in no particular direction.

The same pattern applies at your position/role at work. Either follow your management/leadership team, or try to lead them to what you think is a better place, or change jobs. Don't stick around complaining about the direction things are going, while not actively trying to either change things or make peace with it.

In the previous paragraph you can replace the word "your management" with "the people reporting to you" and the guidance still holds. Either lead your direct reports to where you think they should go, or follow their lead, or change jobs. Complaining about folks not taking direction while doing nothing is not a maintainable state.

To me this quote is not about a permanent state, it is not about some people always leading and some always following: It is about a role/hat that anybody can play/wear at any given moment. One minute I am leading you, the next I am following you, and the next we are both following someone else and so on... When there is disagreement, debate the different directions for as long as it takes for you to be comfortable that you can either follow or lead. If you don't become comfortable with either of those, get out of the way. Something to remember is that it is impossible to learn how to lead well, without learning how to follow well (probably deserves its own blog entry)...

Things go wrong when someone thinks that they must always be leading, or when everybody wants to follow and nobody steps up to lead... Things go wrong when more than one person wants to lead and they don't try to reach agreement on a shared direction, stubbornly sticking to their guns pulling the rest of the team in multiple directions... Things go wrong when more than one person wants to lead and after numerous and lengthy discussions, none of them decides to follow or get out of the way... Things go wrong when people don't want to lead, don't want to follow, and insist on sticking around...

While there are a few ways things that can go wrong as enumerated in the previous paragraph, the most common one in my experience is the last one I mentioned. You'll recognize these folks as the ones that always complain about everything that is wrong with their company/product but do nothing about it. Every time you hear someone giving feedback on how something is wrong or suboptimal, ask them "So now that you identified the problem, what do you think the solution is and what are you doing to drive us to that solution?"

The next time things start going wrong, step up and remind everyone: Lead, Follow, or Get out of the way.

For more perspectives, and for input to help you form your own interpretation, search the web for this phrase to see in what contexts it is being used (bing, google). Finally, regardless of your political views, I hope you can appreciate if only as an example this perspective of someone leading by actually getting out of the way.

Perfect is the enemy of “Good Enough”

Sun, January 13, 2013, 08:55 PM under Career

This is one of the quotes that I was against, but now it is totally part of my core beliefs:

"Perfect is the enemy of Good Enough"

Folks used to share this quote a lot with me in my early career and my frequent interpretation was that they were incompetent people that were satisfied with mediocrity, i.e. I ignored them and their advice. (Yes, I went through an arrogance phase).

I later "grew up" and "realized" that they were missing the point, so instead of ignoring them I would retort: "Of course we have to aim for perfection, because as human beings we'll never achieve perfection, so by aiming for perfection we will indeed achieve good enough results". (Yes, I went through a smart ass phase).

Later I grew up a bit more and "understood" that what I was really being told is to finish my work earlier and move on to other things because by trying to perfect that one thing, another N things that I was responsible for were suffering by not getting my attention - all things on my plate need to move beyond the line, not just one of them to go way over the line. It is really a statement of increasing scale and scope.

To put it in other words, getting PASS grades on 10 things is better than getting an A+ with distinction on 1-2 and a FAIL on the rest. Instead of saying “I am able to do very well these X items” it is best if you can say I can do well enough on these X * Y items”, where Y > 1. That is how breadth impact is achieved.

In the future, I may grow up again and have a different interpretation, but for now - even though I secretly try to "perfect" things, I try not to do that at the expense of other responsibilities. This means that I haven't had anybody quote that saying to me in a while (or perhaps my quality of work has dropped so much that it doesn't apply to me any more - who knows :-)).

Wikipedia attributes the quote to Voltaire and it also makes connections to the “Law of diminishing returns”, and to the “80-20 rule” or “Pareto principle”…

it commonly takes 20% of the full time to complete 80% of a task while to complete the last 20% of a task takes 80% of the effort

…check out the Wikipedia entry on “Perfect is the enemy of Good” and its links. Also use your favorite search engine to search and see what others are saying (Bing, Google) – it is worth internalizing this in a way that makes sense to you…

Join the Visual Studio diagnostics team

Fri, December 14, 2012, 10:42 AM under Career

I have a Program Manager position open on the Visual Studio diagnostics team which owns the debugger, the profiler tools, and IntelliTrace.

If you have never worked for Microsoft you may be wondering if the PM position at Microsoft is for you. Read the job description to see what the role entails and to see if you are a fit.

I’ll preempt the usual question and say that this is a Redmond-based position. Beyond that, if you are interested in what you read and you think you have what it takes, then email me.

Perspective on Program Manager

Tue, March 10, 2009, 11:21 AM under Career
Apologies if you were expecting me to share my own insights (beyond what I already did last year).

Instead I encourage you to read Joel's take (slightly biased towards junior PMs, towards consumer product PM and towards the early stages of the project lifecycle).

Program Manager role at Microsoft

Wed, August 13, 2008, 12:56 AM under Career
Everyone close to me that knows I recently changed jobs keeps asking me what it means to be a feature PM (not to be confused with Product Manager which is primarily a marketing role). The Program Manager role is so complex I am having trouble explaining it. I am not ready yet, so I will revisit the topic in the future but someone once told me:
"a product needs developers to write the code and testers to test it. There are other things involved with shipping a product and the PM does those".
So far I can share that I spend 75% of my time in meetings. The funny thing is that I used to view meetings as a waste of time, but for the first time in my career I am actually having tons of useful meetings. The reason is probably because most of them are of the brainstorming variety (where by the end your creativity juices are just oozing all over the place) or of the unblocking variety (where at the end someone is unblocked and can do their job, which they couldn't do without that meeting having taken place).

Looking at it from a different angle it seems that there are several hats that a PM wears and I find myself alternating between writing specs, project managing, testing scenarios on the product, creating walkthroughs, threat modelling, writing demos/samples, liaising with sister teams, liaising with internal customers and, finally, preparing to imminently liaise with developer customers (both inbound and outbound comms, gathering feedback and sharing the vision) when we release it.

Some view the "drawback" of this role being that: you have tons of responsibilities which you can only deliver via a team on which you have no authority. Read that sentence again. I think this is what differentiates this role from others outside of Microsoft. I actually enjoy this because it creates a true team spirit. Because most new PMs seem to find this the hardest part, most experienced PMs focus on sharing tips on how to overcome this "hurdle". Today I found such a post that advises on the success patterns for PMs (with many good links).

What do I plan to do over the next 6 months to become a better developer

Fri, July 13, 2007, 04:29 AM under Career
After not doing memes for over 2 years, I broke my rule last December and yesterday; today I notice another one where I got tagged (thanks Raymond). So, this is the last meme I am doing for the rest of the year. Now I must tell you what I plan to do over the next 6 months to become a better developer (the format seems to be random so I'll take a wordy lengthy approach).

Well, I've never been involved in a large team project (>20 people), but I have delivered multiple projects (through multiple versions) where the team ranged from 1 to 12 people so I have drawn some conclusions for small projects (at most 100K loc) including the following 3 facts:

1. You do not need formal education or certifications to be a good developer; you just need a logical mind and a genuine interest in the field (and to be lucky enough to work on a handful of projects with talented people that are interested in mentoring you).

2. No matter what process/methodology/best practises/etc you use, the bottom line is that good talented people with a clear vision will deliver good results; the rest simply will struggle.
Another variation of striving for those things is when a talented good developer thinks he can improve others by sharing his knowledge via a methodology, when actually if his team has talent they'll get it right and if they don't then the rules won't help them either. Funny how the people touting a methodology are the ones that can make things work even without it..

3. If you don't understand the technical platform you are working with then you are probably going to be doing things in a suboptimal way and trying to fit old patterns to new paradigms.

Your mileage will vary of course, depending on how long you've been in the industry and the kind of projects you have worked on. I am certainly not projecting the above assertions on you, simply stating that for me personally, they hold true as facts. Moving on (hopefully without pissing too many people off ;)...

Considering points 1 and 2 above, I made the decision a little while back that I am as good/bad a developer as I was at that point and that I was not going to drastically improve/deteriorate from an algorithmic/design/management/performance point of view as years go by. Combining this decision with point 3 above, I decided that the only thing I need to do to stay at the level that I am today, is to keep abreast of all the new technologies that get thrown out from the various vendors. A long time ago (when funnily enough I was a Java developer) I decided to choose and commit to one vendor only: Microsoft.

To bring this blog post back to the meme and in conclusion, my personal choice as a developer is: Stay current with everything new on the Microsoft platform. That is what I've been doing for the last 6 months and this is what I am going to do for the next 6 months.

As to which bits of the Microsoft offerings I specifically focus on, well that varies and this blog is my documentation/sharing vehicle for some of the bits I play with... There is a pattern as to the things that interest me and you can infer that from the Categories on the left of this page. Hope this helps and stay tuned via one of the subscribe options also on the left :-)

In the spirit of the meme, I wonder what these guys' professional plans look like over their next 6 months:
[ Ian, Kenny, Mitch, Phil ] you are IT!

Busy is implicit (and change of career)

Wed, March 22, 2006, 12:59 AM under Career
The year 2006 is only 3 months old but it has been crazy for me! "Busy is implicit" (that has been my IM personal message text) doesn't begin to describe it. In random order here is what I have been up to.

* Principles of Architecture II course. A week-long intensive internal course about software and infrastructure architecture. Maybe my fault for expecting a lot more from this, but on the whole I was left unimpressed.

* BizTalk 2004 CSS. Internal self-study course, for which I was given a ton of material and resources. Did not have high expectations, but found it rather interesting. Good to know about the technology but, no, I have no plans to sign up for any project using it (too much mouse-pushing for my liking). Very powerful tool and its price tag reflects that...

* Completed the SharePoint project I was working on. This was a big win, as the client was delighted with the work I did there…

* Working for Avanade means that you *must* get Microsoft certified. So I thought I'd play game, even though I've always looked down on these. So, after 3 MCP exams, I am now a MCAD (Microsoft Certified Application Developer). To be honest, I did have to study for the exams and I did learn quite a bit (in a broad, shallow sense). Not that I have some new found respect for people that hold the certification, but I don't have any contempt either (if that makes any sense :-S).

* As well as speaking at the "swimming pool" room at Microsoft’s offices in London, I also attended an MSDN event there on Indigo (or WCF, if you like) by Mike Taulty and Mike Ormond. A lot of great events take place there so, if you are in London, you should be monitoring the activity...

* Speaking of "speaking", I've been waiting for my name to appear on the official list before sharing this but I am fed up of waiting now so here it is: I am on the INETA speaker list! If you run a user group, feel free to contact INETA to arrange for me to speak on a topic of interest to you...

* While I didn't attend DevDays in London, that week I had the pleasure of having dinner with a handful of smart people organised by the Wintellect guys (Jeffrey Richter wasn't there but Jeff Prosise & Justin Smith were :-)).

* Anyone that has been through a house purchase in the UK knows how hectic the procedure is. Well, I went through the house hunting, negotiation, surveys, mortgage applications, estate agent fighting and solicitor chasing... all this for a flat in London. It sounded like a great idea back in October and a few days ago we reached the point where I must sign the contract and transfer the money. Guess what I did? I pulled out! This has cost me unbelievable amounts of stress, time and money. It just didn't make sense anymore due to another change in my life as summarised next.

* A couple of days ago I handed in my resignation to Avanade. Maybe my career desires will change one day and/or maybe Avanade UK will have a different direction one day. Should such a day arrive, I'll be happy to go back. Working for Avanade for 6 months has been an experience...

* Later today I will be at the DNUG meeting if you want to say hi

* Next Monday I will be attending a private 2-day MVP event held in Cambridge. I am looking forward to catching up with all of you who will be there :-D

Current Project

Fri, December 23, 2005, 04:06 PM under Career
So I described my commuting to my current client, how about the project?

You would have thought that if you hired a .NET Compact Framework MVP, you would take advantage of their skills in a mobility project; something that targets Windows Mobile 2003 or v5 or even a custom WinCE (v4 or v5) device. Nope.

I have also done a lot of work on the desktop with .NET (including COM Interop, remoting etc) so maybe something in that area? Nope. Anything to do with thick or smart clients where my interest and experience lies? Nope.

Maybe take advantage of the fact that I've been using VS2005/.NET v2 constantly since March 2004 (any project utilising Whidbey is my game)? Nope.

Instead, what I am working on is a web application (web, moi?) using SharePoint (server product, moi?). From a developer's perspective, SharePoint 2003 sucks like nothing I've ever used from Microsoft before (I am considering not putting it on my CV to avoid having to go near it ever again!). That is the life of the consultant apparently. You get to work on whatever is in demand.

To be perfectly honest, I don't really *mind* working on this project. I've been in my comfort zone (embedded space) for too long and it gives me chance to prove again that I can quickly pick up a technology and deliver. It just took me by surprise and combined with the whole commuting thing it created a bad taste in my mouth. By the way, I am leading the small team and while I won't mention the client's name rest assured every single one of you (aged 14 to 114) know them. The work environment is second to none and the people there are great so that balances out things...

My mate Steve assures me the next one will be the biggest mobility deployment project in the world. Let's see...

I should finish by saying that this is my day project. By night/weekend, I keep doing netcf work and stay tuned for some exciting stuff coming in SDF v2.0 from OpenNETCF.