Press "Enter" to skip to content

Why I’m Learning C# and .NET After Two Decades of Programming

I’ve been programming for over two decades, and I can’t make a full-stack enterprise web application.


The first lines of code I wrote were in GW-BASIC. When I was in eighth grade, I enrolled in a typing class. Students who finished their typing practice before class ended were given an extra credit opportunity: copying program source code. It was a fantastic test of applied accuracy, and I gladly participated. Eventually I started to pick up on some of the patterns I saw in those BASIC programs. I came up with my own programs—mad libs and simple calculators—and fell in love. I still couldn’t make a web site.

In high school, the library had a book about HTML. I made my first web pages, and my math teacher helped me put them online. I got a job bagging groceries to pay for a laptop, and used that laptop to develop simple web sites for local businesses. These were the first times I was ever paid to write code, and I was hooked. I still couldn’t make a rich web site.

When I got to college I learned JavaScript from another book, and CSS from blog posts and documentation web sites. Before I left college I took a job with the Web Design & Support department, implementing a major redesign of the school’s entire web site in HTML and CSS, with a splash of jQuery for interactivity. I still couldn’t make a web application.

After I left college I scraped together a meager living making Chrome extensions, writing Ruby for freelance clients, and working part-time at Best Buy. I still couldn’t make an enterprise web application.

By 2013 I had my first career job as a front-end developer at an enterprise Software as a Service business. Thanks to EmberJS, an amazing product team, a top-notch architect, and leadership that understood lean software, I built the front-end of our new platform that, over the next seven years, would become so successful that I’d take on brilliant apprentices, build a team, grow to Engineering Manager, and become Director of Software Engineering. But I still couldn’t make a full-stack enterprise web application.

When that company got acquired, I laid off half of my team and lost a part of myself. I could no longer stomach working in management, so I left. I had my mid-life crisis: I moved to the country, bought a farm, went back to college online, and tried to create a startup. I realized I was drifting, and that what I wanted was a steady stream of programming work on a great team. I found exactly that, thanks to the CTO of my previous employer. I am now responsible for improving and maintaining an enterprise Angular application powered by a C# / .NET back-end. It’s a bit rough around the edges, but I tidy as I go. I’m the only purely-front-end programmer on a team of twelve. I ship features our customers love, I help the team improve our processes, and I improve the existing legacy Angular application. But I still can’t make a full-stack enterprise web application.


Last quarter, I learned that our next front-end will use Blazor, not Angular. This means it will use C#, not TypeScript. This quarter, my manager gave the gift of time. Every hour I’m not fixing urgent bugs or implementing important features, he encouraged me to spend learning C#, .NET, and Blazor. The company paid for an O’Reilly Learning Platform subscription, and I’ve collected a list of books to study at work. I’ll still spend my nights and weekends improving at my craft, but instead of learning Ruby on Rails, I’ll be reading generally-applicable books: Patterns of Enterprise Application Architecture, Domain-Driven Design, Working Effectively with Legacy Code, Object-Oriented Analysis & Design with Applications, Data Modeling Essentials, and Designing Data-Intensive Applications.

I’ll blog and toot about what I learn as I go, and I hope you’ll join me. I’m learning C# and .NET, but starting from two decades of programming experience and a decade of software engineering experience. I’m learning web development, but starting from a deep knowledge of HTTP, browsers, and the front-end. I’m learning architecture and object-orientation, but starting from a background in structured and functional programming.

The only thing I love more than learning is my wife. I can’t wait for this learning journey, and I’m excited to share what I learn. Subscribe to my email list and perhaps you’ll learn something too.

5 Comments

  1. Jennifer Long Jennifer Long

    First!

    • Vince P. Vince P.

      Well.. now you’re famous. Gratz!

  2. ajp ajp

    I know how you feel. I essentially picked a different career path (data engineering, AKA slinging almost entirely SQL) once I’d spent nearly 15 years as a developer while also unable to build a full-stack enterprise web application. ;D

    Good luck with C#. It was my first professional language.

    • It feels like such a big jump when I’m staring down months of learning and dozens of books, but we’re still engineers when it’s all said and done. It’s comforting to hear that I’m not the only one. Thank you for sharing!

  3. Will Ehrendreich Will Ehrendreich

    Awesome stuff.

    Sounds like you’re going on a fun journey!

    A few years back I had the gift of time, when I was temporarily laid off during the pandemic. I was making a csharp wpf desktop app at the time, and had been hearing about fsharp from the dotnet community for a while, and was pretty scared of it, it looked crazy, no curly braces, etc. but I found myself being drawn to a functional style in csharp for my application in general. So when I got laid off I figured.. well. this is a golden opportunity, I’m going to see what the fuss is about.

    https://github.com/ChrisMarinos/FSharpKoans

    I started with that fsharpkoans, and I’m so glad I did.

    It’s the most fun I’ve had learning a language, it provides a very simple, clear path to getting up to speed.

    learning fsharp is the single greatest thing I’ve done for myself as a programmer.

    I’ve got an entirely different perspective now, and I rewrote the guts of that application in fsharp, it was about half as much code, more reliable, easier to reason about, harder to break, easier to extend, less to fit in your head at once, and it turned out to be faster too, because understanding where I was getting performance issues was so much more straightforward.

    If you’re switching to dotnet, do yourself a favor, and at least LEARN fsharp. you may or may not be able to convince your team, but if you don’t take this learning opportunity to expand your horizons now, you’re really going to be missing out on an incredibly eye opening experience.

    I work mostly in csharp, professionally, but I get to do my testing in fsharp. I am hoping that one day I can convince my team that it’s worth switching to, but I’m relatively new on the team, and they’ve already got a ton of csharp that they’re used to, so it might take time, if it ever happens. But I do bring that radical simplicity perspective into what I do in csharp and it really does help me create better software than I would otherwise.

    Have you ever tried any FP? Ever written in something like fsharp or OCaml?

    Hope you have fun no matter what path you choose, I’m just trying to say what I wish someone would have told me years earlier, that’s all. 🙂

    Thanks for sharing your experience with the dotnet community, and good luck!

Leave a Reply

Your email address will not be published. Required fields are marked *