I recently took on some contract work with AmeriCommerce, a great company located in Beaumont, Texas. Their primary product is the AmeriCommerce Suite, a hosted eCommerce solution that has been around for quite a while now. They have a solid platform and a fantastic admin interface too. Coincidentally, they launched the new admin the same week I started this project. As I mentioned above, I’m a LAMP developer by trade, and while I do have some experience with C-based programming languages (primarily Java), I find that I mostly prefer interpreted / scripting languages like PHP. I know, I know. I’ll never be a hipster programmer by using such languages as PHP. Oh well.

I find that I mostly prefer interpreted / scripting languages like PHP. Even though AmeriCommerce is an eCommerce platform at heart, it has all the right tools to make it a great solution for online store owners who want to provide interactivity with customers through email campaigns, product reviews, blog posts and comments, and now, questions, answers, and voting. The gist of this project was to build a widget for their platform that would allow customers and store owners to interact with content on a new level. The widget allows anyone to ask a question about a product, category, blog post, or any other store page type that is within the AmeriCommerce Suite. It also allows customers to answer questions and up-vote (or down-vote) questions and their associated answers, which will theoretically provide insight as to how useful a particular post is.

The start of my experience with C-based programming languages dates back to Java in my college days. I graduated in May 2012, so it wasn’t too terribly long ago. Since then, however, I haven’t written a single line of Java, or any programming language that requires the use of a compiler for that matter. Being a LAMP developer lends itself to being a Mac user, at least in my opinion, and of course I’m an avid fan of the Mac platform. It’s been my primary computing platform of choice since purchasing my first Mac in 2008. Over the last couple of weeks, however, I’ve gotten a pretty good handle on the other side of the development fence: Windows, Visual Studio, C#, the .NET Framework, and Team Foundation Server, and I have to say: I haven’t hated it.

Don’t get me wrong, I won’t be trading in my Mac for a Windows machine any time soon, but when the job calls for it, Microsoft has some pretty solid enterprise products that work well together. Provided you’re using Team Foundation Server or another VCS supported by Visual Studio, it’s easy to stay within Visual Studio and SQL Server Management Studio almost exclusively during development.

Here are my thoughts of C# and .NET after using them every day for the last three or so weeks.

Pros

  • C# is a very expressive language. Partly due to the fact that it’s statically typed, no doubt, it’s very easy to read.
  • Visual Studio is by far the best IDE I’ve ever used and the built-in debugger is super handy. Also, Intellisense might be the 8th natural wonder of the world.
  • Other Microsoft products, such as Team Foundation Server and MS SQL Server / SQL Server Management Studio work very well with each other, making the entire development experience feel unified and simplified.
  • The fact that it’s a compiled language means it’s easy to catch a lot of errors at compile time, rather than having to debug at runtime.
  • The concept of “code-behind” files almost seem antiquated at first (and let’s face it, they are), but are really handy once you understand them. Also, it allows you to separate markup from logic. This of course applies to ASP.NET Web Forms, since ASP.NET MVC (really MVC in general) is a much better approach to application development, and one I’m following with ArrivalApp. The project I have been working on hasn’t been migrated to MVC. It has roughly 1.8M (yes, million) lines of C# code, and another 1M lines of markup, CSS, and JavaScript, and an entire app rewrite just hasn’t been feasible.

Cons

  • Building web apps using C# seems clunky overall compared to other languages. While it doesn’t feel as sleek and sexy as other languages, it is powerful.
  • Building a solution that consists of several projects can be slow to compile, although compile-time error checking nearly makes up for it.
  • Running .NET apps on IIS can be slow for pages that are rarely accessed because of the way .NET dynamic compilation works.
  • Microsoft enterprise product licensing is expensive and overall a pain in the neck.

Even though I personally prefer to use other programming languages and technologies for most of my projects, I’m happy that I had the opportunity to work with C# and .NET, because I’m always looking to learn and try new things. Heck, I even enjoyed it. Do I think PHP/MySQL is the only way to go? Absolutely not. Is it often the right tool for the job? Indeed.

Category:
Programming
Tags:
, , , , , , ,