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 the “Maven of Mobile,” Kelly Sommers.
Who are you?
My name is Kelly Sommers and I’m a software developer born and raised in Canada. I’m a developer of all things mobile and love all platforms. I am a passionate learner and determined to improve my skills every day. I’m a challenge addict. The bigger the problem the better. Once it’s complete I need another one though, keep it coming!
In my personal coding time I’m all over the place. I might be hacking on a Continuous Client prototype, critiquing application designs and user experiences like in my Three pillars of Metro post, learning new design patterns, or maybe pair programming with someone to learn something new or to show someone something I learned.
Anyone reading this who follows me on Twitter will know that I bounce around to all kinds of different topics. I love challenges and there are challenges all over the place, so that’s where I end up, all over the place.
What do you do?
Seeking challenges has led me around in a lot of different directions to tackle a lot of different problems. I’ve worked on desktop applications, mobile platforms, mobile applications, web applications and an array of services to support them.
My daily work is more service-oriented right now, but I still get to jump into a lot of different areas. A typical day for me includes a lot of collaboration with my team. The day may start with a bunch of discussions and white-boarding about some architectural designs then dive into pair programming with developers on the team to crank on some of the ideas we came up with.
I’ve become a big fan of pair programming lately. I had an amazing pairing session a few months ago that I really benefited from and now I try to incorporate way more of it. I found out that I pair well with people on my team and that has led to a lot of positive results.
What is your development environment?
My system at work is an Intel Core i7 with SSD and 16GB of RAM. My home system is similar. My development tools vary depending on what time of day you’re asking. You can find me in Visual Studio 2010 or MonoDevelop writing C# or Xcode writing Objective-C. The last couple years has been a lot of C# and Objective-C.
C# is probably my favorite language. I love how C# has evolved at a pretty quick pace by adding new syntax and language features.
Anything I can get my hands on!
Lately I’ve been playing with Apache Cassandra and hope to play with Hadoop to get a better grasp of big data solutions and how they differ from traditional solutions. I’d like to bring those skills up to speed so that I can better align decisions with the problems I face.
I’d also like to get a chance to experiment with the Clutter UI library, which uses OpenGL and OpenGL ES (smart phones/embedded devices).
I recently paired with a friend who showed me Node.js, which I found really interesting. I enjoy getting exposure to a lot of things because you always find something to learn from that can help you in your work.
What is your coding pet peeve?
Accidental complexity. I hate finding out that there is a pile of over-engineered code in between me and getting something done. We’re not trying to land the Space Shuttle, just making something display on the screen!
How did you get started programming?
My father would bring home old computers from work that often didn’t boot and I would tinker with them for months trying to make them turn on. My first computer that actually turned on was a computer that ran DOS. I don’t remember what type of hardware it was, but it was probably a combo of a bunch of them put together until something worked. I had no idea what I was doing!
A few years later I had some computers running Linux and my first programming experiences were scripting with Bash shell.
In high school we were lucky enough to have a math teacher that taught a really challenging programming class. It had a terrible pass-to-fail ratio. Very few students would pass each semester, but it was great for the people who ended up with programming as a career to get started. That’s where my love for programming began.
The developer community has been tremendous for me. I’m not sure I can do it justice in how valuable it has been. I think blogging has been great for developers to exchange knowledge and experience, but Twitter has been by far the most important for me. The ability to discuss and learn from some of the best people in the industry has helped me grow a lot as a developer. Observing people with more experience has helped steer and direct my learning and growth.
Mailing lists, open source and GitHub are some areas I want to participate in more in the future. I think GitHub has really surfaced this social coding buzz that I find amazing.
A friend pushed me to start blogging a couple years ago and I’m really glad I started because the feedback from my blog have been great. I’m so thankful for everyone I’ve interacted with and learn from. I’m @kellabyte on twitter and my blog can be found at http://kellabyte.com. My GitHub repo isn’t too useful yet since I’m just getting started.
What advice would you offer to an up-and-coming programmer?
Slow down and take some time to engage the community and grow. A lot of people say the way to become a better programmer is to build stuff. I agree, but I’ve also been on the other extreme where I was coding so many hours a day trying to hit deadlines that I was implementing the first ideas that popped into my head. I was writing terrible code and not thinking about what I was doing. I hit my deadlines, but produced difficult-to-maintain balls of mud.
I made more time for discussing with the community, learning from great examples in the industry and it has been a rewarding experience. With blogs, GitHub, Twitter, and developer videos, a lot of knowledge from other developers is available to learn from.
Let your interests and passion direct your learning. I put more effort and find I’m more willing to put up with the learning curve with things I’m excited about. Leave room for some fun hacking. We get to create some pretty awesome stuff sometimes. Enjoy it :)