Reflecting on the past and the transition to .NET development

Having recently released my first major project after having left CodeGear/Borland I’ve found myself reflecting on the last few years and my decision to leave CG. It seems particularly apropos as my first Falafel review was today.

For awhile back in late 2006 early 2007 I’d felt like I was in a rut and watching all kinds of cool things happening in the .NET world. A few years earlier, I’d made the decision to work on Internet technology because I felt it was important and early on had me working on things like ISAPI thread pooling back in 2002 which was cool. Eventually, when Borland decided to get into .NET with C#Builder I got to work on the ASP.NET designer with Jim Tierney which was a great experience and served to “keep my head in the game”. I learned a lot about .NET and ASP.NET in particular and had the chance to write my first designer from the ground up. I used to wonder how many people Microsoft had working on their ASP.NET designer? I bet it was more than two.

The up hill battle

Prior to leaving Borland for Microsoft in 1999 I’d spent a great deal of time working on what eventually became the core of the ASP.NET designer, the integration of the MSHTML control. Even with all the capabilities we were able to wring out of it I became very discouraged trying to keep pace with Microsoft’s designer. When VS.NET 2005 RTM’ed it really hit me hard because I knew Delphi’s ASP.NET designer simply wouldn’t catch up at least not on the trajectory it was on. I recall many difficult conversations about which direction to take including dropping the designer entirely and focusing on creating a richer code editor experience geared towards web development. The primary issue was that Microsoft’s WebForms architecture placed an incredibly heavy burden on the design environment in an attempt to make it function like VB, Winforms and VCL designer’s developers had grown to love.

I was frustrated not spending time working on framework code people could leverage in their own applications and instead putting every last minute into the designer which, in the end, is more or less geared towards trivial applications. A fact that’s true even of Microsoft’s ASP.NET designer which has diminishing returns as the complexity of an application grows. Not a good value add proposition. For me, it was a pretty dark time and I didn’t feel my efforts were headed in the right direction, a point amplified when I attended Google Developer Day in May ’07. To be honest, I found myself sitting through session after session wondering why I was the only CG developer attending this free conference a mere 15 miles from the office thinking the entire team should have been there. You could say it was an epiphany of sorts 28 days before what would be my last day.

Another issue I struggled with was believing CG would eventually be freed from Borland’s confines. It’s been just over two years since the original announcement and to my knowledge still no word. Then there’s the decline in BORL stock, dropping an astonishing 70% in the eight months following my departure. While I managed to survive a dozen or more layoffs in 15 years I’m glad I dodged what must have been a nerve racking free fall.

Basically, there was a lot on my mind this time last year.

Life in the .NET world

Back to the point, it’s been a welcome change working exclusively in .NET and in many ways a reprieve from Win32. I’m enjoying the .NET ecosystem and learning lots of new tools which is something I wasn’t really aware I missed on the Win32 side. I think one of the key things that Microsoft was missing prior to .NET was a runtime that developers could “party on” (to quote an old Microsoft phrase) and with .NET they have that in spades.

Probably one of the most liberating things has been getting away from the Windows API and focusing less on the individual function calls and more on solving real world problems. The other day Mark Edington called me regarding a SendMessage question and I can’t say I really miss those days. Another exciting piece is knowing that there is lots more to explore like all the new features in C# 3.0. Admittedly, I really struggled not having the constant drum beat of language innovation present in the .NET world.

.NET Tooling

Speaking of tools one of the most enjoyable parts of .NET development for me has been using VS.NET, NDepend, NUnit, NCover and writing code that’s easier to test  supporting things like Mock Objects. Reflection is a beautiful thing. I’ve also enjoyed the .NET Open Source community including dasBlog, CruiseControl.NET, FileHelpers , edtFTP , ScrewTurn , SubSonic and many others. I think the past nine months have done a lot to reinvigorate me as a developer and I’m feeling more engaged and learning more now than I had in years in Win32 land. It’s interesting to think the guy I sat right across the hall from had so much to do with launching both these development communities.

What’s your .NET experience been like?

[UPDATED: April 1] Fix link.

13 thoughts on “Reflecting on the past and the transition to .NET development

  1. I here you Steve. I love Delphi and have used it since version 1, but I am also a geek who likes to stay up to date and play with all the new toys. Delphi is just not in that game any more. If you are happy maintaining your 7 year old client server database app, possibly releasing a 64bit and Unicode version in a few years, then Delphi is probably for you. But to use cool stuff like WPF, WCF and even just things like the cool new MVC framework on ASP.NET, Delphi is just not a good choice anymore.
    While Delphi is still great on the desktop, most of my clients no longer want desktop apps. And the few smallish desktop apps I create it makes sense to do them in .NET anyway to just have a more consistent code base with my ASP.NET apps.

  2. I could say that I will agree if there were no RAD Studio 2007 but that guy simply IS keeping me believing on the Big D. I can do most of the interesting stuff on the .Net framework (ASP.NET) if web is required while keeping and saving my experience on my second mother language going (after Spanish) without being worried about the next version of C# or .Net breaking everything or forcing me to re-build our entire projects again (oh yeah, 1.1 to 2.0 hurt us, and yes we did it on C#, after that, we jump back to Delphi once it became available on the 2.0 flavor). Being able to mix C# assemblies with Delphi.Net ones, or Win32 with .Net just reminds me of the sweet pleasures of exporting COM objects into Delphi. Piece of cake.
    Nowdays, CodeGear is giving me reasons to keep working on my sexy language and as a proof of that I am fully commit it to them opening 4 job openings (hint hint, Toronto!) to young talents to teach them the Delphi way. Unicode is a requirement, and native 64 bit pure power, those are simple hurdles that need to be jumped in order to move ahead.
    On the other hand, lately i’ve noticed that most of the popular web stuff out there is not build on MS, the scene is changing, so, we are now developing all our code (services) agnostic enough to deal with any other technology on the web front just in case MS keeps loosing its grounds there.
    I’m happy about your new project, and I love hearing the insides of such a big and challenging development process as the one in CodeGear. Keep them coming, and Go Go Delphi.

  3. I really don’t know anything about .NET technology and I newer will be interested in it for the simple reason that Delphi (I am still using Delphi 7) is so great to develop desktop applications that we will always need for many kind of applications like financial, scientific and technical applications. Just to list some of them. However, regarding web applications all the good, neat and scalable solutions are out off Microsoft domain and will mainly be under UNIX (Linux, FreeBSD and the others). I find Free Pascal and Powtils a great solution for web application.
    But if you want something a lot more "strong" solution to develop web applications then Erlang/OTP (YAWS + Mnesia) is the way to go.
    Best wishes for your project 🙂

  4. With the new CodeGear RAD Studio 2007, which lacks the support of Winforms my .NET experience on the Delphi site of the fence pretty much died. I will only maintain my Delphi .NET winforms application in BDS 2006. (Eventually probably port them to C#)
    For .NET (both Winforms and ASP.NET) i use (and will us) now only Visual Studio. The fact that CodeGear dropped Winforms does not give me confidence that they won’t drop ASP.NET designers as well in the future.
    However for Desktop applications Delphi will be my prefered choice, because, you know what, nothing beats Delphi on the Desktop!

  5. Jilani,
    Your comment is contradicting. On the one hand you state that you know nothing about .NET yet you dismiss it as a web development platform. That makes no sense. IMO, if you’re not at least considering looking at ASP.NET for web development you’re doing yourself and your organization a disservice.
    I agree with you. The problem with the WinForms designer was similar to what I described above in terms of cost not to mention it was competition for VCL which isn’t a great thing for CG. I will agree that for desktop application development I’d prefer to use Delphi though I’m really digging the new language features in C# 3.0 and as time passes I’d find it increasingly difficult to give up.
    Recently, my company has done some WPF work which has turned out really well. It’s an application that will be publicly available in the coming months so I’ll post about it. While I don’t think WPF is ready to replace either WinForms or VCL it is very compelling and brings a lot to the world of desktop development.

  6. Steve,
    I’ve not yet tried WPF, but I recall very clearly my frustration when I realized that I had no ability to use fractional font sizes on forms. That’s the one thing that seemed more obvious than any other with respect to presentation. Without fine increments of font scaling, form scaling is not really possible, since the place where you need scaling most is the same place where the incremental steps are largest, at small font sizes.
    Of course, it was also pretty clear why fine-pitch font scaling couldn’t be managed at that time, but it has certainly been a long wait for the hardware to become sufficiently fast and efficient.

  7. Your comment is contradicting. On the one hand you state that you know nothing about .NET yet you dismiss it as a web development platform. That makes no sense. IMO, if you’re not at least considering looking at ASP.NET for web development you’re doing yourself and your organization a disservice.

    I agree with you Steve. So many times I have heard people say things along the line of ‘I have never used .NET and never will because it is rubbish’. This is totally incorrect. While WinForms is not quite as nice as Delphi for desktop apps, ASP.NET is a great web development platform. With the new MVC framework from MS it is going to another level again, allowing hardcore web developers (people who like to hand code HTML and CSS and don’t think Javascript is a dirty word) the flexibility to do it their way. I have used a few other web technologies such as PHP, Classic ASP, Webbroker and would take ASP.NET over them any day.
    Jilani, you say:

    However, regarding web applications all the good, neat and scalable solutions are out off Microsoft domain

    Have you ever heard of MySpace? Thats a decent size web site running on ASP.NET. 1.5 billion (not million) page views per day. And you think Microsoft’s web site is running on UNIX. I don’t think so. And I bet they are not just getting a few hundred unique visits a day. Probably a few hundred million. I am not an expert on scalability on UNIX/Linux/BSD type systems, and don’t plan on being either, because Windows will certainly meet all by needs (especially Windows 2008 Server which rocks).

  8. Steve,
    I agree C# is a nice language, which has a lot in common with the Delphi language.
    Very easy to learn for a Delphi developer!
    C# gives the same ‘spirit’ that Delphi gave me in the early days. It is nice to see that CodeGear is catching up with the Delphi language.

  9. It’s funny, I haven’t been that excited about ASP.NET development for awhile and was really starting to move away from the whole .NET space towards Rails when suddenly there was a one-two punch of LINQ and then ASP.NET MVC, plus some sweet sweet Silverlight icing. I can’t tell you how much I dislike WebForms and that really was enough to send me for the hills. Now there is some really great technology coming out of the .NET team and I feel productive again.
    Since then I’ve become an active contributor on SubSonic (spent the last few weeks getting migrations working), been talking up MVC everywhere I go and made it to my first local Microsoft .NET user group. I still dabble in Rails because I think it’s good to keep an open mind but I’m pleasantly surprised to find myself really enjoying C# and ASP.NET again. Oh, almost forgot the joys of C# 3.0 with lamdas, extension methods and implicit vars.
    As far as the Delphi vs. .NET/VS/Microsoft debates I think those are just silly, the development space is big enough to easily accommodate both. IMHO Delphi has always been and will continue to be the best Win32 development tool out there while ASP.NET is about as solid a web framework as you could ask for (with the MVC bits of course :). There are still plenty of companies asking for desktop applications, it’s just now they also want a web version and tight integration between the two. In fact I just finished a desktop application for Avery Australia that was a richer version of a website because they want to sell into these large corporations that have zero internet access (yeah, the medical and legal fields are weird about things like that).

  10. Hey Shawn,
    ASP.NET has pretty much always interested me and not because of webforms but the platform itself. Years ago we considered porting WebBroker over to ASP.NET which might have lead to an interesting alternative to WebForms though obviously that never happened.
    I’ll have to agree with you that Microsoft is really firing on all cylinders these days when it comes to delivering value to the web developer. As I mentioned before I think ScottsGu realizes the value of Open Source projects and by hiring a number of project leads he’s made a very interesting move. Btw, I’m following your work on SubSonic closely (kudos btw!) as I frequently update my SVN repo to see what’s new. I only wish I had time to really contribute!
    Regarding IDE debates, I agree with you it’s just silly. For me personally it’s nevery been about that rather I focus on the right tool for the job. I consider having Delphi in my toolbox a huge asset and even though right now I’m not doing Win32 development that doesn’t mean I won’t ever need it again. In my case, my interests lead me to Internet development and I think the strength of ASP.NET and VS.NET coupled with C#, LINQ etc. is a great combination that not only offers lots of power but satisfies the geek side in me to work with new and interesting technology.

  11. That makes no sense. IMO, if you’re not at least considering looking at ASP.NET for web development you’re doing yourself and your organization a disservice.

    Actually, it depends if you are a MS shop or not. For example, most of our customers prefer Apache and Linux as the deployment platform, and that puts ASP.NET out of the game – no reason to start building castles of cards with Mono or the like.
    And as people say rubbish of ASP.NET without actually looking at it, others say of PHP or JSP without really looking at/using them. I wonder if the guy putting PHP on the same level of Webbroker and ASP really ever used it – probably he didn’t because of the lack of visual designers.

  12. KM,
    I think perhaps you’ve taken my quote out of context as the person I responded to indicated they were a Delphi user thus in a Windows shop.
    Clearly, if you’re not on the Windows platform adopting ASP.NET wouldn’t make sense although I still think it’s worth investigating as a technology.
    One thing Microsoft has had going for it is that their tooling is usually better than what you’d find in the OS world particularly when it comes to "visual development".

Comments are closed.