Developing Detroit is an interview-based blog created to spotlight individuals who drive technology in the city. Discover motivations, advice, and opportunities, straight from the source of Detroit innovation.
This month, the Developing Detroit spotlight shines on Onorio Catenacci. Born and raised in the heart of Detroit, Onorio has been a software developer for 20+ years.
Software Developer / Community Contributor / Bird Man
Take us back a little…How and where did your software development career begin?
I’m kind of lucky in that I had an uncle who had a business partner that was willing to let me learn how to write software for his business. I’ll always be grateful to my uncle and his business partner because that was a very lucky break for me. I was effectively paid to teach myself how to code. My second job (with RNG Associates which is no longer around) was also very impactful. I was lucky enough to have a mentor who helped to stem some of the bad habits that a self-taught developer can pick up.
Who and/or what inspired you to become a software developer?
It’d be hard for me to point to a single “who” because I’ve been privileged to have worked with some extremely smart people over the years and I do my best to figure out what they’re doing right and do it myself.
What is the coolest project you’ve worked on as a developer?
The one I’m working on right now! Seriously, though, I’ve always enjoyed learning new things and that thrill of learning is a lot of what keeps me going. I’m pretty lucky in that RIIS, for whom I currently work, really encourages us to stretch ourselves and keep learning.
What’s the best part about doing what you do?
It’s hard to nail it down to just one but if I had to pick one I’d say there are very few thrills I’ve experienced like the thrill of solving a particularly tough problem. Or finally figuring out a really tough bug.
In your mind, what does it take to become a software developer?
A lot of optimism. There are going to be plenty of times that you’re going to feel like a fool. Some detail that you should have taken into account will escape your notice or some seemingly obvious mistake you’ve made will be called to your attention. Take some solace in the fact that you’re not the only one.
A lot of attention to detail. No human being can pay attention to details as well as a computer can but the better you can do the less likely you are to end up on a 2 am phone call with an upset customer.
The ability to know when to abstract and when to reify. As human beings we need to abstract away unimportant details. But as software developers we need to make sure we’ve accounted for the myriad details needed in building working software.
A lifelong passion for learning. In our field, as in many STEM disciplines, there is constant discovery and improvement. If you are content to sit on your existing learning, a job as a software developer is probably not for you.
Tell us a little about the groups and organizations you’ve been involved with?
I’ve been involved with a few over the years. To be honest, I tend to get rather enthusiastic about some technology or idea and I want to meet others who are equally enthusiastic so I start a user group. But I’m trying to dial back that tendency a bit.
There have been a few user groups over the years that have really impressed me though. Dave McKinnon took over the Detroit Java Users’ Group several years ago and not only did he breathe new life into it, he made the group a powerful force in spreading new ideas too. Dave is just a passionate guy whose passion is a bit infectious; I love being around him because I learn from him and he always makes people around him feel like they’re the most important people in the world.
Don Ward has also done a great job of running the local Google Developers’ Group. Don is another one of those folks who not only runs a user group; he also (like Dave) runs a great conference and he also manages to get more than his fair share of forward looking talks. On top of all that, Don has built some of the coolest Android apps I’ve seen here locally.
I also have a deep admiration for Amber Conville because she’s also one of those sparkplug people (like Dave and Don) who not only does a lot herself but also helps other people get things going too.
Are there any programming languages that you show favoritism for? Why?
Lately I’ve been spending a lot of time in functional programming and in languages that embrace functional ideas. And there’s a simple reason for this; one day businesses will stop accepting the idea that if they want to scale up their business, they’ve got to pay us to totally overhaul their software. They will start demanding (and we’ll have to respond) that the system we wrote for them has to be capable of handling lots more load and more importantly lots more customers without having to be totally re-written. The thing is, scaling is a tricky business even in the best happy path scenario and functional programming and the ideas that come along with it remove some of the pain from scaling. The ideas of functional programming give the developer the ability to write very simple code to get the job done and given a scaling job, simple always scales better than complex.
As I said to a user group meeting in May, if I were a betting man, there are two languages I would keep my eye on. Clojure is already gaining a lot of traction among developers because it’s just a really well-thought-out language/vm stack. Elixir is an up-and-comer that I predict will make some big inroads. It’s a language that gives a developer both the power of Erlang’s concurrency and scaling and the expressive power of Clojure’s macro system.
Metro-Detroit is home to a large, growing software community
What is it about Detroit that makes for a great tech environment?
I think the best thing is the lack of expectation. When you tell someone in technology you’re from Detroit, well, they’re not expecting you to be a Silicon Valley Superstar. When you show them that you’ve also got the chops to create great software they’re more surprised. It’s good till they ask you to look at their car because it’s making a noise.
What advice do you have for young tech enthusiasts that are looking to join the software community in Metro-Detroit?
• Don’t hang back waiting for someone to ask you to join in.
• If you don’t know where to start, there are lots of open source projects that are always looking for a helping hand. Lots of them need assistance in terms of testing and documenting things and that’s a great place to start. Don’t try to become a committer on the project immediately; you may find you don’t like the project as much as you thought and tech folks can be a bit parochial too.
• Another great place to start: attend meetups and user groups. You may feel a bit overwhelmed at first but stick with it; the feeling of being overwhelmed will pass eventually.
What are the perks to working in Detroit?
Some of the loveliest scenery in the world is only a few hours’ drive away from most anywhere in the state. I think those of us who live here tend to forget exactly how beautiful the Great Lakes are.
While everyone around here likes to complain about the roads (with a lot of justification), the traffic here in Metro Detroit whizzes along compared to places like Los Angeles, Atlanta and Chicago. Every time I’m tempted to complain about some slow down, I reflect on people having two hour daily commutes in LA and other parts of the country and I bite my tongue. Long commutes really do take their toll on a person after a while.
Tech professionals have a lot of opportunities and options these days.
What does a typical day at work look like for you?
There are meetings with clients and colleagues to discuss what we’re building. Some of the day is spent in discussing potential solutions to problems with my colleagues. I often spend time documenting technical details so they’re captured. And, of course, I usually spend my lunch time working on my passion/side projects (mainly Elixir these days).
What advice do you have for developers looking for work?
Hit the user groups. I can’t tell you how often I’ve met brave recruiters who sit through an entire technical presentation (brain being numbed, no doubt) only to say “Hey, we’re trying to find qualified people” and hear crickets. I give the same advice when recruiters ask me how to find qualified people; consider the fact that people who are at a user group meeting are people willing to take their own time to learn more—they’re already showing themselves to be a step above the average software developer.
Another thing any developer looking for work should do is to spend a few dollars on getting to technical conferences. Again, there are often recruiters at conferences eager to meet and talk to qualified folks.
Have you noticed any changes in tech work environments over the years?
I’ve noticed a few major changes:
First, Object-Orientation seems to have gradually evolved from being “a good way to build software” to unquestionable dogma. While I like OO, I also like having the flexibility as a software developer to pick the best approach to fixing a problem. I’m unaware of many tools of unassailable value in all software development situations but sadly many developers seem to have come to accept OO as being unquestionably appropriate in all development scenarios. I heartily subscribe to the “Not Only OO” school of thought.
Second, the rise of IDE’s and dependence upon them is notable. I can recall a time when developers would work with a light-weight text editor, they’d invoke the compiler directly via a command line, invoke a linker in the same way and if they needed to debug an application they’d fire up a separate debugging tool. The rise of the IDE is, as far as I know, unprecedented because developers before us had to do everything via the command line.
Being able to get ramped up more quickly with an IDE is a mixed-blessing. While it makes it much easier for a new developer to get up to speed, it also diminishes the knowledge of “non-default” paths. I mean to say when a developer had to specify a command line to get everything built, he or she needed to know which options were available. Now with an IDE, a developer can simply accept defaults with no awareness of potential alternatives. Accepting defaults is fine as long as the defaults all work but it can be a big problem should the developer need any non-default behavior. And heavy dependence on IDE’s can, unfortunately, discourage developers from exploring new languages and paradigms because these new approaches don’t yet have the tooling support.
Describe your dream job?
My dream job would probably be research and development. I love learning new stuff and I love sharing my new discoveries with others almost as much as I love learning new stuff.
Outside of Software Engineering, what do you like to do in your free time?
Mainly I read. I enjoy mystery novels which strike me as the reading analog of cotton candy. I also enjoy playing board games; a board game seems to be a great way to relax and socialize with others.
Is there anyone or anything you idolize in the software community?
As I’ve gotten to know more about it, there are a few people that I hold in quite high esteem.
I think the developers of Erlang are some super-developers. Not only did they answer the customer’s need, they also managed to do it in an extensible and industrial-strength way. I saw a panel at Strange Loop a few years ago and they asked the designers of several languages which language they wish they’d designed. Most of them answered “Lisp” but I think my answer would be Erlang.
I also hold Alex Miller, the originator of Strange Loop, in pretty high esteem. Having run one conference myself, I am truly impressed with how well he manages to organize Strange Loop year after year.
If you weren’t a Software Developer, what would be your alternate career choice?
People who know me well wouldn’t be surprised to hear that I once wanted to be an actor. I’ve always had a touch of the ham in me which serves me in good stead those times when I’ve given talks at user groups and conferences.
I’ve also considered that being a comedy writer might be a fun way to make a living. I do enjoy writing things that other people find amusing.
You’re a lover of birds – what’s your favorite place to bird watch?
Honestly I like watching birds pretty much anywhere I can. There are interesting things to see about birds pretty much anywhere there are birds. All someone has to do is look.
Interested in being featured or have questions about the Developing Detroit series? Contact Joe at [email protected]