Jorge: What is your professional background and how did you get into software engineering?
Carl: I’ve always loved computers, when I was younger I thought I wanted to get into video games, but software engineering has been something I’ve basically always been “into”. During my last year of school at the College of Creative Studies at UCSB, I joined a couple friends to work on a mobile Two-Factor Authentication product with one of our professors.
Unfortunately this venture eventually ran out of money and since we needed to make money, you know, for food, the friends I mentioned and I started a software consulting business, Bitmatica.
Jorge: Your company Bitmatica has been helping companies like AutoDesk and Stanford build and deploy products for years now. What is it about the way that your team executes that’s so effective?
Carl: I think a big part of our success is due to how well the core team works together. The founders have a working relationship we have been developing over the course of about 8 years now, we started working together in school and continued into our professional lives.
We have a good sense of each others strengths and weaknesses, and know how best to leverage those to do the best work we can.
Jorge: From your experience why is it so hard for larger, more established companies to innovate at scale?
Carl: Honestly I don’t really have much personal experience working in environments like that, I have always worked in small teams, but its seems to me that larger scale teams struggle with maintaining a high quality of employee and excessive “management” by people who don’t have the technical expertise to efficiently oversee technical efforts.
I don’t claim to have any answers for how to solve this issues, I just plan to stay away for as long as I can.
Jorge: What are your preferred programming languages? I tend to do most of my work in Ruby which I like well enough, but I am a big fan of Java, I think it hits a really excellent middle ground between performance and abstraction, and I really love statically typed languages.
At the end of the day though, programming language is mostly irrelevant.
There are often more important factors that go into deciding the best language for a given job, often the frameworks/libraries available or other aspects of a project can determine the best language to use. A good software engineer should be able to easily learn to use a new language, not be tied to identifying as a programmer of any specific language.
Jorge: You’re a backend guy, are you more of a no-SQL/non-relations guy or SQL fan and why?
Carl:: While this may simply be due to my ignorance of the concept, I haven’t had any occasions in which I felt NoSQL was the right tool for a task I have been working on, so I’ve never actually used it.
Therefore I wouldn’t necessarily call myself an “SQL fan”, its just all I know.
Jorge: Aside of all the awesome stuff that Bitmatica has created for companies, you have built a very beautiful product Dashtab. What were the challenges that you faced during the early days from a back-end perspective and how did you work through them?
Carl:: The main issue I have encountered in developing Dashtab’s back-end has been integrating with Salesforce’s APIs there are so many different ways to integrate with Salesforce, each with its own set of arbitrary limitations that finding the “best” way to solve any given problem has not been easy.
Often we would have something working one way that seemed to work, and then we would need to do something new that was totally unsupported, or just stumble upon a better way that would allow us to do more with the product, and have to re-implement the feature using a totally different method.
Jorge: What are 3 tips that you would give an early stage founder or product manager around how to ship product fast.
1. Get a great team of people that work well together.
2. Let employees work in the environment that works best for them, whether that is 9-5 in an office or random hours throughout the day/night, as long as people are able to be effective there is no reason to hold onto outdated ideas about how and when work “should” be done.
3. Sometimes shipping “fast” isn’t the best goal, you’ve probably heard the phrase “Fast, Cheap, Good, pick 2”, understanding your priorities is important and sometimes you can’t do everything you wish you could.