Modern Episerver Development
I wanted to write a little about how my days are as an Episerver developer. Before I do I need to give you a little background and history working with EPiServer. Back in 2007 I started working for an Episerver partner in Norway - before that I had only done normal ASP.NET development. I had heard some rumours what Episerver developers did, they tweaked some user controls and that was basically it. Fortunately for me my first project was a new greenfield project on the latest version of Episerver at that time (version 5.1). We recieved the finished frontend code and started implementing it using ASP.NET WebForms at that time. The thing I remember most was the switching between Visual Studio and Episerver in the browser to add properties and define page types. I didn´t mind it, but for me it was unnatural. Following my first project I got certified on Episerver and my next project was a migration project from version 4.62 to Episerver 5.2. While there were resemblances between the two version, quite a lot had changed making this a big migration. What I liked and saw was Episerver moving towards following more of the standards the rest of the Microsoft shops followed.
We did a bunch of projects using Episerver and WebForms, built our own toolbox and were fairly happy developers. We could do mostly what we wanted, if not everything. We of course missed working with ASP.NET MVC. I remember hearing this from other developers I meet at conferences that were all about ASP.NET MVC and TDD these days. I felt we were lagging behind, something that worried me a little. Things like defining page types and properties got easier when PageTypeBuilder got launched, an open source project letting is defining this through out code, instead of through the admin interface.
Starting version 7 major support for MVC came and Episerver took inspiration from the community project PageTypeBuilder and added support for strongly typed page types and properties defined through code and added it to the core product. This was a big step and I remember how many of us WebForms developers became excited about finally being able to use MVC. I think the first project I did using MVC I refactored and changed at least 6 times before I was fairly satisfied with it. This was in 2012. After that there has been a bunch of changes and updates. We're now on version 8 and having incremental small updates on a bi-weekly schedule. Episerver has changed from setting rules and defining how we should develop to give developers the choice on how they would like to implement and create their solution. Of course there are best practices and recommendations, but the major thing is that you can change and easily adapt anything you need if there's something you want to do in a different way. Episerver has become a framework that we use to help our clients. Here at Geta we have built a toolbox of packages that I like to look at as lego pieces. It's up to each developer to pick out the right pieces for his project and put them together. We have standards and best practices that we follow, but everyone has the power and flexibility to change that.
The last conference I went to I talked to my fellow developers to learn more about how they were working and what tools they used. I came back from that conference certain that we were on the right track. Not only were other developers asking me how I was developing modern Episerver solutions, but there wasn´t a single question or concern I couldn´t answer. As I finish up this blog post I´m about to start a new project for a new customer, which I´m really excited about, not only is it a fantastic customer and project, but I´m also excited about all the cool stuff we have planned on using to built this site. Azure websites, CDNs, geo replication, enterprise buses, document databases, Gulp, Bower, NuGet, SCSS, REST APIs, OAUTH, GitHub, Octopus Deploy, TeamCity, a whole bunch of automation and other great stuff.