Over the 22 years of my software development career, I have seen many mistakes that developers repeat again and again. I made these mistakes too. I learned from my mistakes.
Here is my top 10 list and more.

1. Missing Documentation
I have seen developers who do not like to write documentation. Obviously, there are tight deadlines and deliverables but it does not take too much time to write about the functionality you are implementing. If you spend one hour for every seven hours of code you write, it will go a long way, and eventually it will save you a lot more time.
OK, let's try to understand this with an example.
In the code sample below, you can see a method called MessySample. I created two ArrayList objects and added some integer and string values to it. Once added, the code simply displays the output.
- private void MessySample()
- {
- ArrayList obj = new ArrayList();
- obj.Add(32);
- obj.Add(21);
- obj.Add(45);
- obj.Add(11);
- obj.Add(89);
- ArrayList obj2 = new ArrayList();
- obj2.Add("Mahesh Chand");
- obj2.Add("Praveen Kumar");
- obj2.Add("Raj Kumar");
- obj2.Add("Dinesh Beniwal");
- int bs = obj2.BinarySearch("Raj Kumar");
- Console.WriteLine(bs);
- foreach (object o in obj2)
- {
- Console.WriteLine(o);
- }
- }
The only problem is, there is no proper documentation. Unless I go through the code, I don't know what this method is doing. Also proper naming conventions and readable variables can help. If another programmer writes code and uses the same name variables, obj1 and obj2, and at some point, you try to find all variable references with the same name, you may end up going through some unwanted code. Here is the same code but documented:
- /// <summary>
- /// This is a MessySample method that shows how we can write messy code
- /// </summary>
- private void MessySample()
- {
- // Create an ArrayList object to store integer items
- ArrayList obj = new ArrayList();
- obj.Add(32);
- obj.Add(21);
- obj.Add(45);
- obj.Add(11);
- obj.Add(89);
- // Create an ArrayList object to store string items
- ArrayList obj2 = new ArrayList();
- obj2.Add("Mahesh Chand");
- obj2.Add("Praveen Kumar");
- obj2.Add("Raj Kumar");
- obj2.Add("Dinesh Beniwal");
- // Apply binary search
- int bs = obj2.BinarySearch("Raj Kumar");
- // Display index on the console
- Console.WriteLine(bs);
- // Send ArrayList items to the console
- foreach (object o in obj2)
- {
- Console.WriteLine(o);
- }
- }
2. Messy Code
Keep it clean. Don't be messy. Writing code is an art. Make it cleaner. Make it pretty. Format it. This part is more about focusing on naming conventions and proper representation of your methods, properties, and variables.
Here is my original code sample. As you can see from the code below, I have two ArrayList objects and the code adds some integer and string values to them.
- private void MessySample()
- {
- ArrayList obj = new ArrayList();
- obj.Add(32);
- obj.Add(21);
- obj.Add(45);
- obj.Add(11);
- obj.Add(89);
- ArrayList obj2 = new ArrayList();
- obj2.Add("Mahesh Chand");
- obj2.Add("Praveen Kumar");
- obj2.Add("Raj Kumar");
- obj2.Add("Dinesh Beniwal");
- int bs = obj2.BinarySearch("Raj Kumar");
- Console.WriteLine(bs);
- foreach (object o in obj2)
- {
- Console.WriteLine(o);
- }
- }

Sourav Kumar DasPosted Nov 13, 2019, 4:04 AM
Nice useful article sir.
Rathpanha SarunPosted Apr 7, 2017, 11:48 PM
I just started my first career like 3 months ago. I am continue developing project from another developer that just left the job. My problem is when my boss came up with something I did not do, I don't know what to say. Do I have to understand everything that the last developer did or just wait until the problem come and look around? To understand everything what the last developer did is hard for me and take time, because I have to work with new feature. Any advices with that?
Suthish NairPosted May 4, 2016, 5:59 AM
Communications, Strategic Thinking, Customer Focus etc.. must have
Amatya AgyeyPosted May 4, 2016, 3:05 AM
I do not do documentation. I know that is important, but its not in my practice. Test Cases is also Iam not maintaining. Hope i will try to practice but it will require time and patience.
Mahesh ChandPosted Jan 25, 2016, 1:40 AM
Thank you all for comments and feedback. I am really interested in learning what mistakes you guys made or other guys made. Sharing your experience helps rest of us. Cheers!
Ajeet MishraPosted Jan 22, 2016, 2:40 AM
nice
Vipin TyagiPosted Jan 21, 2016, 7:28 AM
It is a good article.Every developer/Programmer must follow this.
Prakash TripathiPosted Jan 20, 2016, 11:32 PM
Also regarding point#1, I would say that you may avoid obvious comments and keep it at places where it make sense. Keeping meaningful name of methods and variables is a good strategy to avoid comments at obvious places.
Prakash TripathiPosted Jan 20, 2016, 9:11 PM
Good article sir. Regarding point#14, I would say that seting the right expectations is very important in long run as at times doing 110% is not feasible.
Manas MohapatraPosted Jan 19, 2016, 1:17 PM
Very Informative blog Mahesh Sir.
Anil Kumar MurmuPosted Jan 18, 2016, 7:24 AM
Thank you for listing the most common mistakes done by developer. I do agree i fall into few of the category listed in the article. Hope to focus more on them with the appropriate approach.
Narasimha Reddy ChennupalliPosted Jul 12, 2015, 1:18 PM
Good Article Sir
Leslie McCutcheonPosted Dec 11, 2014, 3:17 AM
I have to disagree with point 1. (Not the concept but the example), That code does not need to be documented but have clear names & separated into components (Its doing too much). With that done it should be readable and understandable enough to get away without documentation. Bad documentation can be worse than no documentation at all, keep it simple, and only document what is not apparent :) @Jitendra Sampathirao Leaving "developer stamps" in code is what source control is for (if used correctly). Leaving comments like that in the code creates noise and if the code undergoes 4/5 change requests (not uncommon for UI components, your screen will be swamped with comments.
Praveen KumarPosted Nov 21, 2014, 5:25 AM
Really! If we follow these ten things only, we could be a stable developer!
knightsPosted Feb 7, 2011, 10:22 AM
Hi Sharrangas, Bugs are vital part of development without which a developer cant grow.Timming is good on one hand and its but rushing for timeline just because someone is responsible for it and missing all the points discussed in this article will never produce fruitful results, in my point of view.Thanks
SharrangasPosted Dec 28, 2010, 11:27 PM
Thanks for sharing the excellent points. One more thing I want to add in to this, Keep up the Timing of Deliverables: The Developers should remember about the timing to complete each task … It’s their responsible also to complete the task on time without bugs :)
Bensyl DomingoPosted Dec 28, 2010, 1:37 AM
Thank you...i will not let this advice go to waste...
Mahesh ChandPosted Dec 27, 2010, 1:19 PM
The only advice I can give you Bensyl is, hard and continous work. Software field changes so rapidly. You can start with C# language. Check out Beginners link on the header of this site's home page. Then you can move to ASP.NET and so on. Good luck!
Bensyl DomingoPosted Dec 27, 2010, 9:11 AM
Im just graduate of IT, and "wow"... i really want to be like Mahesh Chand... Its feel so great of being a software developers like you.. Do you have any suggestions to me where should i start?... I mean, what program should i learn first???... vb.net? C#?, asp.net...etc...etc.... Please need your help...wish you where my mentor...thanks you.
Amit ChoudharyPosted Dec 24, 2010, 2:06 AM
I like the point no. 10.... We had faced bugs migrated to production and not caught in testing.. so its all up to developer to find all bugs and fix them. A buddy approach for testing will be good.
Mahesh ChandPosted Dec 23, 2010, 9:27 AM
Yes! As Jitendra said, add comments with a date and what you have changed/updated/fix in the code. Also if new code breaks anything, you will know what code you changed. If I need to work on existing code, I comment the previous code. Add my comments starts and end with "mcb" with a date so I exactly know where is my code and what date I added it and what problem is fixed.
Jiteendra SampathiraoPosted Dec 23, 2010, 12:55 AM
One more thing is if you are involved in a project that was already developed by some other developers and you need to do some modifications in that page mention about what your code actually do's and your name and date. Every one can easily understand about particulars......
Jiteendra SampathiraoPosted Dec 23, 2010, 12:46 AM
To every developer Domain knowledge is so important. If you are new to one domain(ex: Finance, banking etc) know the Height and width of that domain from your colleagues. It will definitely helps you when you are started coding.
Ibrahim ErsoyPosted Dec 22, 2010, 5:41 PM
Being a social developer cant hurt! Join Meetings,Sessions or Talks to meet some people and enlarge your network.Drink with them and enjoy the moment.Talk about your previous development experiences.Always smile and be happy.It gives positive energy in the area and finally If you have a card,give them.It might return as consulting job :) Then after that day,add them on Social Media Sites(FB,Twitter,Linkedin)
rupali sawantPosted Dec 22, 2010, 1:28 AM
hey vry nice it is
Mahesh ChandPosted Dec 20, 2010, 9:06 AM
Thanks guys! Next in the list are - Top 10 for Architects, Top 10 for testers, Top 10 for BAs, Top 10 for Project Managers, Top 10 for CIO/CTOs :)
Sivaraman DhamodaranPosted Dec 20, 2010, 2:51 AM
Very Nice Mahesh. I definitely work on #6 and#10. Good that My mamanger don't know about it :))
Jean PaulPosted Dec 18, 2010, 2:38 AM
It is really worth. I liked the 1"4. Be Ahead. Give 110%" especially.. because I have seen those developers doing the same are more efficient as well as they gain more knowledge and their future is bright than others. It i like a win-win deal. Also i like the statement "Writing code is an art.". Actually I wanted developers/architects to improve much on that (including me). Because when they talk they will be ambitious about oops and design patterns, but when they code that will be not as good as former.
Mahesh ChandPosted Dec 17, 2010, 2:03 PM
from all of your feedback, added few more points.
Mahesh ChandPosted Dec 17, 2010, 1:51 PM
Yes both Team work and revision controls are good suggestions. I have also noticed this in my career, some guys are really smart coders/developers but they are not good team players. As a company (CTO or CIO), I would rather have a less smart developer but better team player than otherwise. Building a software is all about Team. Also, if you are an expert in an area, sharing with other developer does not harm. It actually adds your value/reputation/respect among them. They respect you more. So don't be afraid to discuss what you know with the team.
knightsPosted Dec 17, 2010, 12:19 PM
Slightly disagree with Sutish,to write better one must see better code, at times people write efficient and clean code.Surely agree not writing code and copying the it never helps discover your style. Mahesh you have brought everyone's attention to an important outline and wouldnt it be cool to rename # 1 to something like Documentation??? as this article enlists the to do's. For # 11, I suggest developers must take into consideration if at all possible to use Version control softwares.
Ibrahim ErsoyPosted Dec 17, 2010, 2:20 AM
Dont forget Team-Work.Sometimes you need to lend hand from fellow developers in the same company.If they have no more work to do,they are willing to help.But of course in the end you will need to buy a coffee or two for them :)
Suthish NairPosted Dec 16, 2010, 1:49 PM
#1 - I sometime miss this part, dont do daily documentations but kept it for weekdays. Sure sometimes i miss some important points. I dont mind sayin this here. :).... Another point better you dont use Google/bing during development cycle. This will kill you, every time doing a copy paste. Do only if you dont find a solution.
Mahesh ChandPosted Dec 16, 2010, 8:18 AM
I agree Subhendu. But you are talking about the architecture of an application. Perhaps, we should have a blog on "Top 10 things every Software Architect should Do".
Mike GoldPosted Dec 14, 2010, 5:42 PM
If only more coders would adhere to point #1 .....
Subhendu DePosted Dec 14, 2010, 12:07 PM
Adding one point in the list. Design your code in a loosely coupled way so that you can test your code in more better way. Use run time polymorphism, Dependency Injection, Inversion Of Control, Abstract Factory pattern. The main point is to maintain "SEPARATION OF CONCERN" principle for your code so that you can unit test each functionality by mock implementation.
Mahesh ChandPosted Dec 14, 2010, 11:09 AM
Please don't call me "Sir". I feel 80 years old :)
Destin JoyPosted Dec 14, 2010, 10:57 AM
Great observation Mahesh Sir. surely need to salute your vast experience in the industry