Quality Culture
Mayank Patel
Application Architect - Oildex, a service of Transzap
/Linkedin @maxy_ermayank
(Core Agile) Software Development Best
Practices
Developer Looking For Docs In Legacy
Resolving Technical Debt
Developer looking at Production Logs
6 Stages of Debugging
Sudo rm -rf /
Commenting (Avoid Obvious Comments) &
Documentation
Consistent Formatting
Code Grouping (Avoid empty lines after
every line)
Consistent Naming Scheme
File Naming convention
Function & Module Naming convention
Variable Naming convention
Database Naming
Server Naming
URL Naming
...
com.oildex
DRY Principle (Don't Repeat Yourself)
Avoid Deep Nesting
Limit Line Length
80 - 120 characters is good number to start wrapping
File and Folder Organization
Separation of Code and Data
Read Open Source Code
Rigorous, regular refactoring
Continuous integration
Simple design
Pair programming
Sharing the codebase between all or most
programmers
A single   to which all
programmers adhere
coding standard
A common “war-room” style work area.
Memory management
Error Handling
Log management
Avoid hard coding
Modularity
Code Review & PR Guidelines
PR should have at-least Two reviewer
Pull request template should be used all the time
Handy Tools and Techniques
Debugger
Memory Detector / Pro ler
Putty / Terminal
WinSCP, FileZilla
Always keep adding new tools & techniques in your box.....
Leave the ego behind, Be eager to learn
Technical Forums over the internet
Technical magazines on various IT subjects
Technical Bulletin Boards
Conferences, Trainings and workshops
Latest versions of old tools and packages, languages etc.
Test-first programming (or perhaps Test-
Driven Development)
Testing is the Religion
Common Cases
Tight schedule, no compromise
Changed just a comment, still you have to test it
Changed just a variable name, testing has to be done
If you feel lazy...it's too dangerous
Validates your design
Rapid feedback
Requires more discipline
Celebrate every bug you find
Bugs are your enemies, so you have killed one.
Now your software is having one bug less.
Mistakes are good as long as they are not repeating.
What you learn today prepares you for tomorrow.
Results
Higher Quality
Flexibility
Readability
Maintainability
Predictability
Simplicity
Internal and External Quality are maintained
Well designed application
Testing Levels
Static Code Coverage
CPD: Class design problems, method design problems
CPD: Check code layout and formatting issues
PMD: Unused variables, empty catch blocks, unnecessary object
creation, and so forth
PMD: Finds duplicated code
Cobertura: Calculates the percentage of code accessed by tests
Unit Testing
Each module Individually
testing for business logic
Owner: Developers
Guidelines
Integration Testing
Top Down Integration
Bottom Up Integration
Create, Read, Update, Delete and destroy data
System Testing
Alpha/Beta Testing (Test team and Beta customers)
Acceptance Testing (Performed by customer - Product owners can
as perform well)
Performance Testing (Check to verify architectural criteria meets)
Tools
Unit Test Frameworks: JUnit, ScalaTest, specs2, Scalacheck
Mocking Framework: Mockito, EasyMock
Integration Test Tool: JMeter, Cucumber, Selenium, RestAssured
Automated Build Tool: Maven, Gradle, Sbt, etc.
Static Code Coverage Tools: Cobertura, Checkstyle, PMD,
FindBugs, etc.
Continuous Integration Tool: Jenkins
Data Builders
Security Testing Tools
Reporting
Java Tools
Full Build and Initial testing of feature prior
to pushing any commits
Thank You!

Quality culture