If I Had to Start Over as a Developer - Pt 2
I published an article two weeks ago about starting over as a developer and spoke in general terms. This time I want to speak in more specific terms about what languages and tech stacks I would learn in the current economy… working in a Microsoft shop… sorry Java and other devs.
If I Had to Start Over as a Developer
Make sure to give that article a read as it will line up with this article. I’m basing this article on my career in a corporate environment; primarily Microsoft shops, where you can have long careers in, or switch companies ever 5–7 years.
Back-End Developer
As a back-end dev you’ll have two areas you can focus on; the database or the middle-tier code. In many companies, however; you’ll be responsible for both. In my experience back-end devs control the architecture of the application as they have to build out the structure of the database (MS SQL Server), write stored procedures, views, and functions that will do all of the CRUD operations (create, read, update, delete); and they will have to optimize the database scripts to be super performant in a large enterprise environment. You may also need to build out some PowerShell scripts to automate some build process that manages the database creation, seeding, and update as well. Database development can be a full-time job all on its own and can lead to a very long and fruitful career.
The other side of back-end development is the middle-tier. This is the core logic for the application with various patterns and algorithms; handling some authentication and authorization; interfaces, classes, and data structures specific to the application defining how the data objects look as they come in from the UI and how they go out to the UI and API endpoints; business rules that handle what can and can’t be done, and a restful API for other services to implement. Your code will be written in C# (c sharp) with .NET Core. The majority of the back-end devs I’ve worked with in the past have done both database and middle-tier work.
Back-End Dev Tech Stack — TLDR:
- MS SQL Server
- PowerShell
- C# with .NET Core
Front-End Developer
Front-end devs can also focus on two areas; the MVC/Adaptor layer or the UI (user interface)… these days you’re not gonna find a lot of companies with a WinForm application so you’ll be focusing on web applications. The main benefit of a web application is that it’s a one time deployment versus having to install a WinForm application on all of the computers that will use the application; trust me, you do not want to do that install.
You will become a polyglot… you will basically know around 5 languages, if not more.
Let’s start with the MVC/Adaptor layer. Just like the back-end developer; you’ll be writing code in C#, but with ASP.NET. MVC (model-view-controller) is an architecture that allows the code to be separated so that it’s easy to code and read, scalable, separates concerns, and optimal in a web application. The model will be the data structures you intend to work with and that may be made up of smaller pieces of data structures you receive from the middle-tier. The view is the UI portion of the application that will render the model and will interact with the user. The controller is the communication between the model and the view, so really MVC should be more like MCV as that’s how the layers work.
Now, you saw that I wrote MVC/Adaptor earlier. Some companies may have extra logic, validation, authentication and authorization, and some light business rules that the front-end will implement before communicating with the middle-tier. The adaptor layer will call the middle-tier and populate the model and pass the model back to the controller. You may not always encounter this pattern, but be aware of it.
The view from MVC is your ASP.NET side of the code and will consist of HTML, CSS, JavaScript, and Razor syntax. This is where you will be blamed for everything that doesn’t work. Why? Because, the UI is where everyone using the application, including QA; will be interacting and if something isn’t quite right like “it didn’t save my data” or “it told me I’m not allowed to do that”. Be prepared to troubleshoot almost everything.
Many companies are starting to implement other UI technologies into the application, so in addition to the languages I noted above, you’ll most likely work with TypeScript, which compiles into JavaScript; Angular, React, Vue, or something else. TypeScript is a superset of JavaScript that allows you to write strongly typed code ensuring that your front-end logic does what it’s supposed to do. Angular, React, and Vue are just a few of the JavaScript frameworks that can be used to write full-blown applications.
Front-End Dev Tech Stack — TLDR:
- C#
- ASP.NET with Razor
- HTML
- CSS
- JavaScript
- TypeScript
- Some framework like Angular, React, or Vue
Final Words
You can focus on either one of these, or you can be a full-stack developer; learning, working, and mastering database development, middle-tier, and front-end development. You can be a unicorn and be highly marketable; you won’t have a problem finding work and will have to start ignoring all of the recruiters reaching out to you because they see all of the skills you have and want to place you in a company looking for a unicorn.
In the end, you will want to look at the market and see what companies are looking for and learn those technologies. For me, I’ve worked primarily in Microsoft shops and it’s super easy to find work. You may become a PHP developer and be super successful there; who knows.
I wrote this article with specific languages and technologies in mind because it’s everything that I know and have been working with for the past 20+ years. The past 10 years or so has been heavy on the front-end as that’s where I find the most enjoyment… I get to visually see the results and know that customers are interacting with a UI that I wrote.
Let me know what tech stacks you’re using.