Monday, February 28, 2011

I'm excited to announce I recently got a promotion at work! I'm now Pointe Blank Solution's Software Engineering Manager, which basically means I'm in charge of our development team. The line is: responsible for setting technical objectives, development team processes and practices, and fostering a productive and engaging environment. What makes this extremely exciting for me is both the products we are building, and what we are trying to grow into.

We are a fairly small company with 11 developers and 20 people all told, and we're growing. Our focus is on building software that changes the way industries get their work done. We typically partner with a client and build a product much like a consulting firm would. But then we go on to productize that software and sell it to a broader market. We don't do short term contracts and we're not a body shop. If the software isn't going to make a big impact on our clients and our community, we won't build it. Our two main projects at the moment are in justice and health care. Just about the most complicated industries you can imagine, so we have no shortage of interesting challenges to work through, both business and technical.

Our entire organization believes that good code is a competitive advantage. As a result, our development team is dedicated to Acceptance Test Driven Development in Ruby with Cucumber at the feature level, BDD with NUnit at the unit level, and Clean Code practices throughout. And we try to use the latest technologies including ASP.NET MVC 3, C# 4, CSS 3, HTML 5, jQuery, and Ruby. We use code reviews to maintain our high standard of quality and to share knowledge between team members.

We are building infrastructure around maintaining a rapid feedback loop and enabling the Boy Scout Rule. Part of this is a framework of supporting code and tools we call Nails. This includes everything from Continuous Integration, to one click automated deployment tools, to custom code generation tools (and most of that tooling is written in Ruby). For example, a single push to the central code repository automatically builds the source, runs the unit tests, runs the Cucumber tests against a built-from-scratch test database, migrates the beta database, and deploys the beta website. And that's just the build server. We're also building tooling to support the TDD feedback loop. We want developers to be able to focus on building value, not doing tedious configuration work or boilerplate coding.

We believe in passion, craftsmanship, and continuous learning. To further that, we're currently in the process of putting together a meetup. Basically, we're going to take our internal meeting, and open it up to the public. Hopefully I'll have more news about that soon.

We are about a year into most of this, so it is constantly evolving as we learn and keep improving. So, this is a very exciting time at Pointe Blank! I'm writing all this because 1) I'm exciting about it and 2) I think we are a very unusual company, especially in this part of the country, and I want to get the word out. Plus, I kinda just wanted to brag...