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 track down Code Project member Sacha Barber.
Sacha has been a Code Project member since 2003, and in that time has become a cornerstone of the community. He’s written over 120 articles, received many awards for his contributions and, as you’ll see, is eager to share his knowledge and enthusiasm for coding.
Who are you?
My name is Sacha Barber and I live in the seaside town of Brighton in the UK, which is known for its pier, rock and beach and is a old-time hangout for the good-time party people of London.
I have no official title where I currently work, as I am a hired consultant (that's right, a contractor). The company I work for is an FX (also known as Forex or foreign exchange markets) company, though we must also support front and back-office functionality
What do you do?
I am a strange breed in some ways, as I have not always been into software. I originally studied electronics and worked in that for a while before getting into industrial automation, where we would write software to control various things from paper mills to chemical processes (where they made hair dye and all sorts of great things, such as toothpaste) and oil rigs.
Working in industrial automation taught me about software. I was using some very strange proprietary languages then which are more akin to assembler than anything high level like C#, though we did a lot of Visual Basic code too.
At the end of my time in industrial automation I was seeing that it, too, was starting to use high level languages like the .NET Framework, which I started with when v1 had just come out, actually. I pretty much fell in love with .NET after the first time I played with it.
So I have worked on a great many of these types of projects, but I finally decided proper programming was the way for me. I went back to Uni and got myself a degree and a masters, and then went back into the big wide world and looked for work. While I was at Uni I was working with .NET in my spare time and was also doing small bits of work for people using WinForms and SQL Server. I also started to get into what was called Sparkle, which became what we now know of as Expression Blend, so basically WPF.
Since leaving Uni I have been lucky enough to work at a few great companies where I have done various projects, which have included both web and desktop projects. Most notably I worked on an ASP.NET web site for a government backed accreditation/assessment system, which needed to link to handheld PDAs that assessors would use remotely.
I have also worked briefly in the telecoms world, before I moved into finance, where I have mainly been involved with working on a complete rewrite of all the tools that the company used. We chose to do this in .NET 3.5 (now 4.0) and we use WCF/REST services and SQL Server 2008, along with dealing with MSMQ and a WPF front end. We need to provide full business functionality, so that means front office functions like allowing FX trading and back office payment processing and allocation functions, as well as document generation. It is quite a beast of a project actually and uses the following things:
What is your development environment?
We are a team of 12 and we are pretty tight as a team. We tend to work in an Agile manner, where we try to follow best practices such as XP, Unit testing, Continuous Integration, 2-week sprints. Each member of the team runs a pretty powerful Dell with 2 monitors, Visual Studio 2010 SP1, ReSharper, SQL Server 2008, and Perforce for source control.
In terms of frameworks, we currently don't use too many. We try to limit the use of third-party frameworks as much as possible, but we do have the following dependencies
- LINQ Dynamic Queries, which we use for some of the weirder LINQ we write
- Castle Windsor for service location and dependency injection
- NUnit for testing
- Moq for mocking inside of tests
- Nant allows us to build the scripts that Cruise Control .NET will run
- CruiseControl.NET to check out our code, run the tests and build deployment packages with
I am a big fan of IOC containers, and MEF and WCF. As such I have been playing around with the following frameworks lately:
- MEF 2 Preview 3, which I am using in a side project right now
- WCF Web API, which I think is very cool and truly makes WCF RESTful
- AutoFac looks like a pretty cool IoC container
In terms of other things I wish I had time to look at, there is quite a list, I currently wish I knew more about F#, Windows PowerShell, Windows Azure and jQuery. So when I get time these are the areas I will be looking at.
What is your coding pet peeve?
My pet peeve is using underscores in front of fields – you know: _someField. That really bugs me.
As for naming conventions, I think making variable names as explicit as possible is the way to go, you know call something "isDuplicationAllowed" rather than "dups." In terms of casing/indentation that varies from job to job and some places enforce it with StyleCop.
To be honest I am happy to go with the flow on this one, nothing to report there.
How did you get started programming?
I got started programming when I was 16 or so I suppose, but not really properly until I got into the industrial automation work, which is where I really got into it and learned the delights of truth tables, and logic, and control flow statements like if, else switch. Awesome stuff I am sure you will agree.
My 1st computer was a Commodore 64 with the external tape loader for games, where you would wait ages for GhostBusters to load from tape only to have it crash in the final 2 seconds of loading. Awesome to the max.
I like reading people’s blogs and get a lot of good stuff from blogs. As far as Twitter, LinkedIn, and that ilk? Call me old fashioned, but I do not use them at all. I have little enough time without tweeting my every move. And as for LinkedIn, its basically a job agency tool from what I see, the amount of head hunters/recruitment agents that use LinkedIn is staggering. Not for me
What advice would you offer to an up-and-coming programmer?
Start young. Learn different languages, as it gives you a deeper understanding of it all. And, if possible, surround yourself with smarter or at least like-minded folk. That really helps make you better. Read lots, that helps too. Also try and maintain a work-life balance, you need that.