Developing on the Bleeding Edge

bleeding-edgeDeveloping with bleeding-edge technologies is tempting, but is it worth it? Using the latest languages and frameworks is a scary and exhilarating place to be — changes happen quickly, new patterns emerge and evolve in a handful of hours. Of course, avoiding the bleeding edge is also scary, if you think about it; who wants to write modern, million-dollar applications on technologies that are no longer being actively improved?

The application I’m working on is using EmberJS and Ember Data; they recently updated, and much of it was not backwards compatible. We decided to ride the bleeding edge and begin development of our application using the latest versions of EmberJS and Ember Data.

Why? Because the bleeding edge is a great place to be, but only if you get in the proper mindset.

Dive In

Developing in a constantly-improving technology requires a lot of diving into the source code. Changes can be done quickly enough that patterns differ from the following day. Digging through the source code allows you to understand the underlying framework for your application, in preparation for changes. More often than not, in the open source projects, standard documentation lags behind, and you are left with the code (and hopefully tests) to help guide you. If you do nothing else, read through the code to get an understanding of the tools you are working with.

Give Back

You will find bugs, no question. Bleeding edge software isn’t perfect. Be prepared to give back to the community, either by fixing the bugs or filing bug reports. You might be lucky enough to be able to join the conversation on a bug report already in progress. If you are not fixing the problem, carefully document it with sample code to reproduce the error and give explicit version numbers of the software used. The more information available, the faster the community can address the problem.

Join In

Since you are spelunking into the code and the bug reporting, don’t hesitate to find user groups, IRC channels, or forums where others are actively using the same software. Interacting with the community can lead you to resources to help you understand the software better, plugins and extensions, or even allow you to help shape the roadmap of the software. Interacting with other developers using the same software will also allow you to understand how they implement things, and could also lead to shared problem solving when you face a difficult problem in your code.

Developing on the bleeding edge is not for the faint of heart; it takes extra dedication outside of writing your own applications. In the end, you will grow your knowledge in development practices, your knowledge in the software you are using, and help the community using the same software. If you get a chance to develop with brand new and evolving technology, do it! Just remember that you will need to get your hands dirty and learn and improve the tools as you go.