Keeping Up to Date and Going Backwards at the Same Time
Part of my role as a Product Planner is to keep up with technology changes in the industry as they impact the audiences that I focus on. For me, that means developer technologies and SQL Server trends etc. For the most part, this is an enjoyable aspect of the role but one that can keep you on your toes and not leave much room for down time.
Currently, we are in the midst of our planning cycle for our next fiscal year. That means I’m busy deciding what exams to create and what certifications will look like for this fiscal year. At the moment, that encompasses Visual Studio 2010, .NET 4.0, Expressions, Embedded, and Office technologies.
What’s exciting about this is the opportunity it presents to use some new found knowledge on the products that fit into these categories. In other words, I have had to research these products to a certain extent to understand their place in the community. This means working with these tools and technologies and meeting with the Program Managers internal to Microsoft who are responsible for these products or features in the products.
It’s great because I get to see what’s coming. It’s frustrating because for the most part, I can’t go as deep as I want to. The reason is mainly due to the breadth of products and technologies that I need to be aware of. For example, how many of you are experts in Visual Basic, C#, C/C++, IronPython, Ruby, Visual Studio, LINQ, ADO.NET, ASP.NET, Windows Forms, WPF, WCF, WF, Oslo, Dublin, SQL Server Administration, database development, SSAS, SSIS, SSRS, VBA, VSTO, Microsoft Office SharePoint Server, WSS, BizTalk, Embedded CE, Windows Internals, device driver development……
I know that I certainly am not, but these are some, not all but pretty close, of the technologies that I need to be able to intelligently discuss with Microsoft folks and of course most importantly, you. Did I say how much I love this job? Seriously. Who else gets to work with such a plethora of tools and technologies on a regular basis?
At any rate, on top of staying up to date at work, I have gone backwards at home. I freely admit that I have never sat down and seriously devoted time to learning how to program using C or C++. Why would I want to do that when I can already create applications in VB or C#? Perhaps because not all computer programming can be done in managed code yet.
Sure, my university courses were in Java and that’s not managed code. So I learned how to program in another OOP language and that made me tri-lingual in terms of coding languages. The problem is, that’s not enough for me. I want to be able to code natively for a number of reasons, not the least of which is to better understand the native code developer to help me see how we can bring C++ back into the certification picture, where it makes sense to do so.
To that end, I started down a path that I shouldn’t have, because I know better. I tried to use a book that promised I would learn C++ in, well, a short amount of time. Hmmmm, there really are no shortcuts to learning C++ if you want to understand the language. As an example, using strcpy() was the mentioned method in this particular text with a little exercise on creating some char arrays and then copying some arrays contents into another. Not the way I would expect to do this but it’s purpose was not real world but rather to teach the use of strcpy().
Not having used C++ in a really long time, past attempts at learning it stopped at pointers for some reason, I happily coded using the aforementioned method. Visual Studio complained a bit about strcpy() and said it would be better if I used strcpy_s() to prevent overwriting memory locations. Ah yes, C++ is powerful and with that power comes great responsibility so of course I elected to do so. The problem is, strcpy() worked with no complaints. Upon switching the code to use strcpy_s(), I started getting exceptions around corrupting variables. Huh?
Investigation is ongoing with some suggestions from C++ devs internally but, setting that aside, this situation brings up a really good point. Learning something as complex as all the nuances of using memory references and functions that write to memory with programming languages, is not a trivial task and not something covered in your average book or course. Managed code takes that complexity and reduces it considerably. We don’t have to worry about it so much.
So, what does that have to do with certifications? Well, we have made the decision to remove any future requirements for a foundational exam as a prerequisite for our .NET exams. In light of my experience with C++, I wonder now if that is the correct decision. Realistically, we will be covering the core foundational aspects in each exam as it pertains to that technology and that will test the candidate on those aspects but if it’s not in a standalone exam, will candidates seek out that core knowledge?
SO, if you’ve read this far, I apologize for the book size posting today but I wanted to blog about something and this is what came to mind. Plus, it kept from having to continue unpacking my boxes and arranging my new office. Now I can leave for the day. :-)
ps If you have recommended books on learning C++, I prefer self taught, let me know. I don’t have time for a classroom session.
Gerry
Comments
Anonymous
February 09, 2009
PingBack from http://www.clickandsolve.com/?p=5525Anonymous
February 10, 2009
Drat. I hated 536, even though I somehow managed to pass on the first attempt. Until now, I was relieved that I wouldn't have to deal with some of the topics again unless they came up in a project. I can kind of see the point, though. The "Skills Measured" section includes COM interop, System.Drawing, and the whole collection tree. A Silverlight dev, for example, should never touch COM, I'm not sure about Drawing, and if (s)he uses anything but ObservableCollection or something derived from it, it'll cause a world of pain with databinding. So perhaps the "everything in the framework except UI" exam isn't applicable for everyone. As far as C++, my best suggestion is to sketch everything. I've tutored college students in Data Structures and Operating Systems courses, and held programming classes for my coworkers. Either a whiteboard or lots of paper come in handy. Also, build your own double-linked list. If and when you get that working, you'll really get the hang of pointers to a single piece of data. Arrays are a slight twist on that, but probably less complicated than keeping track of linked lists. Good luck.Anonymous
February 10, 2009
The comment has been removedAnonymous
February 10, 2009
Does "future requirements" mean that this change will take affect for .NET 4.0, but the current .NET 2.0 and 3.5 MCTSs still require passing 70-536?Anonymous
February 10, 2009
Hi Mark, That is correct. GerryAnonymous
February 10, 2009
I have a recommendation for the future MCPD .NET 4.0 certification.
- Have one PRO exam; no more split between Windows, Web or Enterprise exams. And have it more focused on analysis, design, test and maintainance like it used to be. Leave the develop/deploy questions for the TS exams.
- Require passing three exams: 70-536 (an MCPD should know the Foundation stuff), the one PRO exam, and one MCTS .NET 4.0 exam (a MCPD should know how to implement at least one technology, e.g. ASP.NET or WCF). There would then be a one-to-one mapping between any MCTS .NET 4.0 and any MCPD .NET 4.0. Someone with any MCTS .NET 4.0 cert would just have to pass the 70-536 and the PRO exam to upgrade it to an MCPD 4.0 cert for the same technology. What does everyone think?
Anonymous
February 10, 2009
I think 70-536 is a must and removing the requirements would be a mistake. Sure, we don't often use everything covered in the exam. Passing the exam doesn't necessarily mean that you need to be an expert on every single topic covered in the exam. But a good developer needs to know what is there and where to find it if needed. I feel that preparing for the exam is a great way to study the .NET framework class library. I think the preparation guide for 80-536 is a way Microsoft tells what basic stuff in the .NET framework class library a developer must know. Learning core knowledge is important. I used to thoroughly read the MSDN documentation on all the basic Win32 API functions. I am still benefiting from that experience up to today.Anonymous
February 11, 2009
I too completely agree on minor's comments. It is very much essential that one should be tested in the fundamentals of the .Net framework to obtain a TS level. I believe that would boost his efficiency.Anonymous
February 11, 2009
I think you are reading the posting incorrectly. I'm not stating that the foundational concepts will NOT be tested, just that the won't be tested in a seperate exam anymore. They will be a part of each TS exam. GerryAnonymous
February 11, 2009
Gerry, I am not sure if combining the foundational concepts into each TS exam would be realistic. The .NET framework class library itself is huge. Looking at the preparation guide for 70-536, there are so many topics. I guess there are two options - either increasing the test time (2 - 3 hours to 3 - 5 hours?) so that more questions can be squeezed in or reducing the number of technology-specific questions.Anonymous
February 11, 2009
Minor, You have to be realistic about this. 536 doesn't even cover half of the .NET Framework. The Framework continues to grow. One exam cannot possibly cover it all and we won't try to. .NET has been out for some time and people should already have familiarity with it. In the same way that we don't require a prerequisite OOP exam to ensure that candidates understand the principles of object-oriented programming, or an exam on core programming fundamentals such as decision structures and repetition etc., we will no longer require a prerequisite exam on .NET fundamentals. The candidate will be expected to know these concepts prior to taking the MCTS exams and that will be clearly explained in the preparation guides. If they do not know the basics, they will not be successful in programming in this environment. GerryAnonymous
April 03, 2009
Hi Gerry! I'm sorry I stumbled across your post about 2 months after everyone else. I agree that having a foundation exam takes developers away from their core focus. For example, an ASP.NET developer would rather spend more time on globalization and MVC than with COM Interop. I'm really looking forward to the .NET 4 certification exams. Do you know of any schedule for the availability of the exams? I hope they're available soon after the release of the RTM/Final of .NET 4 version. NitinAnonymous
April 03, 2009
Hi Nitin, Welcome to my blog. :-) That is great feedback on the content and focus, thank you. Our typical timeframe that we strive for is no later than 60 days past RTM of the product (VS and Framework). We're not always in that window for various reasons. I'm hoping that have the .NET 4.0 exams within that window though. GerryAnonymous
November 23, 2009
The comment has been removed