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.
Express is a high performance, high class web development framework for Node.js.
Connect is a middleware framework for node, shipping with over 18 bundled middleware and a rich selection of 3rd-party middleware.
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 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.
An elegant HMVC PHP5 framework that provides a rich set of components for building web applications.
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 is a DSL for quickly creating web applications in Ruby with minimal effort.
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.
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 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 Database 11g delivers industry leading performance, scalability, security, and reliability on a choice of clustered or single-servers running Windows, Linux, and UNIX.
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 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.
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 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.
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 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 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.
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 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 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.
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.
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.
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.
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.
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.
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.
- 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 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.
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 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 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 Enterprise 2.0 gives systems administrators the operational agility, efficiency, and insight they need to manage dynamic infrastructure, on-premise or in the cloud.
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.
A hosted continuous integration service for the open source community.
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.
Continuous integration, continuous deployment and release management.
A cross-browser testing platform that lets you automate away your QA.
CruiseControl is both a continuous integration tool and an extensible framework for creating a custom continuous build process.
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.
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.
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 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 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 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 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.