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 Abhishek Sur, a herculian CodeProject author and two-time CodeProject MVP.
Who are you?
Hi, I am Abhishek Sur from the City of Joy, India. I work for Buildfusion Inc. as a Technical Architect. I am addicted to code, you could say. I like to write code, even when I am sick or unwell. My mood improves simply by writing good code. I do a lot of code reviews, fix bugs, and even help fellow developers on how to write better, well structured code. I read a lot of code myself and I was in love with .NET and Microsoft technologies for a while. I also like to write things that I find interesting. I have been awarded as Microsoft MVP in Client App Dev for my dedicated activities in the developer community.
You could easily identify me as the one with the smiling face in a crowd. I am a little shy initially. I am that element which doesn’t mix
with water for a while, but when it finally does, most of the people would pick it up.
I am fun loving, witty but very down to earth.
A few people call me a geek, that’s why I continue my efforts to produce more geeks from my community Kolkatageeks.
I am also a recent author of "Visual Studio 2012 and .NET 4.5 Expert Cookbook" in amazon.
What projects have you worked on?
Over the years I have been working on a number of projects for my company. Some of them are mere consultancy projects, but a few of them are worth mentioning.
One of the most notable products that I have worked on recently is called MICA. Mitigation Industry Control Application (MICA) is one of the
industry leading products in the market. The product focuses on giving real-time solutions to contractors so they can do their job more easily
with the help of technology. The application is meant to take real time data automatically from the client location
and upload to the central repository silently and produce real time analytics, pricing, apply rules, recommendations etc.
The application is spread over virtually on every platform like Windows, Windows Phone, Windows RT, Android, Symbian, Blackberry, iPhone, iPad, Smart Phones, Web etc.
I have been mostly responsible for developing and architecting on the Windows platforms.
The most promising part of the application is the full-fledged Floor Planner
which creates drawings based on object data and Smart Forms which allows clients to define their own forms on the web with
configurable rules on data and present them on devices to fetch real time data.
In addition to MICA, I have also worked on various general purpose products like Asset Tracking, Timecard management, and Content Management products.
What is your development environment?
Hmm, I work on my Lenevo ThinkPad, 3rd Generation Intel i7 Processor and
16GB RAM and 2 GB graphics. The laptop is attached with a 27inch Samsung LED monitor to get
more room to work on. Even though I really like to work on Visual Studio 2012,
I am still on Visual Studio 2010 with .NET Framework 4.0 with Power tools installed and C# with XAML
is my primary language for creating apps. I use Expression Blend too sometimes to create styles,
but I generally prefer to write my styles by hand, if it isn’t so complex.
I even use SQL Server 2008 R2 a lot inside my Windows 7 box. Other than that, I use .NET Reflector to inspect assemblies
and find out internals of languages. Sometimes use FxCop and StyleCop to analyze the application.
I also use Remote Desktop and TeamViewer a lot for remote connection.
Being a WPF developer for most of the time, I used to like Prism
for building Composite applications. If not Prism, I have even built my own framework mixing good parts of MEF, MVVM and MVP to support layered architecture.
With lot of emphasis on decoupling and maintainability of code, I also give strong emphasis on performance and optimizations.
Parallel computing is one of the priorities too. I mostly use Visual Studio 2010 for writing test cases and also use PEX and Moles sometimes.
Social media is one of my priorities. I use lot of Facebook and Twitter while working.
I use Social media for my learning. I like to read tweets and follow people with common interests.
I use Tweetdeck or the Chrome Plugin for this.
What new tools, languages or frameworks are you playing with (or just interested in exploring more)?
HADOOP is one of the popular terms in recent times. Working with big data is no joke. Parallel computing and synchronization was one of the toughest problems for a long time. I am currently paying attention to HADOOP and Cloud Computing. A few of the tools and technologies that I am trying to pay attention to are:
If time permits, I would also like to document some of my experiences with these technologies.
What is your coding pet peeve?
My pet peeve is placing _ in fields or members. This really bugs me. Some people like to use it,
but I rely on explicit names without underscores rather than short hand forms. In addition to that, I also dislike commented code.
Generally I dislike reviewing code which is wildly commented out.
On a related note, I like to follow C# coding conventions as much as possible and
sometimes I do like to see the style problems using StyleCop.
How did you get started programming?
I have been fond of programming languages since the beginning.
My first computer was a Pentium III PC with 128 MB RAM, way back in 1998. I started reading about C and got interested in it.
I remember of developing some of the coolest applications with C way back in my initial days which are not easy to develop with modern languages.
I used to work with Java initially. I had rough preliminary knowledge about Java in my early days. Once I got into .NET, it was all .NET thereafter.
I am totally fascinated in the C# language and I love the way it is getting enriched day by day.
The close association with Language and CLR teams allows me to have keep in constant touch with the people behind this cool language.
My thanks to Microsoft for adding me to the insiders list, it’s my honor.
How has the developer community influenced your coding?
Community is all good. I can't think of a situation where people don’t meet similar minded people either online or offline.
I wrote my first article here on CodeProject with the idea of letting other developers in the community in on what I had recently
learned. I used to write a lot of posts and blogs with short things, but over the time, I chose quality over quantity.
I like to spread my knowledge and also encourage others to do the same. Think of a world without the sites like CodeProject, StackExchange, Google etc.
You would definitely know the difference as both a developer and a company. The world is growing at such a pace where you need to learn
quite a lot to keep up with the technology. Community is the one thing that developers find most helpful and creates a difference in their lives.
If you didn’t already, join the local developer community now and get benefited instantly.
Where do you see yourself in 10 years?
Everyone has a dream on their own terms. I have a dream to create something that really makes me feel proud. I have achieved a lot from my endeavors. I am proud of being an author. 10 years down the line, I am expecting to come closer to technology and community. I might also try my enterpreneurship skills. But overall, I want to contribute much more towards the developer community for sure.
I cannot think of a life without technology. So you can expect more emphasis on technology and making some cool real world frameworks
and applications 10 years down the line.
If you had one piece of advice for an up-and-coming programmer?
You need to master at least one programming language before moving anywhere. Concentrate on the first the years of your development life.
Believe me, this is the key part of your career. Learn as much as possible from your seniors. Read a lot of blogs and articles on the language or technology
you chose to inhabit. Understand as much as you can and be flexible towards applying your skills in other domains too. You do not need to join large companies during the start of your career, but rather choose a company that suits you best and where you expect to learn a lot. Smaller companies generally give good exposure to technology and help you to know the whole story.
Join and contribute to local developer communities like CodeProject. Read as much as you can, read code and try to get accustomed with good coding
styles and patterns. Get acquainted with Design Patterns and read my articles / book.