Übermensch Consulting
i t c o n s u l t i n g e v o l v e d
Technology
philosophy
The tenets of our approach to software development are simple:
- Use the right tool for the job
- Test early and often
- Convention over configuration
- DRY (Don't Repeat Yourself) it out
Right Tools
We subscribe to Neal Ford's notion that polyglot programming is a fundamentally better approach to software development than the old "one language to rule them all" approach. By taking great care to choose and commit to the right set of tools, you can greatly boost the productivity of your developers without sacrificing maintainability, security or the ability to hire new talent. One example of this philosophy is Google's decision to allow it's developers to code in C, Java or Python, depending on which is best suited for the job at hand. Another combination of languages we feel is greater than the sum of its parts is Java, (J)Ruby and Clojure.
Test, test, test
Good test coverage, upwards of 100%, and automated testing, preferably as part of a Continuous Integration process, is a necessity in this day and age. Automated tests give your developers the confidence to make the big changes they need to when the time comes, which allows them to factor out common code, remove dead code and, generally, keep your applications aging gracefully. This will help you extend the shelf life of your applications by avoiding many of the pitfalls that plague most of what we call "legacy" applications. And, of course, good testing increases the reliability and stability of your code and reduces your bug count and the chance of regressions.
Convention over configuration
Thankfully, the reign of the XML configuration file is nearing its conclusion. Developing well-documented conventions and sensible defaults leads to much less overhead when starting new projects and an easier time customizing that configuration later. 'Nough said!
DRY it out
Excellent tooling and powerful and expressive new languages are making it easier than ever to abstract out common code and share it in many different places. There is just no reason at this point to allow the old bug-prone copy-and-paste mentality to exist in your organization. By factoring common code out to a single place, if a bug is found in that code, or an enhancement is requested, you have one piece of code to change and, as importantly, test. It also lessens the chance that you will forget to make the change every place it's required.
Fluencies
We work with a wide range of technologies, and are happy to learn those we haven't had the pleasure of working with. Most recently, our focus has been on Java, Ruby/Rails, Clojure, SQL and AJAX. We also have extensive experience with C/C++ and PL/SQL. That said, the tenets of software development remain the same no matter what the language, platform or process: use the right tool for the job, test early and often and reduce repetition and boilerplate wherever feasible. If you need help getting your application there, we're here.
ÜberThoughts
- Don't follow *me*, follow me/tags/interesting-to-you Saturday, March 27, 2010
- The Advent of Following Wednesday, March 24, 2010
- Short Primer on the Social Web (as defined by FOAF, XFN and WebFinger) Wednesday, March 24, 2010
- Clojure Ant Tasks Wednesday, August 26, 2009
- Project Euler in Clojure - Problem 2 Thursday, December 4, 2008
- Project Euler in Clojure - Problem 1 Monday, December 1, 2008
- Great Quotes Thursday, November 8, 2007