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 Swedish .NET developer Henric Edwards.
Who are you?
My name is Henric Edwards, I'm 34 years old and currently work as a .NET developer on a consultancy basis for Sigma IT & Management in Örebro, Sweden, and before that I had the same role working for Unisys Sweden.
I started out in this business pretty late, I went to University at the ripe old age of 29, so I am now coming up on my 3 year anniversary as a professional developer. It didn't take me quite as long to figure out that I love doing what I get to do on a daily basis and that software development and programming is a passion which means is rather difficult to just stop when I get home.
What do you do?
A good day at work generally means lots and lots of coding! We are a bunch of developers working from Örebro for clients that are mainly located in Stockholm or other parts of Sweden. We have one client in Switzerland as well, and the dev team works from our Örebro office. This means we have a well populated office which isn't always the case with consultancy firms. Personally I think it's a great way to work since it focuses your company's skills to the same location, meaning you can spread the skills across the whole team rather than dispersing it all over the country at various client sites. This obviously benefits our clients as well.
When I worked for Unisys Sweden I was responsible for creating a simple, public facing web app for registering imported or custom built cars for the Swedish Transport Agency. In conjunction with this I also worked on setting up a suite of web services used during the yearly compulsory car inspection the Swedish Motor Vehicle Inspection Company demands for all registered cars that are in use in Sweden.
I then left Unisys to go work for Sigma IT & Management. Here I immediately got to work with Fortum, one of Sweden’s largest energy suppliers and a project that was already underway. It involved generating pdf-budgets for various types of energy subscriptions. That was my first project, and I'm still (almost two years later) working with them on a rather big project that affects their IT infrastructure as well as their core customer services.
During the whole time I've spent most of my time on the server side with various web service implementations (both "traditional"asmx and WCF), which is very fun. I have had some opportunities using ASP.NET MVC 3 in my current project, which has been a rather pleasant experience.
What is your development environment?
I'm a .NET developer by trade and I really like C#. On my spare time I dabble a bit in this and that (PHP, Ruby on Rails and Java to name a few), but most of my time is spent in Visual Studio writing C# on the .NET Framework. ReSharper is obviously a natural extension of that environment, and I've come to depend on that tool so much it's almost a bit scary. I can't recommend it enough!
What new tools, languages or frameworks interest you?
NancyFX is intriguing. I still haven't found the time to really get stuck in, but unfortunately I haven't been able to actually get down to it.
Fluent NHibernate is also something I've just recently started exploring more and really like.
I do spend a lot of time on design patterns, best practices, TDD, DDD and general software architecture as that's something I'm very interested in. Finding new ways to produce better, more efficient code in a maintainable and easily understood way is certainly challenging.
I have made several concerted to finish an iPhone app in Objective-C but I never seem to be able to cross the finishing line with that. I really need to crack on with that as well since I enjoy doing that kind of development.
What is your coding pet peeve?
At Sigma we use the IDesign Coding Standard for C#, with some "local flavours" mixed in, and that works well for us.
What I do struggle with (and not so secretly frown upon) is poorly named variables and methods. It's such an easy way to make your code much more readable and fluent for others as well as yourself, when you come back to it in a months' time. Indentation is important, and the whole brace debate is silly (everyone knows it goes on its own line).
How did you get started programming?
I've been coding for around 5 years now which means I'm still pretty new to the game but it is something I really enjoy doing on so many levels. It's a creative act where you build something that starts out abstract and intangible and slowly transforms into a working (hopefully) application. It was hard to resist the blend of problem solving, creativity and technical ability.
I started out in Delphi which was a decent enough language, but unfortunately the IDE weren't all that good. Visual Studio felt like a saviour at the time. I then moved on to Java (which still has a special place in my heart, even as a .NET developer) and C#. I've done some VB.NET, C and C++ as well, though not professionally.
How has the developer community influenced your coding?
I love the online community! There are so many talented and smart people out there it's impossible to NOT pick up many useful tips and tricks and being inspired what other people do and write about on blogs and Twitter.
On the other hand, the dev community can be hypercritical of both users and other devs. I suppose it comes with the territory and I haven't personally been a victim of this yet, but it can get a bit excessive at times.
I have become quite a Twitter addict considering my initial scepticism, and that is squarely down to the shortened paths of communication to people in the field that I admire. It's a great tool even if can get a bit noisy at times.
Stack Overflow is also a fantastic place. I'm no Jon Skeet when it comes to rep (in fact, I'm not even over 1K yet) but it's a very valuable work tool in terms of productivity, and I go there daily just to keep myself updated.
What advice would you offer to an up-and-coming programmer?
It sounds clichéd, but stay humble and take responsibility for your work and your code. Don't be afraid to ask for help as no-one is expecting you to know everything, especially if you join an ongoing project. It can be overwhelming, but hard work and support from others goes a long way, and the next time it will be that much easier. Keep the curiosity. It's hard to be enthusiastic all the time, but see difficulties as challenges that will develop your skill set and good things will happen.