I was cleaning out my Google Drive and found this questionnaire that I filled out when applying for a position with Art & Logic(@artandlogic) back in 2012. As I read through this I was quite surprised with some of my answers. It’s often embarrassing to read through thing you wrote so long ago you almost don’t remember writing them. This is one instance where I thought, “I should share some of this.” Here are a few of the questions and my responses.
Do you prefer open-source or proprietary technologies, and why?
It depends. For most aspects of development projects I prefer open-source software. I think that the open-source community is full of ridiculously smart people who are more interested in solving problems than padding the bottom dollar. There’s nothing wrong with making money, but it’s nice to see communities of people working together to make software perform better or be more usable. There are less constraints on open-source software which tends to make it feel more edgy. That point is why for some things I prefer proprietary technology. For example, I have an iPhone not an Android, I prefer MS Office over Open Office. Sometimes that control that someone/a company has over the product makes it more usable or more reliable. Database software is one of those areas that I might consider using a proprietary DB as opposed to an open-source one, it depends on the project.
What do you think of formal design methodologies?
I think that formal design methodologies have their place and time but strict adherence to those methodologies can stifle both creativity and productivity. I understand that their purpose is to control reliability and maintenance as well as provide a structure for the design process which is important especially in a team environment. I just think that common sense should be used when deciding to adhere strictly to those process and if the project could be completed faster by using a more iterative or streamlines design process it should be used. I’m a big fan of “Getting Real”, by 37Signals. I think that their approach to software and business is smart, efficient and to the point. Formal design processes seem to be filled with fluff, some of it is necessary, some of it isn’t.
What technologies would you choose to develop a high performance, highly scalable web application and why?
The thing I like about this question today is that hardware is so much faster today than it was when I was first getting into the IT field. It’s cheap and easy to replace slower hardware with faster hardware and mask performance or design issues. Having said that, it’s no excuse to be sloppy in your design/code or not diligent in choosing the proper technologies, but to my point earlier, you could spend a TON of time coming up with just the right design to fix a performance issue that $5k in hardware could have resolved just as easily. It comes down to what’s important to the client/project.
To answer the question, I’d go with x64 hardware running a flavor of Linux. I like Ubuntu, but depending on database choice Redhat or SUSE might be required for support. I really like Ruby on Rails for the language/framework which would infer that MySQL is the database to be used, but MySQL has scaling difficulties. I think I’d prefer Informix for the database of choice because it’s fast, reliable, easy to maintain and scales well, but it’s somewhat unknown. I’d use Memcache for sure, especially if I were using MySQL to boost performance. I know for a fact that this technology stack can build a very large, and reliable website. Using MySQL as the database limits scaling without using multiple databases from the very beginning which in turn creates more up-front coding or more re-coding once the database outgrows hardware limitations.
Where do you think most software projects go wrong?
Scope creep is the killer of all projects, but it’s also the one that everyone is paying attention to. Poor communication between everyone involved in the project is probably next, especially between the business owners and project managers. Keeping everyone in the loop is critical. The other thing that I think has a negative effectaffect on a projects success is including too many features that are just not important. This can have the effectaffect of putting focus on the wrong areas for too long. Keeping the design and feature requests clean and simple will go a long way towards a successful project.
Describe something in your life that you haven’t yet accomplished but would like to.
I mix live music for my church and occasionally a friend as a hobby of sorts. I REALLY enjoy it both from the technical and artistic perspectives. I hope to one day have the opportunity to mix for a large band in a real venue. That would be pretty darn amazing.
There’s nothing too terribly profound here, but I hope it stirs some inner conversation within you if nothing else.