Log in

No account? Create an account
Gavin Greig [userpic]


October 6th, 2004 (11:13 pm)

I came back a couple of days ago from a week's training near Reading with a couple of colleagues including qidane. The course was a "bootcamp" for .NET development in C# or Visual Basic. We have a preference for C#.

It's the first time I've been sent away on a residential course by an employer, so it was a novel experience. I don't think a bootcamp is typical anyway though!

We chose it ourselves, because we wanted a fast introduction to a range of material in a short time, and it certainly did that. It ran for seven days, from 6 o'clock on Sunday evening a week and a half ago until the final exam ended at 1 o'clock this Sunday, and there wasn't a break. There were scheduled lectures, labs and exams from 8:30 in the morning until 8:30 at night, and then we had to start our reading for the next day. We had instructions to stop that at midnight even if we weren't finished, which was not uncommon. Of course, I exaggerate slightly when I say there wasn't a break, but only slightly - meals were allotted only half an hour, and there were two or three ten minute breaks in a day.

Needless to say, this was a bit tiring! In fact, I'm still a bit wabbit.

However, having completed the course, it did what we wanted it to, and we learned things that will be helpful to us. We also all qualified as MCAD (Microsoft Certified Application Developer) after three exams, which was personally satisfying. We hope to return within a few months to push that up to MCSD (Microsoft Certified Solution Developer).

It means I can now have an informed opinion on the value of Microsoft Certification exams. They're one of these things that people tend to be a bit sceptical about, which kind of annoys me because they're generally people who haven't done one themselves.

So, now that I KNOW for myself, what is my opinion? Will they magically make you into a good developer?

Of course, the answer is no, but that's not what they're intended to do. What they are intended to do is to make sure that developers have a reasonable grounding in the recommended ways of using a particular technology, and that's something that they do quite well. It's branded technology, of course, but what do you expect? If you're a bad developer, you can continue to be a bad developer with a little more knowledge to make you dangerous, but if you're a good developer there's a foundation stone laid that you can build on and develop with further experience. So don't be overly impressed if someone has a qualification - most of the people on the course were able to pass most of the exams - but do count it as an additional tool in their toolbox.

Next week, back south once more for training, direct from Microsoft this time. Unfortunately none of my colleagues are going this time, but with a bit of luck they should have a chance to go at a later date. I'm looking forward to this in a slightly fatigued way after last week, but this course will be within more traditional office hours, and will include lectures and labs using Visual Studio 2005. VS2005 is currently in beta with a projected release of some time next year - it seems to be summer that's expected - so it's quite exciting to get involved in the new technology before it officially arrives.

Some pleasant relaxation was had immediately after the course visiting scottymcleod, Janice and young Andrew in London before flying back up to some chilly Scottish weather on Monday after a week of shirt-sleeves.


Posted by: Nik Whitehead (sharikkamur)
Posted at: October 7th, 2004 05:41 pm (UTC)
C# or not C#, that is the question

OK then, as you're clearly far more up on this than I am... :)

You know me - ANSI C, X11 without a safety toolkit. I have a medium-sized research project to code up - graphics, computer vision, AI, that sort of thing. So is C# The Way To Go? I do actually have the C# MCP course materials (RGU was a certified training establishment and the original plan was that I'd eventually become their MCT, but plans change) but just haven't worked up the enthusiasm to work through them. Partly because I'm not interested in internet-focussed applications, and partly because it's so damned big and scary.

I suppose the real question is, do I really need to learn it and am I going to hate every minute of it? What do you think?

Posted by: Gavin Greig (ggreig)
Posted at: October 7th, 2004 08:49 pm (UTC)
Re: C# or not C#, that is the question

Coming from C++, C# feels fairly natural. If you're coming from C, then I guess you would have to get used to putting things in classes, but I would think that is something worth learning anyway.

Assuming you'll be using Visual Studio, I also think that the learning curve may not be as great as you fear. While C# feels a lot like C++, it has quite a number of the more esoteric bits ironed out and doesn't come with too many new oddities of its own. Probably most importantly though, if you're learning, the IntelliSense in Visual Studio is pretty good and the BCL (Base Class Library) is so well structured that a lot of the time you can guess at what you're looking for and rely on IntelliSense to tell you whether you're heading in the right direction. You can also document your own code using XML comments which will appear in the IntelliSense - really rather useful in a big project!

I don't know how rich the APIs or other libraries are in the particular directions you want to go with it, but would think it would be worth investigating. Learning any new language will be a bit slow at first, but I think this would be a relatively easy one for you to pick up with significant productivity benefits in the slightly longer term.

I think there are three significant new oddities to get used to - properties, attributes and delegates. Properties help in the encapsulation of class data members (called fields in C#) by providing an additional layer between them and the outside world. Attributes can be used to quickly add standard functionality to classes to functions without having to write all the code yourself, and delegates are a lot like function pointers in C++. Delegates have a slightly confusing syntax - I think that's probably unavoidable in dealing with something like a function pointer - but they are important for the .NET model of how to handle events, so you should struggle over the bump with them. I expect they will become second nature in time.

If you have used templates or the STL in C++, C# is getting some similar functionality next year in the form of a significant feature called "generics". If you have used templates and the STL, then generics are something to look forward to - if not, don't worry about them now.

If I were you, I would be inclined to give it a try. The only thing that gives me pause is whether you can expect reasonable support for your particular lines of development. I would do a bit more checking into what kind of support you can expect there before making a decision, but as for the language itself - I think it's a good way to go.

Oh, just one thing more - although .NET does have a lot of Internet functionality in it and people tend to focus on that a lot, it's perfectly good for writing non-Internet focussed apps too.

If you need to, it's supposed to be easy to use other languages within a .NET project, so if you wanted to write number-crunching in C++ and the user interface in C#, that should be possible - perhaps even easy! At the moment, they would have to be in separate executables or libraries within a solution, but as of next year it is even supposed to be possible to mix languages within a single DLL or EXE.

Posted by: Nik Whitehead (sharikkamur)
Posted at: October 7th, 2004 05:43 pm (UTC)

Oh yes... and congratulations too! :)

I've just noticed we use the same LJ template. Must be that age thing again, right?

Posted by: Gavin Greig (ggreig)
Posted at: October 7th, 2004 08:50 pm (UTC)

Thank you!

I chose it because it's the only template that looks half-decent without extensive modification. I haven't quite summoned up the enthusiasm for extensive modification!

Posted by: msinvisfem (msinvisfem)
Posted at: October 9th, 2004 07:26 am (UTC)

Congrats on passing your exams. :-)

Anyhoo, because I am nosey, I was wondering if you had a chance/found-an-excuse to wear your t-shirt yet? (It's probably weird of me to ask so you don't have to answer...)

Well here's hoping that you have fully recovered from your course and that you have a much more relaxed course next week. Bye!

Posted by: Gavin Greig (ggreig)
Posted at: October 9th, 2004 08:37 am (UTC)

Yep, I have worn the t-shirt and in fact it was admired. There's also photographic evidence somewhere at work, as that was the day we took a couple of photos for the corporate newsletter.

6 Read Comments