In my career i have mentored many programmer from freshers to architect level. Some of the thing that I believe if anyone cultivate will made them great programmer.
One best tools is develop PDP. PDP is nothing but Program Development Plan. Each person should start writing PDP before actually start coding.
PDP Consist of below sections.
- Write Requirement in your own words and validate it: Please put the program requirement in your own words. This is very helpful in multiple way. First, as you are writing it in your words it ensure that you have understood it in details. Once it is written please validate with the person who has given it. Go to him and ask him that whatever you have written in your own words is what he wanted to achieve using the program you are going to write. This will identify if there is any gap in communication or perception. Principle is simple Garbage In Garbage Out. If you don’t understand the requirement properly than how can you say you will write perfect code. So always insist on writing requirement in our words as per you understanding and validate it before you start writing code. This will help us to reduce lot of rework and complete coding of assigned task on time on predicted time.
- Identify if there is any dependencies: Before you start just make sure you have everything you need to start coding. You may be need certain database connection, certain input files to name a few. You might be needing access to particular server or specific tools to be install like postman. Or you many be needing HTML to be ready before you start scripting. Once you are fully aware what you need to start coding, what you already have and what you don’t have. Might be you will be depend on someone to provide missing things. Please note it down and request it upfront. You can either reach out to your scrum master/leader/project manager or directly yourself to the concern person. It is always good to make request will in advance to avoid waiting time. This will also give other person some time window to resolve your dependencies.
- Document if you are making any assumptions : Most of the time we are making assumptions either consciously or unconsciously. Making assumption is fair and its way of life. While we are coding we certainly make assumption and move ahead. Few example of assumptions are listed below. All this assumption is fair but need to be shared with the person/team whom you are working. That assumption should be agreed and well accepted by team or your leader. This will help you to expose upfront limitation of your code if there is any and get buy in from respective person. If your assumption is not accepted don’t worry you have still not started the coding. You can go ahead and correct either your pre-impremnetation plan. At the same time this will save you from lot of fixes at last moment and complete your program on time.
- File will be coma separated format and available in input folder.
- At least one record will be returned.
- Images size will be less than 1 mb.
- Write Pre-Implementation Plan: Pre-implementation plan is nothing but something like details steps or description of your program. It can be described in pseudo code and provide all essential details like which file you are modifying. What function you are changing. What database table you are updating, How will function will be called. This details pun on paper will work as your engineering drawing. You now start visualizing your code and solution in details. Putting them on pepper can help you optimize your coding. You can identify if there is anything you can reuse? How can you reduce number of call to particular function? How can you refactor one big function into multiple and manageable ones? What is purpose of variable or properties and what is the best practice you can use? Spending enough time on planing is very essential to come out with great program which is bug free, optimize and complete on time.
- How will you test your code. Write essential unit tests. Writing a program pre-implementation and coding is not enough. You should also make sure how will you ensure that the program you have written is behaving the way you want. This requires you should write essential test case to make sure all the critical execution path is covered. You have now pre-implementation plan in your hand help you think better that what can go wrong and checking those critical points of input and output is easy for you. Unit testing each programmer do but consciously writing unit test that best suite your coding style and requirement as well your proficiency level help you create a bug free code.
Write PDP. Share it with you leader if any or experienced one in your team. Go and discuss with them for few minutes and understand their perspective as well. This will open up new opportunity to think and give you chance to learn best practices and better way to do the same thing.
I have provided this tips on whole of my career and observed that it works. Please share you comments.