Archive for January, 2007

Studying for VS 2005 / .NET 2.0 certifications

At EPS, we’re just about to get started on a new study group aiming for the .NET 2.0 certifications. We’ve done study groups before (around 4 years ago), and it’s been a great experience. There’s a lot of benefits in doing something like it:
  • The individual improves his knowledge in many areas of .NET he or she is not familiar with;
  • The individual benefits from getting certified, which definitely helps with the resume;
  • The company benefits from each individual raising his knowledge on the platform;
  • The company also benefits from individuals getting certified, since it helps with requirements for Microsoft Partnership programs;
  • It’s MUCH better to learn as a group, then learning alone.

Having the group is great because we set aside time every week just to learn together, and therefore, we always keep the ball rolling. It’s also great to have more brains absorbing the same material, where one person can complement the other one, since nobody can learn everything.

I’m personally very excited about doing this again. I was just going through the requirements for the exams, and even though there’s a lot of content I already know about, there is also a lot more content I DO NOT know about, so I can’t wait to cover all that ground. My main interest is not to try to learn every single little thing, knowing all the details for everything; my real goal is to get a good overview of everything, and know whether something is possible to be accomplished in .NET, and where I can go find some information about it. This approach has helped me countless times through the years.


Man, it’s pretty confusing to understand what route to go with all the exams and different certifications one can pursue. Since I’ve had already gone through this kind of process (first earning the MCAD certification, and then the MCSD.NET one), I needed to know what I have to do to upgrade my certification to the latest technology. I also needed to know the routes for somebody who hasn’t taken any of the exams before (which is the case for some of our co-workers). Below is a summary I came up with so that I could keep my sanity and explain it to somebody else.  🙂

For VS.NET certifications (.NET 1.0), there were the following main exams:

  • XML Web Services
  • Web Apps
  • Windows Apps
  • Solution Architecture
  • SQL Server

Somebody who passes any one of those exams earns the MCP (Microsoft Certified Professional) certification. The next step is the MCAD certification (Microsoft Certified Application Developer). In order to achieve the MCAD, one had to pass the XML Web Services exam, plus either the Web Apps or Windows Apps, plus an elective exam, such as SQL Server or BizTalk Server.

The next step after that was the MCSD.NET (Microsoft Certified Solution Developer for .NET). Besides the MCAD requirements, one had to pass also the other UI core exam (if Web Apps was the one used for MCAD, then the Windows Apps had to be taken here, or vice versa), and also the Solution Architecture exam.

Now, for VS 2005 (.NET 2.0) certifications, here’s the picture…

These are the main exams:

  • Application Development Foundation
  • Web-Based Client Dev
  • Windows-Based Client Dev
  • Distributed Application Development (XML Web Services, Remoting, …)
  • Designing and Developing Enterprise Apps (Architecture)
  • SQL 2005 – Implementation and Maintenance

Now, instead of MCAD and MCSD, we have MCTS (Microsoft Certified Technology Specialist) and MCPD (Microsoft Certified Professional Developer). Those are broken up into specific technologies, such as SQL Server 2005, Web Apps, Windows Apps…

Here are the main certifications, along with their requirements:

  • MCTS: SQL Server 2005
    • 70-431: .SQL Server 2005 – Implementation and Maintenance


  • MCTS: .NET Framework 2.0 Web Applications
    • 70-536: .NET 2.0 – Application Development Foundation
    • 70-528: .NET 2.0 – Web-Based Client Development


  • MCTS .NET Framework 2.0 Windows Applications
    • 70-536: .NET 2.0 – Application Development Foundation
    • 70-526: .NET 2.0 – Windows-Based Client Development


  • MCPD: Web Developer
    • MCTS requisites
    • 70-547: Designing and Developing Web Apps using .NET


  • MCPD: Windows Developer
    • MCTS requisites
    • 70-547: Designing and Developing Web Apps using .NET


  • MCPD : Distributed Applications (xml, web services, remoting…)
    • 70-536: .NET 2.0 – Application Development Foundation
    • 70-529: .NET 2.0 – Distributed Application Development


  • MCPD: Enterprise Applications Developer
    • MCTS 4 prerequisite exams (foundation, web, windows, distributed)
    • 70-549: Designing and Developing Enterprise Applications (Architecture)

Those are the paths for somebody who hasn’t achieved the certifications before. Below is the upgrade path for those who have had achieved MCAD or MCSD.NET:

  • MCAD to MCTS / MCPD Web Developer : 70-551 (MCAD to MCPD Web Developer)
  • MCAD to MCTS / MCPD Windows Developer: 70-552 (MCAD to MCPD Windows Developer)
  • MCAD to MCTS Distributed Apps and MCPD Enterprise Developer: 70-529 and 70-549
  • MCSD.NET to MCTS (Web, Windows, Distributed) and MCPD Enterprise Developer:
    • 70-554: MCSD to MCPD Enterprise Developer – Part 1
    • 70-553: MCSD to MCPD Enterprise Developer – Part 2

More info:

I’m sorry I haven’t put links to all the exams (didn’t have time to do it)… but you can find all those at:

There you can find all the requirements for the certifications, and for each exam. Good luck!


Using TimeSnapper for more than helping with timesheets

So a few weeks back, my friend and co-worker Simon has showed at an internal meeting this tool called TimeSnapper ( The main selling point of the tool is to help people recreating their days to make it easier to produce timesheets. I’ve downloaded it’s free version and started to use it to see how I like it. On the last few days I’ve noticed it not only helps with the timesheet, but also with my software development efforts. I’ll explain:
  • Last Friday, I was wrapping things up at work before leaving the office. Among other things, I had just finished refactoring some code, and I was going through all my changes to make sure my XML comments were accurate. After a lot of typing, Visual Studio crashes on me before I save the code file. When I opened it up again, VS recoved part of the changes, but not all of it. That was frustrating because I had put though into what comments I was going to write, but then I remembered TimeSnapper was keeping track of my actions, so at least I was able to go back in TimeSnapper and see what comments I had come with. At that point in time, I liked retyping comments much better then rethinking what to type.  🙂
  • Yesterday I was writing some code, test-first style, and there was a point one the specific test I was working on ran successfully. Then I’ve changed a few things and got distracted by something else. When I came back to the code, my test was failing, and I could swear I had seen it running successfully before, but then I started questioning myself: "was it really running right, or was I overlooking something?". And if it was running, I couldn’t remember what I could have change that could have broken it. Well, I went back to TimeSnapper again, to replay that point in time; I was able to see that the test was really working fine at some point, and I saw what I had changed that caused the test to fail.
  • Usually before I wrap up the day, I leave some notes on my computer (in OneNote) as reminders for myself as to what was the thing I was working last on the day, so that next day I know where to start from. Well, I’m using TimeSnapper for that now.

I’m starting to think of TimeSnapper as a good tool to help me getting back on track after switching gears from one task to another, or helping me understanding what paths I’ve gone through to come to a specific conclusion. For instance, when I’m writing code I’m trying out different things, and eventually I’ll settle down to something that I like, and probably will refactor the code. By playing back (at fast speed, of course) the moments as I’ve worked through the code, it gets easier for me to understand why I’ve taken some design decisions, and what I should put on the comments to better document the code.