If I Made a New Web App over the Last 12 Years

June 6, 2017    web development

If I Made a New Web App over the Last 12 Years

If I Built a Car from http://www.chrisvandusen.com/books/if-i-built-a-car

It’s interesting to think about my 12 years of software development experience. I’ve been wanting to write about my last 10 as a professional developer, but haven’t completed that yet as there is a lot to think about. I spent a few years in college doing PHP and then it’s been mostly .Net since I got my first job.

I read If I built a car with my kids and thought it’d be fun to do with web applications historically. Web tech has innovated rapidly and I learned and used a lot of different ones through the year.

Some of these years aren’t exact, it’s hard to remember back that far :-).

2005 - College

At the University of Minnesota, Morris, I learned PHP and MYSQL for a job on campus at the Center of Small Towns, so that would have been my choice. I remember realizing I could use OOP with PHP. Some smattering of JavaScript for a dialog or other limited interaction.

2007 - Starting at Omnitech

WebForms was the dominate technology from Asp.Net. We built a lot of apps with WebForms, handwritten ADO.Net and stored procedures with Microsoft SQL Server.

With all the WebForms controls, we hardly knew what the impact of the HTML or ViewState had on our applications. The AJAX toolkit helped us out a lot. JavaScript was avoided unless absolutely necessary. It was hard to put the 2 together.

The UpdatePanel came out and we over-used that. We didn’t understand how it worked well enough and wrapped some forms in an update panel. It was slick, but not optimal.

Somewhere in the middle, one of our team wrote “CodeGen” templates using CodeSmith to generate the CRUD code and standard procs based on the database tables. This saved us a ton of time.

2009 - MVC

MVC came out and we were leary for awhile, but started certification studying and it slowly (after a few versions came out) became the preferred way of building our apps. MVC history

Entity Framework and LINQ with Asp.Net 3.5+. As EF improved over the years this became and continues to be my go-to ORM. We rarely hand-write TSQL for CRUD (except for more complex scenarios).

jQuery, I’m not sure when jQuery was first packaged into the File > New Project of Visual Studio, but that was the event that got us using jQuery and the plugins more and more.

2010 or so - Silverlight

Silverlight was the new hot thing. I was able to do a few UIs with it and enjoyed learning about XAML, MVVM and binding. It was very cool to do something interactive with C# in the web browser and the MVVM pattern was an eye opener for me.

ODATA (getting the data out of MS SQL Server) was another new technology that I got to pair with the Silverlight application.

2012 - Move to the web and HTML5 + JavaScript

HTML5 became more and more feasible as the browsers implemented more and IE6 started to go away. IE8+ made big strides, but we could use polyfills and Modernizr Responsive Web Design became the buzz word and mobile usage was growing. Twitter Bootstrap was created to help with Responsive Web Design and make sites look nice with less effort.

MVVM lives (and Silverlight) but now in the browser! KnockoutJs introduced data binding and more decoupling from the HTML. This was a big change from the id driven jQuery development in that path (I gave a talk about this and have several posts).

SignalR made it easy to do real-time server push of data with fallbacks when a WebSocket isn’t available. I was able to work on an IOT type site where we had Knockout bound gauges from SignalR pushed data.

2014 - More interactive web UIs

NodeJS and NPM introduced me to the command line and made it easier to grab packages for use. Github and OpenSource became more and more prevelant and useful.

GruntJs helped us run tasks to get our websites ready for deployment (sometimes we still used the built in .Net features), run tests, get test coverage from KarmaJs, and more.

KnockoutJs continues, RequireJs for Async Module Definition (AMD) helped as Knockout ViewModels and files got smaller and more of them, LESS or other pre-css processors to enable variables and other coming CSS features.

Now that I was using Knockout for ViewModels, we started using JasmineJS to write and run Unit Tests against our JavaScript.

Selenium to automate the UI and reduce the amount of manual tests required.

DevOps had been around awhile, but I started learning more about it and getting more exposure to the tools and ideas.

2015 and 2016 - Frameworks

GulpJs became the new cool tool on the block and after John Papa’s Pluralsight Video I wanted to use this.

I had interest in AngularJS, but didn’t have opportunity to really use it. The Angular 2 release and clients having Angular work to do made this the framework to learn for our company.

Personally, I was following and excited for Aurelia. I think this is a great framework that is easy to put to use. I enjoy the convention over all the configuration that Angular has. Even though the usage isn’t as big as Angular or React, it has a decent following.

The team I was on started to move from our MVC rendered pages with KnockoutJs, RequireJs, etc to Durandal to help us get to a SPA (Single Page App). It was interesting to have it both ways for awhile during the transition.

JAM stack (JavaScript, API, and Markup) caught my eye. I’ve enjoyed listening to their podcasts and see my self writting apps with this approach (over the MVC backend).

I moved my blog from GWB to AlignedDev.net and built on Hugo.

ReactJs was newer and something I wanted to learn, but haven’t had the chance beyond some videos and a conference talk.

I’m a Git convert!

2017 - PWAs, GraphQL and more

If I were to build a web application and I could choose any technologies I wanted to, this is what I would go with. I have not used all of these, but hope I get a chance this year (it’s already June!).

Progressive Web Apps (PWA), GraphQl, Aurelia with Material Design, WebPack, Asp.Net Core with JavaScriptServices on Azure App Service and CosmosDB for global scale (though Azure SQL Server would be a very good choice).

Using JavaScriptServices would depend on if I wanted to be coupled to MVC for hosting it or if I wanted to be more JAM. The hot module reloading for development and built in server side rendering is very appealing.

Angular is something else I wouldn’t mind using, but I would choose Aurelia (for it’s convention approach) if it didn’t cause an issue for the team.

OAuth and JWT Tokens for authentication. I’d lean toward Auth0 or OAuth 2.0 in Azure.

Atomic Design (“we’re designing systems of components”), is something I want to incorporate more into projects. I like the idea of composing from the components (atoms > molecules > organisms > templates > pages). This fits really well with the web components and SOLID programming principles.

CSS Grid (I’ve missed them since doing XAML in Silverlight and WPF) and Flexbox are CSS tools that I’m going to use more and more for layouts.

There’s so much to learn

I’m comfortable with JasmineJs, but I’d like to try out Jest.

ReactJs.

Vue is the new popular framework out there and seems like worth some time.

What do you think?

Did you have similar experiences?

What’s your current ideal Web Application development platform?



comments powered by Disqus