Git is a distributed revision control system with an emphasis on speed, data integrity, and support for distributed, non-linear workflows. Git was initially designed and developed by Linus Torvalds for Linux kernel development in 2005, and has since become the most widely adopted version control system for software development.
-
[The Official Git Site](Git homepage) - Offers documentation for all Git commands as well as binary downloads of Git for all supported platforms.
-
Git Tutorial - A step by step Git tutorial covering from the very beginning to more advanced concepts.
-
Git Interactive Tutorial - This is an amazing interactive tutorial where you'll learn Git by actually using it in a simulated web terminal window.
-
Pro Git - This is a book, free and online. It's great whenever you want to use it as a reference or as a starting guide to learn Git.
-
Comparing Workflows - You can use different workflows to collaborate with your team using Git. This page covers some of the most popular workflows: Centralized, Feature Branch, Gitflow, and Forking Workflow.
GitHub is a web-based Git repository hosting service, which offers all of the distributed revision control and source code management functionality of Git as well as adding its own features. Unlike Git, which is strictly a command-line tool, GitHub provides a web-based graphical interface and desktop as well as mobile integration. It also provides access control and several collaboration features such as wikis, task management, and bug tracking and feature requests for every project.
-
GitHub Guides - Several guides on how to use GitHub and all its tools.
-
GitHub CheatSheet in English - Quick reference for common used Git commands and general GitHub usage.
-
Hoja de Referencia de GitHub en Español - Referencia para los comandos de Git más utilizados y detalles generales para el uso de GitHub.
-
Test Driven Development: By Example - This is an amazing book where Kent Beck illustrates how TDD should be done throughout an example. Must read to understand everything related to TDD.
-
Introduction to Test-Driven Development - A quick tutorial about TDD.
-
TDD is not dead - A series of 5 hangout videos featuring Kent Beck, Martin Fowler, and David H. Hansson where they discuss about TDD.
-
TDD Debate - A video where Jim Coplien and Bob Martin debate TDD.
Refactoring is the process of changing a software system in such a way that it does not alter the external behavior of the code yet improves its internal structure.
-
Refactoring: Improving the Design of Existing Code - This is the one stop book for Refactoring. If you read this book, you probably don't need anything else listed below. It is that good.
-
What is Refactoring - Take some time to discover what Refactoring is and isn't. (I know this web page looks very old and unpolished, but the content is amazing.)
-
Refactoring on the Web - If you don't have the book mentioned above, and you are more of a web person, then you'll love this site. It contains a lot of material about Refactoring, including the links listed below for each technique.
-
Code Smells - You can't learn about Refactoring without first knowing what code smells are. Every refactoring technique was created to help mitigate one or several code smells.
-
Code Smells to Refactoring Cheat Sheet - Here is a list of code smells, each one with a corresponding list of refactoring techniques to solve the problem.
As an example, here you have some refactoring techniques that will help you deal with duplicated code:
-
Extract Method - Extract Method is one of the most common refactoring techniques. Look at methods that are too long or look at code that needs a comment to understand its purpose. Then turn that fragment of code into its own method.
-
Extract Class - A class should be a crisp abstraction and handle a few clear responsibilities. As your class grows and becomes too complicated, you want to make sure to extract the functionality into a separate class to keep a well balanced design.
-
Pull Up Field - When subclasses are developed independently, or combined through refactoring, certain fields can end up being duplicated. As soon as you find out, you can generalize them up in the class herarchy.
The Google App Engine Pipeline API connects together complex, time-consuming workflows, including human tasks.
-
GitHub Repository - Java and Python libraries plus source code for both.
-
Pipelines Overview and Getting Started Guide - This is an introduction to App Engine Pipelines from the GitHub's Project Wiki. From here you can get access to specific documentation and examples for Java and Python.
-
Google I/O 2011: Large-scale Data Analysis Using the App Engine Pipeline API - This video introduces the App Engine Pipeline API, how it works, and several scenarios where it's useful.
-
Java Examples - Example code using the App Engine Pipelines API in Java.
-
Python Examples - Example code using the App Engine Pipelines API in Python.
AngularJS is a structural framework for dynamic web apps. It lets you use HTML as your template language and lets you extend HTML's syntax to express your application's components clearly. Angular's data binding and dependency injection eliminate much of the code you would otherwise have to write. And it all happens within the browser, making it an ideal partner with any server technology.
-
AngularJS Fundamentals in 60-ish Minutes - 60-ish Minutes to help break down the Angularjs learning curve. Learn how to get started with the AngularJS framework and some of the key features it provides that simplify SPA development.
-
Angular Basics - A free interactive book, covering directives, modules, services, controllers, routing, and more.
-
Creating Custom AngularJS Directives Part I – The Fundamentals - AngularJS directives can be a bit intimidating the first time you see them. Learn how pieces fit together and you'll find that they're not that bad.
-
Angular Style Guide by John Papa - If you are looking for an opinionated style guide for syntax, conventions, and structuring Angular applications, then step right in.