Saturday, March 28, 2015

Agile India Conference 2015 - Don't test your code

These are notes taken during the Agile Conference 2015. Some of these may be one liner just for pointer. For more details refer to the Agile India 2015 conference details.

- Browser stack for cross browser testing
- Cucumber, Jasmine and Aspect tool is used for testing

This talk is about ensuring all members do development and test. The presenter talked about how he transformed the organization Josh to a successful organization using right method, approach and tools. One day in a week is considered open source day.

Agile India Conference 2015- Tales of (NOT) so successful DEV-OPS

These are notes taken during the Agile Conference 2015. Some of these may be one liner just for pointer. For more details refer to the Agile India 2015 conference details.
This talk talked about some of the above challenges. Some solution worked out -
- Cross functional collaboration - Build empathy and trust.

- Foster win win relationship- Think Dev+ OPS

- Teams using shared practices
- Create a climate of learning.

- Automate the things that are painful.

Agile India Conference 2015- Techniques to speed up build pipeline

Key principles to speed up the build pipeline
- Focus on the bottleneck- pattern : file operations related
- Divide and conquer
- Fail Fast

- Every time not required to build the jar
- Test on smaller but apt data set
- Robocupy/rsync can help in reducing the copy time as it only differncial copy.
- Use SSD instead of HDD.
- Use in memory DB-SoftPerfect Ram disk can carve disk
- Don't initialize the spring application context, it can be shared application context.
- Do CPU profiling.
- java.until.Calendar is horribly slow. Joda date library.
- Ant has fork mode. Keep forkmode=once

- Create parallel jobs
- Distribute task across multiple slaves.

Fail Fast:
- Restructure the build pipeline.
- Prioritize the test- use protest frame work.
- Incremental build vs clean build

Agile India Conference 2015: Test Driven Development of Infrastructure code in Chef

This presentation talks about test driven development of infrastructure as code.
TDD is all about writing test first and then writing the code.
Infrastructure code is code to build the infrastructure. It facilitates devops culture and help continuous delivery.

Shell scripts are not very maintainable. Chef kind of language is a domain specific language which is better maintainable. It uses the underlying package manager of the OS, wherever required.
We need to test whether the installation etc has happened rightly or not. We need to create an enviroment first and also should have a mechanism to test.
Chef works in client server mode.
Chef requires the server and uses workstation to edit the code to be hosted in the server. The client uses the http protocol to connect ot the server. Workstations also bootstraps the chef client in nodes. 
Recipy is like a file that does the basic task like installing a sql.
cookbook is like collection of recipies. It can be a collection of recipies that can be uploaded. Cookbook applies at an component level. Example- For tomcat there will be a cookbook and there can be task that can be put together as recipies in the cookbook.
Runlist is a list of recipe. 

Chef can be used for creating installers of different software for automating the developer workstation environment also.

Test Framework

Writing test:
running from command the test. test fail as there is no code:
write some code in the yml:

Unit test framework- to give quickest feedback
deploying it to the server
Chef Supermarket has list of cookbooks which can be reused.
Chef control panel

Agile India Conference 2015- Agile Infrastructure

This presentation talks about rolling your own platform as a service (PaaS) with Docker.

Presenter feels that the Agile manifesto should be ' Individuals and interactions supported by processes and tools, ' Work software supported by useful +valuable documentation, ' Customer delight via empathetic negotiations, Adapting to change when reality meets our plan'

Infrastructure is a delivery mechanism between code +customers.

Devops- key perspsective of learning, reproducability, recovery, flexibility need to be there.

Agile India Conference 2015- How BDD can Save Agile

This is a talk about BDD. 
Teams face typical problems of predictability, communication,quality. Scrum help in many of these things like self organizing but it does not solve some of the problems of communication and quality. In many they work in silos, BA hand off to Developers, Developers hand off to testers etc.

We can work in small pieces, better collaboration and focus on more technical discipline.

We need to focus on the technical discipline.
BDD Is a tool that facilitates interactions between individuals. 

Explore- Discover-Define-Drive out
BDD operates at the behaviour level whereas TDD Focuses on the low level unit level.
Conversations matter because :
- software is made by people
- Ignorance is the bottlneck
- Everyone has a unique perspective

For each of the story or the set of stories we should ahve discovery workshop where the discussions can be done and business rules can be discussed and questions can be addressed.

Concrete examples:
-make sense to everyone
-it is rooted in the problem domain
- help build ubiquitous language
- provide a shared source of truth
- help you to split stories into small pieces

The bit of TDD that everyone forgets is refactoring. Refactoring is going to keep the product alive. If we dont do refactoring the product will die

Friday, March 27, 2015

Agile India Conference 2015- Agile Architecture - A contradiction in terms?

This is an experience report on Agile Architecture.


The best architectures, requirements and design emerge from self- organizing teams.

Epiphamy- It is essential for the architect to be connected to the code. 

Team was facing problems related to following-

-Information used to be miscommunicated or getting lost. Architect used to work harder. 

-Team friction- Different design values

Epiphany- It was necessary to develop design skills in the developers

Epiphany- Architect should be good leader.

Solution- Team formed scrum team where the architect, developer and all other roles worked together.