I got this email today from Mark…..

Hello Joe,

First may I say thank you very much for all the information that have published on asp.net. I have learnt allot from it. I do follow you on twitter although I am interested to know how you started out, how you gained experience to the point that you are a Senior Program Manager for Microsoft. If you are able to spend any of your time replying to this message I would be very grateful.

Many thanks


I get an email like this every few weeks so I thought I’d blog the reply with some tips.


I began as an accidental programmer when a business my father had an interest in purchased a CNC machine and had problems programming it. Through my career I worked on Main-Frames, Mini-Computers, and Micros/PCs doing everything from device drivers to reports to UI work.

I also did the “management thing, and the start-up thing, before joining Microsoft to be a geek, I was the President and CEO of a publically traded company in New York (right on Broadway !)

When thinking about your question I jotted down some “tips”.

Hope they help.

1.) Spend your beer money on books.

For much of my your career I made myself read at least one technical book per week (if I finished early I would start another or read a business or personal development book.)  I’m an old dude, so I like paper, but there are lots of free book son PDF (like Microsoft’s Patterns and Practices publications) – I’m also a huge Amazon Kindle fan and am about to trade in my Kindle 1 for the new Kindle DX. Not only does it hold 3500 books but it has a native PDF reader and you can get magazines and blogs!

I’m always amazed at how many people I meet that do NOT read proactively. The majority of my technical knowledge (and all my knowledge for that matter) is the product of proactive reading.

When you read,  spread your wings. If you’re a web developer, don’t just read about ASP.NET or VB. Read about database design, read a book on how TCP/IP works, read about load balancing, you can fill in a lot of blanks by reading outside your box.

2.) Be an insomniac or addicted to caffeine.

Everything takes time and there isn’t enough of it. I force myself to read every night, even if I can only keep my eyes open for 15 minutes. Like most of the things we want to accomplish in life, “getting it done” include creating a behavior that becomes an ingrained part of our schedule.

I normally have 3 books going, One technical book (right now it’s Julie Lerman’s Programming Entity Framework ), one non-technical educational or personal development book, (I just finished The Fall of Carthage), and one book just for fun, right now I’m reading Orson Scott Card’s “First Meetings”)

Since I’ve had children, I’ve needed to commit to getting up a bit earlier (before the girls) and eliminating a few of my less productive activities. I just remind myself that continuing to learn is investing in my professional future and therefore my families security.

3.) Always have two jobs.

I’ve always had a second “job”. Often my 2nd job does not pay much (or at all). I also try to make my second job focus on something that I don’t do in my REAL job. Sometimes they are little things, like a few months ago I wrote a Silverlight article for PHP Architect Magazine, last year I served as technical editor for  “ASP.NET AJAX in Action”. Making commitments outside your comfort zone is great for personal and professional growth,

4.) Fight with your boss.

You need to be artful with this one. It doesn’t mean hate your boss (or make him hate you) but it means push back on decisions, look forward from a business and technical perspective and question the standard way of doing things. When we started the team that is now the STO Developer Community Team at Microsoft and decided to include multi-media content in our initiatives we did this and invented the How-Do-I video format. (Casual, NO POWERPOINTS, topically atomic, etc.). This format had never really been done at Microsoft before. It’s now the most cost effective type of developer interaction we have, has (I think) the highest satisfaction rating, and not only is every part of Microsoft doing How-Do-I videos, but tons of our partners are doing them too.

5.) Have a ONE-A-DAY policy.

This one is simple in principle but much harder in practice.

It goes like this……

You never, ever, ever put your head on the pillow at night until you have done 5 things. You do this EVERY day and you can never use anything on the list twice.

  1. INTENTIONALLY Learn 1 thing.
  2. Do 1 thing to advance your career.
  3. Do 1 thing to improve your personal life.
  4. Do 1 thing to help someone else be great.
  5. Tell someone that you love them / care about them, etc. (someone you didn’t tell yesterday.)

These things can be as simple as making a phone call or an email, but never let a day go by that you fail to perform all five.

6.) Quit your job.

Yep, you read that right. Now, don’t be stupid. Stay employed, but if your job gets intellectually stale, or technically irrelevant of antiquated, and you can’t work with your manager to improve the situation, go find a better gig !

You should try to NEVER leave a job that you have been at less than a year, but a couple 1 – 2 year gigs won’t kill your resume, can really boost your salary and contribute to your professional diversity.  (I’ve been at Microsoft and only quit once. (ScottGu ordered me to stay 🙂 )

7.) Work in Developer Support.

I served as the Support Director for a compiler company called JPI (Jensen Partners International). Niels Jensen was one of the three original founders of Borland and later founded JPI and built C, C++, Pascal, Modula-2, ADA, etc. compilers for DOS, Windows, and OS/2. I worked at JPI until the company was acquired by Clarion,  I primarily supported ISVs helping them get and keep their products working with TopSpeed compilers but also worked with “high profile” partners and customers.

When it comes to DIVERSE learning, support (solving other peoples problems) is like drinking from an op[en fire hydrant.

If you don’t want to get a job in developer support, answer questions in support forums like the ones at www.asp.net/forums/

Not only will it “pump up you knowledge”, but it will really increase your presence in the developer community and bolster your resume value.

8.) Start a company.

As al alternative to #3, start your own small company.

Even if it’s as simple as a company that sets up web sites for your local community organizations, it gives you a chance to make a couple of bucks and learn how a company runs, plus, you’ll have to spread your “technical wings” as your customers make requests.

Though I now work at a “big” company, I’ve done many startups and also worked with VC organizations helping other start-ups.

Someday, I’ll get involved in another start up.

9.) Attend “Geek Stuff”.

If you can swing it, go to PDC, Tech Ed, MIX. Or, smaller event like Code Camp, The Heartland Developer Conference, etc.

If you can’t afford those, go to local user groups, 1 day or 1/2 day events at you local Microsoft Office (or whatever other company does them.)

Attend free webcasts (Microsoft does thousands of them !) Even watch pre-recorded ones.

They are free, easier than reading, and not only educational, but often catalyst for thought !

10.) Teach / Speak / Write

Commit to put yourself and your work in front of other people.

This is a bit painful in the beginning 🙂 but you’ll quickly get motivated to REALLY know your stuff and it’s a great way to get recognized as a developer expert in your chosen fields,

Who knows, you may even end up in your perfect job, making good money doing exactly what you want to be doing !!!