The development community as a whole is growing in leaps and bounds. We have far more languages, frameworks, libraries, modules, and plugins at our disposal than ever before. The decision making process of choosing the right tool for the task is becoming increasingly difficult. Our toolchain is growing at a blistering pace; we have to be diligent in order to keep up to date.

There's been a drastic increase in the number of developer productivity tools as of late; particularly for frontend developers. These tools come in many shapes or forms, whether they be software, a command line interface, a domain-specific language (DSL), framework, database, etc. Below, I've created an abridged list of some of the top tools (my picks, I can't speak on behalf of everyone). It's quite lengthy, so each section is itself a collapsible accordion.

Popular Development Tools for Polyglots

Hint: Click on a particular topic heading to expand/view it's children.

Frameworks and DSLs

  • Express
    Express is a high performance, high class web development framework for Node.js.

  • Connect
    Connect is a middleware framework for node, shipping with over 18 bundled middleware and a rich selection of 3rd-party middleware.

  • Zend Framework
    Zend Framework is based on simplicity, object-oriented best practices, corporate friendly licensing, and a rigorously tested agile codebase. Zend Framework is focused on building more secure, reliable, and modern Web 2.0 applications & web services, and consuming widely available APIs.

  • Symfony
    Symfony is a full-stack framework, a library of cohesive classes written in PHP. It provides an architecture, components and tools for developers to build complex web applications faster. Choosing symfony allows you to release your applications earlier, host and scale them without problem, and maintain them over time with no surprise.

  • Kohana
    An elegant HMVC PHP5 framework that provides a rich set of components for building web applications.

  • CodeIgniter
    CodeIgniter is a powerful PHP framework with a very small footprint, built for PHP coders who need a simple and elegant toolkit to create full-featured web applications.

  • Ruby on Rails
    Ruby on Rails is an open-source web framework that's optimized for programmer happiness and sustainable productivity. It lets you write beautiful code by favoring convention over configuration.

  • Sinatra
    Sinatra is a DSL for quickly creating web applications in Ruby with minimal effort.

  • Django
    Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design. Django was designed to handle two challenges: the intensive deadlines of a newsroom and the stringent requirements of the experienced Web developers who wrote it. It lets you build high-performing, elegant Web applications quickly.

  • CoffeeScript
    CoffeeScript is a little language that compiles into JavaScript. Underneath all those awkward braces and semicolons, JavaScript has always had a gorgeous object model at its heart. CoffeeScript is an attempt to expose the good parts of JavaScript in a simple way. The code compiles one-to-one into the equivalent JS, and there is no interpretation at runtime.

Traditional Databases (RDBMs)

  • MySQL
    The world's most popular open source database. It is available under the GPL license and is supported by a huge and active community of open source developers. MySQL also released MySQL Cluster, which is a write-scalable, real-time, ACID-compliant transactional database, designed to deliver 99.999% availability. With a distributed, multi-master architecture and no single point of failure, MySQL Cluster scales horizontally on commodity hardware with auto-sharding (partitioning) to serve read and write intensive workloads, accessed via SQL and NoSQL interfaces.

  • PostgreSQL
    PostgreSQL is a powerful, open source object-relational database system. It has more than 15 years of active development and a proven architecture that has earned it a strong reputation for reliability, data integrity, and correctness. It runs on all major operating systems.

  • Oracle 11g
    Oracle Database 11g delivers industry leading performance, scalability, security, and reliability on a choice of clustered or single-servers running Windows, Linux, and UNIX.

  • SQL Server
    Microsoft SQL Server is a cloud-ready information platform that will help organizations unlock breakthrough insights across the organization and quickly build solutions to extend data across on-premises and public cloud, backed by mission critical confidence.

  • SQLite
    SQLite is a software library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine. SQLite is the most widely deployed SQL database engine in the world. The source code for SQLite is in the public domain.

NoSQL

  • MongoDB
    MongoDB (from "humongous") is a scalable, high-performance, open source NoSQL database. Written in C++, MongoDB features document-oriented storage, full index support, replication & high availability, auto-sharding, querying, fast in-place updates, and map/reduce.

  • Redis
    Redis is an open source, advanced key-value store. It is often referred to as a data structure server since keys can contain strings, hashes, lists, sets and sorted sets.

  • CouchDB
    Apache CouchDB is a document-oriented database that can be queried and indexed using JavaScript in a MapReduce fashion. CouchDB also offers incremental replication with bi-directional conflict detection and resolution.

HTML Templating

  • Jade
    Jade is a high performance HTML template engine heavily influenced by Haml and implemented with JavaScript for node. It has implementations written in Node.JS, PHP, Scala, and Python.

  • HAML
    Haml is a markup language that’s used to cleanly and simply describe the HTML of any web document without the use of inline code. Haml functions as a replacement for inline page templating systems such as PHP, ASP, and ERB, the templating language used in most Ruby on Rails applications. However, Haml avoids the need for explicitly coding HTML into the template, because it itself is a description of the HTML, with some code to generate dynamic content.

  • ERB
    ERB provides an easy to use but powerful templating system for Ruby. Using ERB, actual Ruby code can be added to any plain text document for the purposes of generating document information details and/or flow control.

  • SLIM
    Slim is a fast, lightweight template engine for Ruby whose goal is reduce the syntax to the essential parts without becoming cryptic. Slim uses Temple and Tilt. If you want to learn how Slim works, you'll need to study these projects.

Dynamic CSS

  • LESS
    LESS extends CSS with dynamic behavior such as variables, mixins, operations and functions. LESS runs on both the client-side (IE 6+, Webkit, Firefox) and server-side, with Node.js and Rhino.

  • Stylus
    Stylus is expressive, dynamic, and robust CSS for node. It provides an efficient, dynamic, and expressive way to generate CSS. Supporting both an indented syntax and regular CSS style.

  • SASS
    Sass is an extension of CSS3, adding nested rules, variables, mixins, selector inheritance, and more. It’s translated to well-formatted, standard CSS using the command line tool or a web-framework plugin.

JavaScript Template Engines

  • Mustache.JS
    Simple and fast templating tool to generate HTML from JSON data. Mustache is a logic-less template syntax. It can be used for HTML, config files, source code - anything. It works by expanding tags in a template using values provided in a hash or object.

  • EJS
    EJS cleans the HTML out of your JavaScript with client side templates. After EJS gets its rubber gloves on dirty code, you'll feel organized and uncluttered.

  • Handlebars.js
    Handlebars provides the power necessary to let you build semantic templates effectively with no frustration. Mustache templates are compatible with Handlebars, so you can take a Mustache template, import it into Handlebars, and start taking advantage of the extra Handlebars features.

  • pure
    Simple and ultra-fast templating tool to generate HTML from JSON data. The representation and the logic remain totally separated. Works standalone or with dojo, DomAssistant, jQuery, Mootools, Prototype, Sizzle and Sly.

  • JsRender
    Next-generation jQuery Templates which is optimized for high-performance pure string-based rendering, without DOM or jQuery dependency. It integrates with JsViews, to provide interactive data-driven views.

  • JsViews
    Interactive data-driven views, built on top of JsRender templates. JsViews is not yet Beta, and there may be frequent changes to APIs and features in the coming period.

Frontend MVC and Modularization

  • Knockout.JS - Simplify dynamic JavaScript UIs by applying the Model-View-View Model (MVVM) Pattern.

  • Backbone.JS - Backbone.js gives structure to web applications by providing models with key-value binding and custom events, collections with a rich API of enumerable functions, views with declarative event handling, and connects it all to your existing API over a RESTful JSON interface.

JavaScript Utilities

  • jQuery
    jQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development. jQuery is designed to change the way that you write JavaScript.

  • jQuery UI
    jQuery UI provides abstractions for low-level interaction and animation, advanced effects and high-level, themeable widgets, built on top of the jQuery JavaScript Library, that you can use to build highly interactive web applications.

  • Underscore.JS
    Underscore is a utility-belt library for JavaScript that provides a lot of the functional programming support that you would expect in Prototype.js (or Ruby), but without extending any of the built-in JavaScript objects. It's the tie to go along with jQuery's tux, and Backbone.js's suspenders.

  • Ender
    Ender is a full featured package manager for your browser. It allows you to search, install, manage, and compile front-end javascript packages and their dependencies for the web. We like to think of it as NPM's little sister.

  • modernizr
    Modernizr is an open-source JavaScript library that helps you build the next generation of HTML5 and CSS3-powered websites. It gives you finer control over the experience through JavaScript-driven feature detection.

  • Polyfills
    A polyfill represents a JavaScript shim that backports standard API features found in modern browsers to older, dated browsers.

CSS3

  • CSS3 includes all of the tricks and goodies that come along with it. We're talking about animations, gradients, drop shadows, selectors, responsive design via media queries, browser support, etc.

HTML5

  • HTML5 includes a slew of new and improved browser based advances. Canvas and OpenGL, Web Storage, Video, Web Workers, Web Sockets, Geolocation, Browser State Management, etc. These technologies are constantly molding and expanding with each new browser release.

Deployment Tools

  • Capistrano
    Capistrano is a developer tool for deploying web applications. It is typically installed on a workstation, and used to deploy code from your source code management (SCM) to one, or more servers

  • Fabric
    Fabric is a Python (2.5 or higher) library and command-line tool for streamlining the use of SSH for application deployment or systems administration tasks. It provides a basic suite of operations for executing local or remote shell commands (normally or via sudo) and uploading/downloading files, as well as auxiliary functionality such as prompting the running user for input, or aborting execution.

  • Chef
    Chef is an open-source systems integration framework built specifically for automating the cloud. No matter how complex the realities of your business, Chef makes it easy to deploy servers and scale applications throughout your entire infrastructure. Because it combines the fundamental elements of configuration management and service oriented architectures with the full power of Ruby, Chef makes it easy to create an elegant, fully automated infrastructure.

  • Puppet
    Puppet Enterprise 2.0 gives systems administrators the operational agility, efficiency, and insight they need to manage dynamic infrastructure, on-premise or in the cloud.

Continuous Integration Tools

  • Hudson CI
    Hudson monitors executions of repeated jobs, such as building a software project or jobs run by cron. Among those things, current Hudson focuses on the following two jobs: Building/testing software projects continuously and monitoring executions of externally-run jobs.

  • Travis CI
    A hosted continuous integration service for the open source community.

  • Jenkins CI
    Jenkins is an extendable open source continuous integration server. It is the leading open-source continuous integration server. Built with Java, it provides over 400 plugins to support building and testing virtually any project.

  • Bamboo CI
    Continuous integration, continuous deployment and release management.

  • testling
    A cross-browser testing platform that lets you automate away your QA.

  • CruiseControl CI
    CruiseControl is both a continuous integration tool and an extensible framework for creating a custom continuous build process.

  • needle
    Needle is a tool for testing your CSS with Selenium and nose. It checks that CSS renders correctly by taking screenshots of portions of a website and comparing them against known good screenshots. It also provides tools for testing calculated CSS values and the position of HTML elements.

TDD, BDD, Functional Tests, Acceptance Tests, etc.

  • Jasmine
    Jasmine is a behavior-driven development framework for testing your JavaScript code. It does not depend on any other JavaScript frameworks. It does not require a DOM. And it has a clean, obvious syntax so that you can easily write tests.

  • Vows
    Vows provides asynchronous behaviour driven development for Node.JS. It executes your tests in parallel when it makes sense, and sequentially when there are dependencies.

  • Expresso
    Expresso is a JavaScript TDD framework written for Node.JS. Expresso is extremely fast, and is packed with features such as additional assertion methods, code coverage reporting, CI support, and more.

  • Behat
    Behat was inspired by Ruby's Cucumber project and especially its syntax part (Gherkin). It tries to be like Cucumber with input (Feature files) and output (console formatters), but in core, it has been built from the ground on pure php with Symfony2 components.

  • PHPUnit
    PHPUnit is the de-facto standard for unit testing in PHP projects. It provides both a framework that makes the writing of tests easy as well as the functionality to easily run the tests and analyse their results.

  • Cucumber
    Cucumber lets software development teams describe how software should behave in plain text. The text is written in a business-readable domain-specific language and serves as documentation, automated tests and development-aid. It works with Ruby, Java, .NET, Flex or web applications written in any language.

  • RSpec
    Rspec is a testing tool for the Ruby programming language. It provides a behaviour driven development framework for the language, allowing to write application scenarios and test them

  • Selenium
    Selenium automates browsers and is primarily used for automating web applications for testing purposes.

To Increase Productivity, Pick Your Niche

Given the plethora of tools listed above, I would personally recommend that you try to focus your attention on a small subset of competencies. The concept of a jack-of-all-trades-developer is diminishing. Our core skills are forking into distinct roles and disciplines. Companies are now looking for cutting edge frontend developers, backend developers, developers of operations, mobile developers, testing leads, and the list goes on and on...

If you're looking to increase your productivity, you'll likely benefit from becoming a specialist in a few areas above as opposed to a generalist in all. This doesn't mean that you shouldn't be reading up no new technologies and testing the waters. You should instead focus your attention on the tools that will help get the job done efficiently; knowing the trade-offs of each.

Never Stop Learning

Our industry grows at a pace inconceivable in other industries. To be honest, I'm pretty sure that's why most of us are in the field to begin with. We love learning. If you believe that learning a new tool is going to benefit you in the long run and increase productivity, take the short-term hit and go do some research and development. You'll be glad you did later.

gist#/wp-content/themes/skookum/js/jquery.accordion.jsgist#/wp-content/themes/skookum/js/customAccordion.js
gist#