Back in July, a colleague and I went to Torrance, CA to attend DevelopMentor's Guerilla .NET 2.0 training course. I enjoy learning about new technologies and I was anxious to see how .NET compared to Java/J2EE. I absolutely love writing code and DevelopMentor's motto of "Write code day and night" (or something close to that) certainly appealed to me.
Overall, we learned lots of interesting things, but I found the course to be rather disappointing. I really did expect to write code day and night. Instead, we worked on labs for about 10 hours. There was just so much information to cover, which didn't leave a lot of time for labs. On top of that, the labs tended to be rather simple. I was certainly looking for more of a challenge.
We opted to attend the 2.0 course because it is scheduled to be released sometime in November. However, we probably should have taken the 1.1 course instead. Most of the people attending the 2.0 course were already very familiar with 1.1, so they were really only looking for the differences between 1.1 and 2.0 (changes, new features, etc). As a result, the instructors met halfway with the material. For those of us that had never seen .NET before, we spent a lot of time trying to catch up. I suspect that those already familiar with 1.1 were probably pretty bored most of the time. Chris and I had spent some time learning C# syntax before the course, which kept us from being completely lost.
C# is very Java-like, which made it pretty easy to learn. I liked the delegates (sort of like function pointers), which can help code look a little tidier than with anonymous inner classes. I'm not so sure about the attributes yet. I'm pretty sure that I don't like the weird ? shortcut. In a lot of ways, some of the features of the C# language look like hacks to get the language to perform certain behaviours. I suspect that my current opinion will change as I use the language more.
I find it interesting that Java and C# are pretty much headed down the same path, what with generics and the like. No real surprise, I guess, since they're both solving the same problem.
One of things that really disappointed me was the realization that .NET is not Microsoft's answer to J2EE. Chris and I had mistakenly believe that .NET had equivalents to EJBs and the like, but really it's Microsoft's answer to J2SE. Sure, MS provides ADO.NET (basically ODBC) and ASP (similar to JSP), but those are technologies built on top of .NET.
Microsoft seems to have this incessant need to change things that are already standardized (or at least generally accepted). Case in point is ADO - they could have easily taken ODBC/JDBC and built a .NET equivalent (NDBC?). Instead, they came up with new method names and the like. I find that really annoying.
Although there were a lot of things that I did find annoying, there were also some things that I really liked. One of the big wow things for me was the ease at which Visual Studio lets you build web services-based applications. The whole WSDL browser and code generator stuff is really slick. I built a small GUI-based app that used web services to retrieve weather info and display it in about 5 minutes. I was totally juiced by that.
I could continue offering up opinions about C#/.NET, but I really don't have enough experience yet for those opinions to have any meaning, so I'm going to stop. :)
There was an optional programming competition that was part of the Guerilla course, with prizes being awarded for the best programs. Being in class 12 hours a day didn't leave a lot of time for working on such a task, but Chris and I spent some time figuring out what we could put together. Chris and I hummed and hawwed about what we could do. In a room full of programming geeks, technologically-slanted apps should do the trick. However, experience has taught us that style wins over substance every time.
The group went to play laser tag one night and we convinced two of the instructors to have a go at Dance Dance Revolution. Chris took a great picture and he came up with the idea of hacking up the picture a bit and writing a program to simulate the instructors playing DDR.
We stayed up late a couple of nights and finally came up with a decent app. We animated the players, played music from the game, and gave each dancer their own skill level. The whole thing was really cheesy, but it looked hilarious.
Apparently everyone else thought so too and we won first prize. Our instincts to go with flash and dash and make fun of the instructors was proven correct.
All in all, we learned a lot of stuff about .NET during the course. I think the most important thing we learned is that the system is capable of a lot of stuff and we've been given just enough information to know how to dig deeper for whatever it is we need. I was really disappointed in the lack of coding, but the sheer amount of material to be covered meant that there just wasn't a lot of time for that.
Would I take another Guerilla course? I don't know. The instructors certainly knew their stuff (they were fabulous, actually), so going to another course just to collect info about a certain technology would be worthwhile. But I would certainly change their slogan.
- Mike