Back in 2012, the folks at Code Project interviewed me as part of their ongoing series profiling developers — their backgrounds, projects, interests, and pet peeves. At the time I was a PM on the ASP.NET team at Microsoft, freshly off of a stint running MSDN Magazine. A decade-plus later, they reached out again to do a follow-up — same questions, very different answers, as a lot has changed.
Sadly one of the things that changed between the start and completion of the interview was that Code Project ceased operation. However, I felt really great about the content - especially the comparison between the original and the follow-up - so I’m sharing it here.
I’ll start with the original interview and follow it with the “decade later” version.
Let’s go!
The original interview (2012)
Welcome to our continuing series of Code Project interviews in which we talk to developers about their backgrounds, projects, interests and pet peeves. In this installment we meet Howard Dierking. Howard served as steward and Editor in Chief of MSDN Magazine for several years and now works on the ASP.NET team at Microsoft.
Who are you?
I’m Howard Dierking and I work as a Program Manager in the Web tools group which includes products like ASP.NET MVC and Web API. Specifically, my focus is on Web API along with some cross-product concerns like security and cloud experience. I also enjoy speaking and blogging on distributed architecture topics like REST and complex event processing (CEP). I work at Microsoft’s main campus in Redmond, WA, and live just east of the campus.
What do you do?
I started with Microsoft about 5 years ago at Microsoft Learning, where I worked as the planner for developer certifications. It was actually a pretty funny interview because, at the time, I had 0 certifications. The interviewer (the guy who would become my future boss) asked me, “do you think it’s a little odd that you want to run a program in which you have never participated?”
My response was simple: “I’ve never found a ton of value in having a certification in my own experience. I’m happy to tell you why that is and help you change the program such that others won’t come to that same conclusion.”
Apparently that response touched the right nerve because I got the job and spent the next year planning and creating exams and certifications. I’m not naïve enough to think that we perfected the program, but I like to think that we improved things.
After the developer certification program, I joined MSDN Magazine, where I spent the next 2 years as Editor-in-Chief. To date, this has probably been my favorite job at Microsoft. I was able to have a hand in every aspect of the magazine’s creation, from content acquisition and author relationship management, to editorial responsibilities, to writing the monthly editor’s note, to regularly speaking with readers and advertisers about the magazine. Most importantly, for the first time in my career, my deliverable was something that I could show to my mom and she would understand what it was.
After the magazine, I stayed at MSDN and moved over to the platform side of the world where I drove a bunch of features related to the MSDN and TechNet Web sites as well as drove the early thinking, planning and prototyping for a new CMS effort. In that time, I also created the MSDN Magazine Pivot viewer, bringing together my love of business intelligence and data visualization with my knowledge of MSDN Magazine content.
I then transitioned over to the Web API team to work with longtime friend (from Microsoft Learning) Glenn Block.
Program Manager is a job description that I’ve heard best described as “filling in the whitespace”. Put another way, dev’s job is to write code, test’s job is to test code, and PM’s job is to fill in everywhere else. As such, I don’t have a lot of consistency from day to day relative to other jobs. That said, I try to divide my day into the high-level chunks of project management, interacting with customers (via blog, Codeplex and so on) and prototyping. Naturally, there’s a lot that tries to get in the way of that structure, but that’s the idea anyway.
We’re currently driving towards our first release in the spring of 2012, but we’ve already released several preview versions on Codeplex and Nuget — see the WCF site on Codeplex for more information.
What is your development environment?
It seems like at work, I do almost everything on my laptop and use my desktop to basically host VMs of non-released environments. My laptop is a Lenovo 510w with 8gb RAM and an SSD — it’s a beast and I love it.
I do most of my development in C# and as such spend most of my time in Visual Studio 2010. That said, I don’t think that I could survive my time in Visual Studio without ReSharper.
Other frameworks that I tend to use in almost every project are the MSpec context specification framework, Castle Windsor (though more recently, I’ve been using Ninject) for IoC, and NHibernate for ORM.
In addition to .NET based development, I’ve taken a recent interest to Erlang, particularly for my research into complex event processing. For that, I’m just using the out-of-the box Erlang console.
What new tools, languages or frameworks interest you?
Like I mentioned, I’ve been learning Erlang to further my research interests in CEP. I also have a list of things (some tech, some patterns, some other) I want to explore including neo4j, CQRS, Node.js, and CoffeeScript. I’m also very interested in audio production and so I spend a fair amount of time sharpening my skills in ProTools (in fact, I just got ProTools 9 and will soon be upgrading to 10).
What is your coding pet peeve?
I tend to get annoyed by coding styles that make for more verbose code. I don’t fancy myself as one of those C guys who thinks that the entire program should be on one line, but I also think it’s a little ridiculous when every brace requires its own line and every local member reference needs “this” in front of it. Maybe that helps some people read the code better — it just reads like unnecessary language ceremony to me.
I also tend to see designs that make extensive use of inheritance as a smell in that generally – though not always – such designs end up violating principles (such as the single responsibility principle) that I care about. Not to mention, they end up being nearly impossible to unit test.
How did you get started programming?
I got started in a 5th grade summer computer camp at my school. We were programming in BASIC and also learning our way around DOS (though I don’t remember what version). My first “program” was a password application that I proceeded to install in autoexec.bat on all of the computers in the upper school computer lab. Needless to say, nobody was very happy about the fruits of my labor — but nobody thought to blame a 5th grader. It felt … awesome.
How has the developer community influenced your coding?
Public forums were probably the most influential online community for me as I was starting out. These days, though I actively use Twitter, the role that forums once held has been filled largely by emails to contacts that I’ve made over the years in various subject areas.
That said, I think that sites like StackOverflow bring together the best of the old forums along with many new cool capabilities, and I wouldn’t be surprised to find myself spending more and more time in communities like that as time goes on.
What advice would you offer to an up-and-coming programmer?
There’s lots of dogma out there — and it’s easy to get caught up in doing things one way or another just because someone that you respect does them that way. Don’t fall into that trap. I’m not trying to say that those people you respect are not promoting good practices or tools — just that if you follow them blindly, you’re doing so without actually understanding the problems that they are trying to solve, and as such, the tradeoffs that they were willing to accept for the benefits that they gained.
On a somewhat related note, don’t pursue architectural choices in the name of *abilities (scalability, reliability, perf, etc.) that you can’t test; figure out how to measure before you figure out how to implement your design.
When I got married, my uncle gave me this sage piece of wisdom that I think is applicable here: “remember that 99% of the advice you will get is good advice, but only 50% of it is relevant.”
A decade later (2026)
We know you — remind us?
Hi, it’s been a minute and I’m super excited to have the opportunity to re-introduce myself! I’m Howard — I’m a lifelong software engineer, slightly above average drummer, mostly adequate family guy, golden retriever fanatic, and aspiring farmer, though not necessarily in that priority order. I’m currently located in Texas, bouncing between my home in the Dallas area and my farm just outside of Austin. My wife and I have three teenaged daughters ranging from 8th grade to a college freshman, so I imagine myself as having several fulltime jobs.
What are you up to these days?
A lot has happened since that first interview. While I’m still active as a technologist, I made the move into people and organizational management and have been following that path since around 2014. At present, I’m a Managing Vice President for Capital One where I lead engineering for our Auto Dealer business as well as our central Data Engineering organization. To put it simply, whenever you buy a car at a dealership, the dealer uses our tools to determine whether to use Capital One for financing and decide on the terms of the deal. It’s an incredibly complex problem space with millions of variables and billions of potential outcomes — all that must be calculated in seconds. On top of the Dealer business, our Data Engineering organization is responsible for developing tools and patterns that enable all of our lines of business to produce, consume and manage an incredible amount of data in our highly regulated environment. It’s a huge challenge, but I’m very fortunate to be surrounded by some incredibly sharp and talented folks.
Outside of my day job, I’ve also spent the last 8 years or so diving into agriculture. We bought some rural land back in 2017 and have since been working to learn the basics of farming and ranching with the big idea being that one day when I retire from the big corporate life, we’ll move out to the ranch and I’ll trade in the laptop for a lower tech set of tools.
How has the shift from programmer to manager changed your perspective?
It can be hard to look back over 10 years and parse out how a specific change shaped a broader perspective, but in general, I think that moving into management broadened my understanding of “good” technology choices. On reflection, one of the more profound examples (to me, anyway) has been my take on microservices. When I go back and look at some of the blog posts I wrote on the subject, I thankfully still believe in many of the fundamental principles I held at the time. However, those writings also remind me how much I romanticized the freedom that this architecture could/should provide my teams relative to the “big, bad” central operations teams that had held us back. In my mind, I believed that we could use any programming language and any infrastructure — constrained by little more than DNS and HTTP.
As a manager, I found myself responsible for not just delivering business outcomes with technology, but also hiring and cultivating a team to build that technology. Suddenly the idea of unconstrained choice across projects no longer felt all that romantic. It felt wasteful and risky.
What’s changed in the tech world since that first interview and how has it changed your perspective on building software?
For context, public cloud services were in their infancy when we last talked, so a LOT has changed. Rather than try to enumerate all of the specific technology changes within that span, I’ll frame my answer more in terms of how the collective changes have shaped my views on the task of building.
In short, the “inner loop” of development has become significantly tighter. Whether we’re talking about Docker, cloud services availability, or generative AI tools, technology has advanced such that the distance between idea and high quality working software is faster than I could have ever imagined.
I’m still more conservative than many when it comes to AI coding assistants — particularly on the agentic end of the spectrum — but I’ve benefitted tremendously from those that I’ve played with thus far. And though I may move slower towards a more fully agentic workflow, I’m sure I’ll get there before too long.
What does your development environment look like now?
When I left Microsoft, I also switched to the world of MacBooks and I’ve never looked back. For my programming environment, I primarily use the JetBrains editors (particularly IntelliJ, PyCharm and RustRover), though once a year I force myself to use only Vim in the hopes that this will be the year that I magically become proficient enough with Vim to use it exclusively. Every year I learn something new, but have never gotten to the level of abandoning my daily driver. For my terminal, I’ve been really happy over the last year with Warp — it’s responsive and honestly, I’m really liking how seamlessly it integrates its AI agents.
What new tools, languages or frameworks interest you?
One of the other side-effects of my day job is that I realized I couldn’t devote enough time to maintain deep expertise across multiple programming languages. As a result, I chose a language that was relevant to all the types of development that I still do: designing systems, building command line tools, and doing data analysis. Given those use cases, it shouldn’t be surprising that I’ve narrowed my language focus to Python.
Within that space, there are 2 areas where I’m interested at the moment. First, on system design, I’m very interested in event-sourced architectures. Spending some time with functional programming gave me a deep appreciation for properties such as immutability and I see a lot of those same qualities at an architectural level within event sourcing.
Second, I’ve been digging into data analysis and visualization. Like most, I started playing around with Jupyter notebooks, but found the experience to feel a little clunky after seeing what existed in the Javascript community thanks to tools like D3 and Observable. However, I then discovered tools like Marimo notebooks, Polars, and Altair, and have since become obsessed. They haven’t transformed me into an overnight statistician, but I definitely feel like I’ve leveled up from spreadsheets.
Has your coding pet peeve(s) changed?
Somewhat. In my earlier response I talked about unnecessary verbosity, and while I still think that kind of formatting might cause me to roll my eyes a bit, I’ve generalized my core pet peeve to unnecessary complexity.
This evolution in my annoyance came about through two forces. The first was professional exposure to a wider variety of programming languages and idioms — particularly those of the functional programming variety. After spending a sufficient amount of time those language ecosystems and getting accustomed to implementing patterns like inversion of control (IoC) via simple, elegant techniques like partial function application, it’s difficult to return to a more traditional language like Java and not be frustrated with a mentality that assumes the need for complex frameworks (DI containers, ORMs, etc) to do even the most trivial of tasks.
When you combine that with the second force — my transition to management — I acutely bear the ongoing cost of carrying all that unnecessary complexity. Every issue caused by misconfigured dependencies, every hour of time spent updating to new versions of Spring Boot, every sprint disrupted because of a vulnerability found in a library dependency — those inefficiencies translate into real dollars for which I’m accountable.
How has the developer community influenced your coding that is different from 10 years ago?
Without question, GitHub has impacted the way that I’ve engaged with the developer community more than any new communication platform or content type. With GitHub, both learning and asking questions could be grounded in actual project code and not just vague descriptions posted to a forum. In terms of more topic-oriented engagement, part of me feels like a bit of a dinosaur. Blogs and other “slow food” content is still my go-to as I like the wider aperture that these forms tend to offer compared to more rapid, tactical mediums. I’ve tried using platforms like Discord for different communities, but I struggle to keep from getting swept away in the conversation stream. In the case where I have a specific, tactical question, these days I’m more likely to simply call or text a friend.
What advice would you offer to an up-and-coming programmer?
This is by far my favorite question as I hope to have learned a few things after all these years and would love if some of those learnings can help someone newer to the field (translation: my hope is that I can save you from making some of my mistakes). I’m happy to say that I’m still happy with the coding-specific advice that a much-younger-me wrote all those years ago. I would love to build on that here with three more career-related bits.
First, the most miserable times in my career have had one thing in common: I let someone else define what made me valuable. There will always be skills that don’t come naturally and it’s beneficial to develop a basic level of competency over a broad range of skills, but optimizing your professional life around just being “less bad” at something is a miserable way to live. Also, while it’s not always the case, I’ve found in my life that attempting to optimize around the wrong thing (a skill, a role, even a company) has many times been accompanied by (or a result of) comparing myself to others. I spent far too many years of my life trying to “be the next <insert person>” — many of whom were good friends. The only result was an increase in frustration and doubt in myself and a build up of resentment for the other person. I know it sounds cliche, but figure out what you want to be known for and optimize around that. It will take time, so don’t expect some kind of immediate revelation, but in that meantime, don’t waste time adrift on a sea of the experiences or expectations of others.
Second, embrace asking “dumb questions”. If you’re like me, you’ve felt the pressure in a meeting to withhold asking a question because everyone else seems to get it. After experiencing this feeling in multiple teams over many years, I can say with confidence that your instinct is likely correct and you should ask. Not only will you find that others had a similar question, but in many cases, the presenter has a blind spot as the natural result of staring at the details for too long. Your question might provide the context that completely reshapes the problem or solution. If nothing else, you’ll get an answer that adds to your knowledge.
Finally, seek out real humans. Online forums are great for topical, tactical problem solving, but they’re no substitute for cultivating deeper relationships with mentors who can invest in your growth. And when you reach that place of maturity and success, remember to come alongside a new up-and-coming programmer to invest in them. I’m so grateful to have gotten to be a part of this amazing field, largely because of the people in it, and I’m excited to see how each new generation of programmers will add their contribution to both the technology and the culture of our industry!