Interview with Lars Gyrup Brink Nielsen, Microsoft MVP and writer for inDepth.dev
Agiledrop is highlighting active members of different open-source communities through interviews focusing on their projects and initiatives, as well as trends and innovations in the digital sphere.
We spoke with Lars Gyrup Brink Nielsen about the evolving nature of software development and what it's like being a Microsoft MVP. With a varied software background, Lars has experience in both enterprise programming languages and more recent web frameworks, ranging from C# to Knockout.js. Read on for some great insights on how front-end development is evolving and a discussion of some of the most recent trends.
1. Please tell us a little about yourself. What’s your role in the Angular community and what do you do professionally?
I got involved in the Angular community about two years ago. I started speaking in public, attending local meetups and then also writing for blogs. I’m a part of the inDepth.dev community, I’m a very active writer and I also help onboard new writers to help them improve and bring them into the platform.
I also spoke at Angular conferences last year, and I’m doing some remote talks for meetups this year. Of course, I also take active part in conversations on Twitter and participate in people’s livestreams.
Right now I’m also working on an Angular Ivy book for the experienced Angular developer. So, it’s not a “how to write a component with Angular” book, it’s more “you already know Angular but you don’t know what’s new in version 9 and 10”.
It’s a very practical approach to what’s new in recent versions and how to upgrade your project, also containing concrete examples with some of the new APIs and things like that. I’m hoping to have the book out by the end of the year.
So, that’s my role in the Angular community. I guess I’m known for writing a lot about testing in particular, I have a huge interest in software architecture.
I also have been doing a lot of work with Ivy and the possibilities of Ivy in the long term, because it really hasn’t lived up to the promise of how great it can be yet, that’s still to come. As we can see with the recent Angular roadmap, there’s still a long way to go before we start seeing substantial changes to the framework.
As for what I do professionally - my current title is front-end architect with a Danish software consultancy called Systemate. I’m a full-time employee with them, and then I’m a contractor through them with their customers.
Right now I’m working with the Danish TSO Energinet on an application used in their control center to plan, operate and react to changes in power production and consumption in Denmark and neighboring countries.
2. How did you first get started with software development?
More than 20 years ago I started writing HTML for the first time; I did some small websites for myself and my friends, some photo galleries and stuff like that, but that was just out of interest, not something I was paid for.
Later on, I took a Bachelor’s Degree in Computer Science, and before I was even done, I already had a lead developer role in a company, so I continued doing that after finishing my degree.
It was around 1999 that I actually learned HTML for the first time; I was a heavy user of the internet, I read a few books on CSS as well, but I didn’t really know that it was something I wanted to pursue as my career.
Then, during high school, there was an event where people from the university came and showed us different educational programs, and I really liked what the computer scientists were doing, so that became my goal.
But I actually dropped out of high school after that, so I spent a few years doing regular jobs without any education, e.g. I was a commercial fisherman, a certified mushroom picker, I worked at a slaughterhouse and in food factories and supermarkets.
I did that for about five years before going back and basically starting over with high school, then went straight to the university afterwards and I really enjoyed that.
3. How about with Angular specifically?
Then when I came back to a more enterprise line of business applications I joined a company that was already using Knockout. However, then we did a greenfield project and I chose to start using AngularJS instead.
I really wanted to use Angular but it was not finished, it was in early 2016, and as you might know, Angular 2.0 only came out in September of 2016. Even though it was a release candidate, I didn’t really want to work with a non-final version for this customer.
It was a very interesting project though, it was collecting measurements on radio quality for wireless water and heat meters. It involved a lot of visualizations and graphs, which was very interesting to do with AngularJS even though it was my first time doing it.
I was more experienced at that point, I started going to meetups and reading up on best practices, and so I tried to structure it in such a way that it could be easily migrated to Angular 2+ if that’s what they chose to do eventually.
Later I had another employer and they specifically wanted someone to do Angular, it was version 4 at that point, and I figured that I could do Angular when I could do AngularJS and had experience with all the other frameworks.
This project actually involved building a framework on top of Angular, so like “build once, deploy many times”. It was more of a product rather than a framework, a customizable product they could use with many different customers and they would configure it at runtime.
That’s actually pretty difficult to do with Angular; their current version was in C# and a C# front end as well, with WPF and XAML frameworks and technologies.
They basically wanted to do the same thing, but with Angular, because their customers started requesting web clients; hardware is really expensive when it has to be certified for food manufacturing, and Windows touch screens were even more expensive.
That was my first professional project using Angular, but there was still no good documentation in Angular for my use cases, so I had to read a lot of blogs and started following people like Max Koretskyi who’s the founder of inDepth.dev and a good friend by now.
I guess that’s why I wanted to get into blogging as well, I had been thinking about it for a long time, about doing some technical SEO blogging and stuff like that, but I never got around to doing it publicly, only internally within the companies I worked for with presentations on new technologies and trends.
So, I was inspired by the very open community in Angular. There was not a lot of content on advanced stuff back then and even to this day, it’s still more about the fundamentals, so you really have to look carefully to find the high quality content that goes beyond just the basics of Angular and related technologies.
4. What are the frameworks that you’ve enjoyed working with the most besides Angular?
Well, I was actually happy with Knockout, that was a very good framework, it had the concept of observables which is now getting popular again. It was really missing modern technology to be a great framework, but it was very good for its time.
It’s actually still in the same major version as it was back in 2015, still 3.x, but I think it still works. It was popular back then as it was developed by Steve Sanderson from Microsoft.
Starter kits for the ASP.NET MVC came with Knockout and Bootstrap, so that’s another reason it was popular, because of C# and the templates from Microsoft.
5. Speaking of Microsoft - you’ve recently become a Microsoft MVP. What did you have to do to achieve this and what did this achievement feel like?
Well, luckily for me, it was pretty easy, because I’d already done all the requirements; you need to get nominated by an existing MVP, though, but I knew someone who then nominated me.
Then I just had to fill out a form where I put in all the work I had been doing for the past year, and that was actually quite a lot. After that it got reviewed and I got the Microsoft MVP award. And that is valid for a year, then I have to remain active every year to get it again (I don’t need to get nominated again, though).
I’m pretty happy with that because in Denmark, Microsoft is a very important company in terms of its technologies, it’s really a C# country, so it means a lot in Denmark. It’s good for me and it’s good for my employer as well.
Just like the GDE program is about Google products, MVP is about Microsoft products and technologies. It turns out they are also investing in web development, because for one they also support Node.js on Azure in their apps, services and products.
That’s one reason for being interested in the web, and then of course everyone needs a front end when you have a web back end, even if it’s C# you will need some front-end framework. So, they’re interested in supporting overall development within the web, and that was of course my area of contribution.
What I listed were all my articles, all my talks and meetups, and being part of podcasts and live streams and stuff like that, as well as how many views my articles got and so on, just to gauge my impact on the community.
I wasn’t asked a lot of questions, but when I joined, they did tell me that they review it very carefully; you’re compared to other people within your geographical region and category. They don’t want too many people within the same technology, so you’re really evaluated against your peers in the program, it’s not like a free pass.
In Denmark, Microsoft technologies are very well integrated into the educational institutions and the different industries, so they really have a firm grasp of technologies. Of course, they also want MVPs supporting the different communities.
6. What do you think the future of web development and front-end frameworks holds in store for us? Are there any major trends you’re seeing or expect to see?
We’re seeing a lot of interest in server-side rendering and prerendering, and how to gracefully transition from what was prerendered into bootstrapping without replacing the entire DOM and just recording the mouseclick events and whatnot that you’re making until the application is bootstrapped.
That’s very interesting and technical, and of course it’s a problem we didn’t really have when we were rendering HTML directly on the server side, so it’s something that has been building up throughout the past 8 years or so. This is something we’re seeing no matter the framework we’re in.
We’re seeing an interest in Svelte, and Vue with Nuxt, and React with Gatsby and Next and Remix. In Angular, there’s a project called Scully, that’s kind of the first one of its kind, but even Angular itself now offers a better developer experience to prerendering server-side content, or Angular on the server side.
So, that’s a big trend, and there’s a lot of interest in this field of static site generation and the Jamstack, but also taking it one step further and integrating it with a full-on application framework and making that transition from just prerendered HTML to a fully working app as seamless as possible, with the best user experience.
Other than that, well, it seems that web components have failed to impress. I remember in late 2016 when I started working with Angular, it had concepts similar to web components, and was already at version 0 of the standard, and now we have v1, but since then people have just been satisfied with working within their framework.
Web components are very nice for websites and that kind of thing; I’m more in the enterprise line of business applications and there we don’t really need web components. I mean, I’m currently doing a design system myself, but we’re only using Angular, so why would we need web components?
One of the main architects in the customer’s company also asked about microfrontends, that’s another trend, but I told them that since we’re only ever going to use Angular, there’s no reason for making pure microfrontends where each application or feature is actually a separate application.
Instead, we’re focusing on how to make the many different teams work in isolation, while actually working on the same Angular applications. We have a monorepo with 3 different Angular applications and we have 5-6 teams working on the same codebase.
So, we’ve focused on improving the developer experience, integrating often, doing a lot of automated tests and using the Nx monorepo workspace structure, so that different teams can work in different parts of the codebase without too many problems.
That’s more important; if we did microfrontends, we would just get a lot of complexity for no apparent reason, no real benefit. It’s the same thing with a design system: if you’re only using one framework, there’s not really a need to do web components.
7. How have you seen web development evolve throughout the years? How are all the various frameworks impacting each other?
Even back when I was first getting into the more complex side of front-end development, I could really understand how back-end developers felt when they had to learn this.
Since then, it has become a lot more complicated with all the tooling and the modern frameworks. It was easier back then, we were just starting to see the first transpilers and bundlers and the like. Today you have to learn the full toolchain. In contrast, C# development is not really like that, so that’s very scary for back-end developers.
Of course, if you take it one layer deeper, it becomes apparent where they got their inspiration - React was a very different thing from AngularJS, and it became popular and beat AngularJS, Ember and Knockout.
One of the coolest things in the Angular community was the Angular CLI, but that was actually based on the Ember CLI project, it got a lot of inspiration there and even used Ember’s code initially.
And of course the component concept came from React, so there’s heavy inspiration and cross pollination between the frameworks. They’re solving the same problems, they’re getting inspiration from each other and thus are really challenging each other - the competition produces better software for everybody, making all projects better.