Programming Evolution

In the past week I have had a number of conversations about the best approaches to developing web applications with current technologies. Everyone has their favorite platform, and some projects lend themselves to different architectures. Lately I have been doing mostly ASP.NET MVC with some Angular and Web API's. I have friends who are working with more react and node. The fact that there is debate as to what the best platforms for a project are means that there are a lot of good platforms out there.

The thing that really got me thinking was talking to developers who are still working on older technologies. At one of the user groups I went to there was a guy who had recently lost his job, and all he had been exposed to was ASP.NET Web Forms, and he was complaining that all the job postings were looking for MVC, Web API, and some kind of client framework. He was asking how hard it would be to get up to speed on these technologies. My first reaction was that they really make a lot more sense than the old web forms model, and that is shouldn't be that hard.

The thing is, I did my first MVC project back in 2012, and I remember really liking the architecture, but I had a really hard time wrapping my head around it at first. Up to that point all the web development I did was page based. Either you went to a site and loaded a page, and there were server side scripts on the page like in classic ASP, PHP, or Cold Fusion, or the page had a code behind as in the way Web Forms worked in Dot Net. Learning MVC was a totally new way  of thinking. No longer were you pointing to a page. You were pointing to a controller class, and the page was now just a method on that class. 

When I first started learning MVC, I remember going to coffee shops because I needed to get away from the distractions at home. I would almost beat my head against the table trying to figure out where everything was and how it was being loaded. The page life cycle was really hard to grasp given where I was coming from. Everything I read made me want to learn more because it made sense, but in practice, I kept thinking the old way and I couldn't figure out where pages were being loaded. When you add to that using entity framework to access databases, it really was a new way of doing everything. 

One of my latest projects was adding new features to the first application I ever wrote in MVC. So it is now fresh in my mind how much of a struggle that was. When I added new features, I looked at my code, and rewrote a lot of it just because I would hate for another programmer to ever see how bad my code was. My controllers were so heavy with private methods and redundant code everywhere, but when I look at it now, I realize it was a learning project. Now I can read MVC code and know exactly what it does, and I can track down references and separate concerns with ease. I wouldn't say I am an expert, but I would say I am reasonably proficient.  

My current goals are to build up my proficiency in angular and learn test driven development. When I get lucky enough to have a greenfield project, I always start out by evaluating the project and determine what technology would be best, and what new things I can learn. You can only write so many sample applications before you have to really sink your teeth into a project and learn how to do something new in the real world. I just have to remember that in five years, I am going to look at that code and ask myself what the hell was I thinking. 

I mentioned in one of my other posts that I write apps because it keeps me coding in new technologies even when I am working on legacy stuff at my day gig. It is really hard to keep up. I really feel bad for people who lose their jobs and then have to try to figure out where they can fit in to the new world. The other option is to find someone who has a lot of legacy code to maintain, but for me that sounds like a miserable existence. It is definitely worthwhile to try to keep up as you go and not wait until you have to learn everything at once. 

Since I turned fifty, I have been wondering how long I am going to keep up with everything new. It is a lot of work, and I always feel like I am falling further behind. My only solution is to spend a little time each day learning something new. Whether it be reading magazine articles, going through a Pluralsight or Udemy course, or just coding a new app. Doing at least 20 minutes a day of learning something new is critical. The other thing that is really important is using what you learn. Taking a class or reading an article will have no affect if you don't apply it somehow. If your day job has the flexibility to allow you to use new things, great. If not, find a project on the side to develop your skills. Find a friend or family member that could use an application or look for a non profit that needs some help. At the end of the day, you get better by doing.

Comments

Popular posts from this blog

Asp.Net Core with Extended Identity and Jwt Auth Walkthrough

File Backups to Dropbox with PowerShell

Dynamic Expression Builder with EF Core