In This post, we will take about What are list of good software practices for developing Scalable, Testable, and Maintainable Software?
- Understanding the requirement and the business. We should ask appropriate questions to resolve requirement ambiguities.
- We should follow good software development practices like Agile with Test Driven Development. Agile methodology development is all about incorporating changes in the software without much pain.
- TDD helps us to achieve agility while software development and it is very good test coverage (End to End and Unit Tests) keeps a developer away from last-minute stress at production deployment time.
- We should automate all non-productive related tasks to deployment.
- Take a software change request only if it really makes sense. If there is no business value addition to the customer then don’t do it.
- Keep refactoring your codebase from time to time and don’t leave any duplicate code inside codebase. Follow DRY (don’t repeat yourself) strictly.
- Adding an automated test case for every new bug found. Adding appropriate test assertions are equally important otherwise it will just reflect on the code coverage without much help to another developer. Document interfaces and reasons instead of implementation.
- Use Profiling Tools to identify bottlenecks of your application. We can use Profiler tool like jvisualVM which bundled in JDK to know the JVM profile of an application, though there are some commercially available easy to use tools available in market, e.g. JProfiler
- We should always use pair programming when bringing someone new up to speed and when tackling particularly tricky problems which are hard to KT (knowledge transfer) because this also leads to smooth landing for the new employees.
- We should use tools to find the duplicates and then refractor to reuse the existing code with better design.
- Work in small steps with frequent feedback and correction to avoid the last-minute surprises (Agile Methodology).
- We should always use a continuous Integration environment for rapid bug-free, coordinated development. Tools like Team City, Jenkins, etc are can be used for Continuous Integration.
- Software development without Fun, Art, and Creativity is boring and will bring depression, so don’t leave learning, be a student for a lifetime.
You May Also Like:
That’s all about the What are list of good software practices for developing Scalable, Testable and Maintainable Software?
If you have any feedback or suggestion please feel free to drop in below comment box.