Software Development is one of the most-rewarding & fulfilling Job in the world. I would like to Jot down the Best Developer Practices so that it can help the coding community in forming High-Performance Teams.
Take Away: Distributed Architecture | Clean Code | Less Chaos | High Refactor | High ROI
#1 Be Accurate on Estimates
Estimating the Story points accurately is an Important skill for developers. I have seen that many Scrum Teams are not properly doing the Estimations & Retrospectives so that the Team is spending lot extra hours on development.
Few points of improvement are: Setting 6 hour day, Adding buffer hours, Job Design of separating API-Developer, UI-Developer, Buffering Hours on External Dependencies, Deployment Overheads can improve the Credibility of the team.
#2 Begin with the Distributed in Mind
The world of Monolithic application is completely gone. We are seeing Microservices & Distributed components are racing towards replacing older codes. The advantages are Smaller Teams, Independent Deployments, Individual Scalability etc. These strongly emphasize the need to modularly design the application components.
Another point to note is the Distributed Component should be Self-Health-Check ready. Each component can tell whether it is running correctly or not. We can introduce REST API calls like api/health to validate the health of each component. In this way the Invoker or Application Validator can quickly validate all the underlying distributed component health quickly.
#3 Put Test things First
More the often, I see Developer writing the Code first then the Unit Tests. This often lead to the state that “There are no unit tests!”
In fact, if we adapt TDD (Test Driven Development) we can ensure the Unit Test is written first. Code will definitely follow!
Enforcements CICD team can enforce check-in rules that requires 80% Code Coverage or more.
#4 Think Subscription
Often in the world of Cloud, I have seen more & more applications getting converted into Subscription model. This mainly involves writing an application, test it right with one customer, then replicate the same with multiple customers.
Few design elements which help in improving the Subscription Adaptability are:
- Design Database with GUID Identifiers which are Faster like Integers link | Integers will Fail on Copy/Paste data scenarios involving Foreign Keys
- Design APIs with Client ID passed through HTTP Header | Rather than changing the method parameters
#5 Seek first to Design Then to Refactor
As you know the Lifetime of the Code is mostly undergoing Refactor! Refactor is the element of Software which gives High ROI on the investments. The code should be Refactor Ready.
As an example, an application which is tightly coupled with SQL Server will be difficult to Refactor & Reuse against an Oracle database. We need to use Interface Segregation principle of S.O.L.I.D to enable easier refactoring of the code.
Another example would be Support of Unit Tests. The more number of unit tests are present, the Refactoring will be more easier & controllable. Otherwise we would not know which code will break at later phase of the application.
Overall the product development is a Team Effort. Often times I have seen a Scrum Team is failing due to Dependency on external Folks etc.
Solution: Adding a shared resource into Scrum Team will Accelerate their Performance thereby Improving the Spirit of Team. Synergizing!
#7 Sharpen the Coder
Software Development is one of the Most Rewarding Job! We will start coding & we don’t know when time passed by and End-of-Day has reached.
Following are few aspects which can Sharpen the Coder inside you:
- Map with a Like-minded Coder | This will make the coding world more interesting
- Spend 1 hour daily on learning | Keeping a MVP Target can help you focused on learning & blogging
- Share knowledge 1 hour a week | Sharing gets more focus on your knowledge, question & optimize
- Powerful Hardware | Have a powerful machine – preferably desktop / mechanical keyboard which makes the Coding Life Fun
I hope this will add value to your day-to-day Development activities. Please let me know your comments.
I am creating the Full Book along with DotNetSpark. You can order it here which includes the Real-world 7 examples, technical POCs, design guidelines, unit testing techniques etc. supporting the above facts. This book less than $10 can really save you $ K-Million depending on the size of your software projects.
Plus, bonus you will get a 1-hour webinar/meeting where you can discuss the same with author.