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 talk to Michael Sync, who started the CodeProject fan group on Facebook.
Who are you?
I'm Michael Sync (Soe Htike), and I'm currently staying with my lovely wife "Shwesin" and my beautiful daughter "Elena" in Singapore. I work as an architect/senior consultant for Simulation Technology in Singapore. I'm also a Silverlight MVP. By the time I received the award, there were only 5 MVPs for Silverlight expertise, but our community is growing so fast and you can see a lot of MVPs for Silverlight now. I'm currently writing a book called "Windows Phone 7 in Action" with two awesome authors for Manning.
What projects have you worked on?
I'm currently working on a WPF project at Simulation. Of course, we are using all usual stuff like MVVM, DI, and TDD in that project. The interesting thing (at least for me) is that we started using Entity Framework 4.1 (update) with the migration feature for the first time in this project. I've been waiting for this feature for quite some time already. I'm glad that EF team finally managed to release it. I'm waiting for Enum support and Spatial data type support from EF team as well.
Prior to joining Simulation, I used to work with Silverlight and WP7 for developing the brain-training game for Memolife. We even published one free game as a part of WP7 early submission in Microsoft marketplace.
What is your development environment?
As our projects are based on Microsoft technologies, C# is the most-used language for me. I started learning Go a few months back and am trying to write a tiny project with this language.
If I have more extra time, I would like to pick up some functional languages like Haskell in future.
Hardware is an Acer Windows 7 64 bit Intel i7 workstation at the office and a Dell workstation at home. (I bought it last year and found it quite powerful. I posted about the detailed spec in this blog post.)
Tool and Servers:
For software development methodology I like to use Scrum and XP.
Currently, I'm very interested in the Go language, Node.js and NuGet. I'm giving more time to learning Go and making small projects for now. Once I'm familiar with Go I will take some time to do something with Node.js.
For Microsoft technology, I would like to contribute something to NuGet as well. NuGet is the only one open source project that allows us to contribute from Microsoft. In my opinion, all .NET developers should contribute to it at least once even for the small bug-fix because this project can be the perfect example for Microsoft to realize about the good benefits of opening the source code and accepting the contribution from community. :)
Oh no! Please don't say that Siverlight MVP didn't say anything about Silverlight. I'm looking at Silverlight 5 and Metro Xaml + C# application development as well. We all know the rumors about Silverlight and honestly, I was hurt a bit as well.
What is your coding pet peeve?
Well, I don't like god classes/methods, weird names and so on. I do understand that sometimes we are in a rush to meet the deadline so we can't write the beautiful code that we want. My advise for those who are working under tight schedule is that you can still take care of small things like giving things meaningful names and following the single responsibility principle. But always try to get some time slots for refactoring as soon as you can before you forget about your own trick.
I like the K&R naming convention. I uses camelCase without an underscore prefix for private fields and PascalCase for all public things, methods and so on. I love using "var" but I don't use it in one scenario where I can't tell what the type is from the right hand side of the expression:
var products = GetProducts();
How did you get started programming?
I loved playing video games since I was young. One day I asked my dad about how to create those games. He told me that I need to know the programming to create them. This is how I became interested in programming.
Due to a lot of reasons, I got my first computer pretty late. I think I got it when I was in 2nd year at University. I don't remember the spec.
My first programming language is C because this is what they teach in 1st year. Then I learned C++ and Pascal.
I love the developer community. I do respect everyone who is participating in the community and helping each other even though they may not contribute anything to the open-source projects.
In fact, I'm active on many different social media sites. I started the CodeProject group on Facebook and also blog on my site michaelsync.net. You can also follow @michaelsync on Twitter or check out my profile on LinkedIn.
What advice would you offer to an up-and-coming programmer?
Participate in the community and use your time for something useful. Balance the time that you spend in front of computer and the physical activities that you are doing.