Over the last 10 years I’ve worked on Windows and Bing at Microsoft, managed the Big Data Infrastructure team at TokBox, and built a push-button, Chef-based server management/deployment system. I’m now starting a business in the 3D printing space.
What advice do you wish someone had told you when you were getting started coding? Getting started is easy once you decide to do it. First, find a problem to solve that’s real and that you care about. It can be as simple as listing your daily tasks, or keeping track of when you walk your dog.
Then pick a popular language and do some tutorials; there are plenty online for nearly every language.
Next, use what you’ve learned to solve your problem. Others have probably been there before, so find out what they’ve done and learn from their mistakes and successes. Most importantly, have fun! Coding is a blast.
What’s your favorite programming language and why?
I may take flak for this, but I’d have to say C#!
It’s extremely familiar to anyone who knows Java or any object-oriented language and relies on the high-quality .NET framework. Anything that can be done in Java can be done more simply and neatly in C#.
Could you share any coding tips or tricks that make your life easier?
Use source control. Git is free, ubiquitous and easy to use. It saves your work, so if you discover the approach you’ve been taking for the last week is wrong, you can easily go back and start from your last good checkpoint.
Having that safety net will make you more confident in trying larger changes and experimenting, and it’s far easier and neater than keeping multiple copies around or having huge commented-out code blocks.
When you’re stuck on a coding problem, how do you get unstuck?
Take a walk, read something else, talk to your buddies. Just get away from your code!
I can’t count the number of times I’ve been banging my head against a problem for hours, but five minutes after I step away the solution just pops into my head.
What’s your approach to helping someone with a coding problem?
First, I understand the problem and identify the approaches they haven’t yet tried. Is the issue that the solutions they’re trying aren’t working, or that the problem isn’t clearly defined?
If there’s an issue with problem definition, I ask questions to eliminate ambiguity. Then, if I already have solutions in mind that I know will work, I nudge them toward the one that’s closest to whatever they were trying before. If the solution’s not immediately apparent, I’ll start trying variations on what’s already been attempted. If we’ve exhausted the current line of thinking, that’s when I’ll attack the problem from a completely different angle.