Leaning on the two Ts is a talk on improving code quality, personal practise and developing good habits using tools and techniques.
Attendees of this talk will learn about my experience when learning to use static analysis tools (i.e. SonarQube) and some of its features. In addition also find out how it can be used to improve your code quality and personal practice. A number of tools will also be mentioned and how to include them in your practise.
Powerpoint-like presentation sharing information from a perspective higher than just the use of tools, although no runtime implementation or live coding will be performed. Live examples might be shown depending on time constraints.
The presentation is definitely for intermediate and experienced Java developers, but also beginner developers who would like to know more about code quality and tools that can be of help. Also for those already using static analysis or other tools in anger or just casually. Especially those who would like to know how to use tools as a medium to learn from.
2. @theNeomatrix369
About me
Mani (@theNeomatrix369)
● LJC Associate
● Adopt OpenJDK and JSR (JCP Member)
● blog: http://neomatrix369.wordpress.com
● github: http://github.com/neomatrix369
● bitbucket: https://bitbucket.org/neomatrix369
Avatar: courtesy of Recworks: Dan Smallman @dsrecworks
3. @theNeomatrix369
- I’m only sharing my learning experience - YMMV !
- Experimental yet practical methods
- Learning via validating and verifying
- A silver bullet to solve all problems
- One shirt fits all solution
- Not about any specific product
Disclaimer
4. @theNeomatrix369
Agenda
- How it all started for me...
- First steps to learning to use these tools...
- Inventions
- Observations
- Introspection
- Discoveries
- Conclusion
45. @theNeomatrix369
Do these factors make up
quality ?
developer: knowledge and skills
x
tool: tunability, features & capabilities
x
(environment & team)
49. @theNeomatrix369
Discovery…
(...if you dive deeper…)
its about the practise
and developing good habits
"I'm not a great programmer; I'm just a good programmer with great
habits.” Kent Beck, http://en.wikiquote.org/wiki/Kent_Beck
58. @theNeomatrix369
Let’s change the Java ecosystem, together!
Daniel Bryant @danielbryantuk
Mani Sarkar @theNeomatrix369
With support from the JCP, London Java Community and Java communities worldwide
@adoptajsr
@adoptopenjdk
members@adoptajsr.java.net
adopt-openjdk@googlegroups.com
adoption-discuss@openjdk.java.net
59. @theNeomatrix369
Resources
● SonarQube resources
● SonarQube Nemo project
● Discussions on Sonar on JavaRanche
● Installing SonarQube (formerly Sonar) on MacOsX Mountain Lion
● Using SonarQube on MacOsX Mountain Lion
● SonarGraph (http://www.hello2morrow.com/products/sonargraph)
● Jitwatch: http://github.com/AdoptOpenJDK/jitwatch
● QuickCheck (https://bitbucket.org/blob79/quickcheck)
● Mutation Testing (http://pitest.org/ or http://ortask.com/mutator/)
● Mutability Detector (https://github.com/MutabilityDetector/)
● AssertJ - fluent assertions for Java (plus other fluent libraries)
● Censum (@jclarity product - see http://www.jclarity.com/censum/)
● Profilers: HonestProfiler, mjProf, Eclipse Memory Analyzer (MAT)
● Books: Sonar in Action (http://www.manning.com/papapetrou/), Software
Craftsmanship by Sandro Mancuso, Uncle Bob’s Clean Code
63. @theNeomatrix369
Quality of Music - truth table
Quality of instrument
(material)
How tuned the
instrument is?
Skills & experience of
the performer
Quality of music
(outcome)
Bad Not tuned Not skilled / Skilled Very Bad
Bad Tuned Not skilled / Skilled Bad
Medicore Not tuned Not skilled / Skilled Below Average
Good Tuned / Not tuned Not skilled / Skilled Average
Good Tuned Skilled Good
Very good Tuned Highly skilled Very good
64. @theNeomatrix369
Novice to expert...
In the beginning, learning from past experiences,
building up knowledge and experience with
repetitions, finally excelling with your own efforts...
66. @theNeomatrix369
Layers of quality (contd.)
Continuous Deployment*
Continuous Integration*
See what Dr. Daniel Bryant has to say about the above:
http://slidesha.re/1rKdOdU
http://slidesha.re/VwKDB0
(Devops the TDD approach)