“Escaping Developers’ Nightmares”
Speaker: Rustam Mehmandarov
For more blog posts from JavaOne, see the table of contents
Put together code tools and cs to make developer’s paradise.
90s – waterfall, java in notepad/emacs/vim, visual sourcesafe, cvs, javac at command line, MS Access in a shared network folder for defect tracking
now it is rainbows and unicorns – git, real issues tracking
Tweet from here:
YOU ARE IN A LEGACY CODEBASE
> RUN TESTS
YOU HAVE NO TESTS> READ SPEC
YOU HAVE NO SPEC> WRITE FIX
YOU ARE EATEN BY AN ELDER CODE HACK.
Continuous integration/deployment/delivery sold as unicorn or rocketship that will takes to stars.
Code quality
- Code standard – do you have a coding standard? Do you follow it?
- Encodign – If coding in langage other than English, do you have encoding standard? Is checking automated?
- MIME Type – Do you have standard?
- Code Reviews – Do you do? How know code does what supposed to?
Development Tools
- Code Versioning – “Git or even SVN”. Do you have a branching and tagging strategy?
- Complexity, Testing
- Branching
- Static code analysis
- Plugins – ex: Sonar
- IDEs, checks at comits, integrates with unit testing and sonarqube)
- build tool – Jenkins, TeamCity, Bamboo, etc and Maven, Gradle, etc
- Unit, integration, UI, end to end tests
Third party libraries
- Do you track your third party libraries
- Do you have known issues/vulnerablities
- Are they updated? Are they maintained? Are they compatible with each other?
- Are the licenses appropriate
- Are they in Apache Attic? Where projects go to die
- Google OSS Fuzz test
Packaging > Delivery > Deploy
- Automated deployment?
- What environments can you deploy to?
- Are enviornment similar
- Same process to deploy to each environment
- Do QA and Prod use separate physical hardware
- How easy to rebuild from a script
- Do you have monitoring in all environments
Architecture
- Do you support continous deploy? Microservices? Load balancing?
- Code package structure can hurt or help you
Helpful Maven plugins
Assembly, versions, depedency, enforcer surefire, failsafe, sonar, findbugs, pmd
Documentation
- Wiki
- Avoid multiple documentation systems
Collaboration
- Issue tracking Wiki
- Chat
Blog post on bash ools:
https://mehmandarov.com/cmd-tools-for-developers/
My take: Fun comparison. He even drew a unicorn with rainbow hair and a rainbow tail for the “rainbows and unicorns” slide. A lot of things were covered. And if you know you are supposed to do them, definitely a good review/checklist. There were a few stories. I was hoping for more stories or more on how to sell the need for such tools. [Someone asked about how to sell and he said “you just have to explain it and show the value.” I thought how would be in the talk”]