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 Alex Tatiyants, proud creator of JS.js, originator of the MoreSQL movement, and inventor of Guilt Driven Development.
Who are you?
My name is Alex Tatiyants and I live in Glendale, California, with my wife and daughter.
I work for Zynx Health, an amazing company which specializes in clinical decision support. My current title is “Director, Technology”, but my real job is to make software engineers happy. Great engineers are a rare breed and I’m truly blessed to work with the software development equivalent of Seal Team 6 (especially if Seal Team 6 was into salty snacks and soft drinks).
What do you do?
What is your development environment?
Our stack consists of Ext JS, ASP.NET MVC 3, Fluent NHibernate, and SQL Server. We use GitHub Enterprise (privately hosted) as our source repository and Jenkins runs our continuous integration. Our primary IDE is Visual Studio 2010 and Resharper, through we have a few IntelliJ and Eclipse installs around the office as well.
As for hardware, my work machine is a Windows 7 box with a quad Core i7 CPU, 8GB of RAM, and an SSD drive, while my home machine is a souped-up Mac Mini. Both have dual 23" wide screen monitors, which is awesome.
What new tools, languages or frameworks interest you?
What is your coding pet peeve?
For a coding pet peeve, it’s a tie between commented out code and TODOs because I really dislike clutter (as anyone who sees my desk will attest to). Furthermore, TODOs really bug me because it’s sometimes hard to tell whether they’ve been dealt with already or not.
As far as favorite naming convention, I personally swear by Bob Martin’s Clean Code book. His whole approach to writing clean, easily grok-able code has always appealed to me.
How did you get started programming?
My first computer was a Tandy. It had no hard drive, so you had to boot everything off diskettes. I remember writing my first program for it in QBASIC, a little Snake-style game. It was an amazingly empowering experience because suddenly I could make a computer do something. It also gave me a tremendous sense of accomplishment because I was actually creating something out of nothing.
My first paid programming job was writing ad-hoc queries in SAS for medical researchers. This was a college job and a couple of months before graduating I wrote a web application (in classic ASP) which exposed a simple interface to the underlying SAS environment. The app was very well received both by the end users (because they could very quickly get the data they needed) and my boss (because it essentially eliminated the need for my position).
How has the developer community influenced your coding?
I’m very impressed by the impact that the open source movement had on our industry. I love that one person (or a handful of people) with a great idea that solves a real problem can attract a strong following from the community and quickly lead to major breakthroughs: jQuery, CoffeeScript, Node.js, Rails, MongoDB, Sinatra, Backbone, and many others.
I’m also amazed by both the wealth of information available today and the pace of change in our field. Because of this, I spend a lot of time keeping up with technology. I regularly read the Code Project (of course), Hacker News, Slashdot, and DZone. I follow forward thinking technologists like Kent Beck, Uncle Bob Martin, Martin Fowler, Ayende Rahien, Jimmy Bogard, Miguel De Icaza, Jeff Atwood, Scott Hanselman, and DevOps Borat.
Finally, I try very hard to read one technical book a month in order to get a deeper understanding of an interesting topic (I’m currently reading Functional Programming for Java Developers). By the way, when it comes to technical books, Safari Books Online has been a great resource, especially now that they have a half-decent iPad app.
What advice would you offer to an up-and-coming programmer?
In my position, I do a lot of recruiting and get to talk to a lot of developers at pretty much every level, from interns to senior architects.
After a while, I started noticing specific traits that make developers great. Some are a set of aptitudes: ability to think abstractly, ability to reduce a complex problem space, attention to detail, etc.
Yet just as important is having the right attitude. Inevitably, truly great devs have real passion for software and they tend to invest significant energy into building their skills.
So, assuming that one has the prerequisite aptitude to become great, my advice is to focus on developing your skills. Part of that is learning and trying new technologies. Whether it’s self-study or working on other projects, today’s up-and-coming developers have many options available to them. After all, contributing to open source projects has never been easier and standing up a new site (using almost any technology you can think of) has never been cheaper.
Another part of skill building is practicing good development habits, whether it’s TDD, automated testing, CI, or even just writing clean OO code. If you’re lucky, you’ll end up in a place that believes in good engineering and expects it from everyone. But even if you don’t, there are other ways to learn. Join a user group, find a mentor, use it in your own projects.