Feature Toggles (Feature Switches or Feature Flags) vs Feature Branches

Feature Branches

If you are using branches, you are not doing Continuous Integration/Deployment/Delivery!

You might have great Code Coverage with unit tests, you might be doing TDD, you might have functional and integrations tests written in BDD format and you might run all of them on every commit to the repository. However, if you are having branches, integration is delayed until they are merged and that means that there is no continuous integration.
Continue reading

REST API with JSON

What is REST API?

REST stands for Representational State Transfer. It relies on a stateless, client-server, cacheable communications. In most cases it is used with the HTTP protocol.

RESTful applications use HTTP requests to POST (create), PUT (create and/or update), GET (e.g., make queries), and DELETE data. REST uses HTTP for all four CRUD (Create/Read/Update/Delete) operations.
Continue reading

References and Presentations History

Reference articles

InfoQ: Behaviour-Driven Development: Value through Collaboration
Agile Record (Issue 17): Behaviour-Driven Development: Value through Collaboration

Presentations

Specification by Example at Barcelona Software Craftsmanship (4th of February 2014)
BDD Workshop at Barcelona Software Craftsmanship (4th of March 2014)
Specification by Example at Universitat Politecnica de Barcelona (UPC) (28th of April 2014)
Continuous Integration, Deployment and Delivery at Barcelona Software Craftmenship (2nd of June 2014)
Behavior-Driven Development (BDD): Value Through Collaboration at Agile 2014: Orlando

Moogle Corp: Company you might be working for

Google is one of the biggest, the coolest and the most profitable companies in the world. Probably the main reason for being at the top is their ability to innovate continually. According to Gopi Kallayil there are 9 core rules that drive Google’s innovative culture:

  1. Innovation comes from anywhere
  2. Focus on the user
  3. Aim to be ten times better
  4. Bet on technical insights
  5. Ship and iterate
  6. Give employees 20 percent time
  7. Default to open processes
  8. Fail well
  9. Have a mission that matters

Continue reading

BDD (Behavior-Driven Development): Missing Piece in the Continuous Integration Puzzle

Behavior-Driven Development (BDD) is a process or it can be a tool. In many cases, BDD is both. However, it should not be a goal in itself. The goal of software development is to deliver quality as fast and as cheap as possible. The only real measure of quality is whether it fulfills user needs in a reliable manner. The best way we can take to accomplish that goal is through continuous integration, deployment and delivery. For the sake of this article I will ignore the differences between those three and refer to all of them as continuous integration or CI.
Continue reading

Server vs client side rendering (AngularJS vs server side MVC)

There’s a lot of discussion related to server vs client side application rendering. While there is no “one choice fits all” solution, I’ll try to argue in favor of client side (specifically AngularJS) from different points of view. First of them is architecture.

Architecture

Well done architecture has clearly defined separation of concerns (SoS). In most cases minimal high level configuration is:
Continue reading