3. What benefits we can get by using version control?
What should we keep in version control?
How version control can help in the feedback loop?
Version Control
4. Peer Reviews
Code review is systematic examination
(sometimes referred to as peer review) of
computer source code. It is intended to find
mistakes overlooked in software development,
improving the overall quality of software.
https://www.codeproject.com/Articles/1156196/Code-Review-Checklist
5. https://developer.atlassian.com/blog/2015/05/try-pair-programming/
Pair Programming
A technical practice in which two programmers
work together at one workstation (one screen,
keyboard, and mouse among the pair). One
person, the driver, writes code while the other
person, the observer or navigator, reviews each
line of code as it is typed in. The two
programmers switch roles frequently.
6. https://martinfowler.com/bliki/UnitTest.html
Unit Testing
A unit test is to test one unit of work.
Following are the characteristic of good unit
test,
● Isolated from the other code
● Isolated from the other unit tests
● Targeted
● Mock Dependencies
● Repeatable
7. 3 Laws of TDD
1. You are not allowed to write any production code
unless it is to make a failing unit test pass.
1. You are not allowed to write any more of a unit test
than is sufficient to fail; and compilation failures are
failures.
1. You are not allowed to write any more production code
than is sufficient to pass the one failing unit test.
Test Driven Development
https://manojjaggavarapu.files.wordpress.com
8. Behavior Driven Development
Behavior-driven development (BDD) is a
software development methodology in which an
application is specified and designed by
describing how its behavior should appear to an
outside observer.
BDD encourages collaboration between
developers, QA and non-technical or business
participants in a software project.
9. The use of special software (separate from the
software being tested) to control the execution of
tests and the comparison of actual outcomes
with predicted outcomes.
Acceptance Test Automation
UI tests
Integration tests
Unit tests
Testing Pyramid
10. Continuous Integration
● All developers run private builds on their own workstations before
committing their code to the version control.
● repository to ensure that their changes don’t break the integration build.
● Developers commit their code to a version control repository at least once a
day.
● Integration builds occur several times a day on a separate build machine.
● 100% of tests must pass for every build.
11. CI Server and CI Practices
A CI server runs an integration build wherever a change is
committed to the version control repository. The CI servers will pull out latest
changes and run build scripts to produce new build/product.
CI Practices
● Commit code frequently
● Don’t Commit broken code
● Fix broken build asap
● Write automated tests
● All tests must pass
● Run private build
● Avoid getting broken
12. ● Continuous delivery (CD) is a software engineering approach in which teams produce
software in short cycles, ensuring that the software can be reliably released at any
time.
● It aims at building, testing, and releasing software faster and more frequently.
● The approach helps reduce the cost, time, and risk of delivering changes by allowing
for more incremental updates to applications in production.
● A straightforward and repeatable deployment process is important for continuous
delivery.
Continuous Delivery
13. Visibility – All aspects of the delivery system
including building, deploying, testing, and
releasing are visible to every member of the team
to promote collaboration.
Feedback – Team members learn of problems as
soon as possible when they occur so that they are
able to fix them as quickly as possible.
Continually deploy – Through a fully automated
process, you can deploy and release any version
of the software to any environment.
Deployment Pipeline
https://en.wikipedia.org/wiki/Continuous_delivery
14. Feature Branching vs Feature Toggle
At first try to figure out which feature are most valuable
Try to resolve dependencies earlier
Get the business ready for upcoming feature
Avoid feature branches as much as possible
Use feature toggle instead of feature branching
Be Agile and reduce lead time and cycle time
15. ● Hardware
● Software
● Servers
● Environment
● Code
● Data
● Databases
● Backups
● Repositories
● VM
● Cloud
● Containers
……… more
Infrastructure and Virtualization
16. Application Monitoring and Alerting
https://www.acronis.com/en-us/blog/posts/web-application-monitoring-basic-framework
17. Analytics, Log Management and
Reporting
http://www.onlinemediamasters.com/google-analytics-custom-dashboard-examples/
First meal of the day is breakfast
Remove fear for collaboration
Build Attitude
Create environment
Benefits in working together
Compare the changes
Merge the changes
Revert the changes
-----------------------------------------
all deployable artifacts, metadata, and other supporting configuration. This includes the new code, all required data (dictionaries, scripts, lookups,
mappings, etc.), all libraries and external assemblies.
-----------------------------------------
While checkout - we will know if our code is breaking some other part
As a code reviewer what you will be looking for?
Driver + Navigator
Helpful in learning
Helpful in less bugs
Pair Programming - Rules
The Driver
The person with "control" of the computer
Does the bulk of the typing
The Navigator
Actively follows along with the driver with comments
Can take over at any time
Generally one unit means of one requirement for one method.
KIS = Keep it simple
Unit testing framework
Specification into test
Don’t Repeat Yourself (DRY)
A CI server runs an integration build wherever a change is
committed to the version control repository. Usually CI server
is configured to check version control repository every few
minutes.
The CI servers will pull out latest changes and run build scripts
to produce new build/product.
Commit code frequently
• Don’t Commit broken code
• Fix broken build asap
• Write automated tests
• All tests must pass
• Run private build
• Avoid getting broken
Usually CI server is configured to check version control repository every few
minutes.
Commit code frequently
Don’t Commit broken code
Fix broken build asap
Write automated tests
All tests must pass
Run private build
Avoid getting broken
Lead Time
Cycle Time
Environment (Development, Staging, Production) / VM / Cloud