1) Less knowledge about technology: Developer will create most of the bugs due to there lack of knowledge in technologies. If they are developing systems product, they need to have knowledge about the operating system, programming language they use and the product they are going to build. If they are developing application product, they need to know which problem they are solving and they should be aware of how there components or section of code is going to interact with other code.
2) Lack of interests in learning: Developers will fail to update themselves based on the changes happens in industry, they think that what ever they learnt is enough for coding and end up in doing most unwanted things by arguing about the solution.
3) Problem solving skills: While solving problems developer do not try to look at if there is any better method available to solve a problem, they will just try to give solution based on there current knowledge or solving problem by copy pasting the code from net without even understanding what the whole code is going to do.
4) No co-ordination between developers: No matter how strong your team in coding, if they do not co-ordinate between themselves due to various factors, finally there will communicate less each other and they will code like an independent island and when it comes to integrating all code, problems starts and somehow they will integrate it and make it work. But, they are not sure if that integrated code works properly in all conditions or not. Developers must understand the value of team work.
5) Developers will be not look outside company: Most developers will not try building a technical network outside company for learning more from other experienced people. They do not even participate in other technical forums to interact with other developer’s world wide. They will just try to code what ever stuffs they have given inside company and unaware of changes happens in industry. More they listen to others experience and more they communicate with outside developers they can increase the quality of the code.
6) Not asking right tools: Developer must understand without right tools, they cannot improve the quality of the code. Along with there coding skills, if they get supports from various tools where it can identify many errors during run-time it will be helpful. No right tools means less quality in code. When they need tools, they need to demand from company.
7) Trusting there code too much: Developers often like to believe that they have written perfect code and they will not do all possible tests. If they have different set of conditions, they are supposed to test all conditions, but they will test few and they will just ignore other tests. Due to this type of problem certain problems will popup in other systems like testing system and customers system.
8) Why unit testing: Some developers feel that there code don’t need unit testing when they modify some one line and they will just upload the code to main code base. Instead each and every change they make, they are supposed to run tests in all related code.
9) Adding feature to unknown code: When a new developer wants to add a feature or a fix a bug in old code base, they will not try to understand the code which they are going to touch, blindly they will try to modify and check for output, if they see on there screen, done. They don’t even check that code is going to affect other part of code base.
Technical Lead, Manager and Big Boss Ignorance
1) Less respect for developer: Most of these people do not understand the value of developer. They will treat each developer as a resource and they will try to suck as much as work from these people. Knowledge developer needs respect and freedom to write a better quality of code or else he will leave the company.
2) Pushing developer for unrealistic dead-line: During the development of product, when it comes to giving dead-lines, they will try not consider the feedback of the developer instead they themselves will give half of the time to upper management just to show off that they can do the job in less time and even upper management will be happy till they release the product. Poor upper management people do not have any mechanism to verify the deadline and they will trust the managers. Due to this kind of approach, there will be more pressure on developer and finally they will give some working crap (code might work only in developer PC) to manager. Even the developer know just to code something and fool there manager by giving a crap code, it’s like a fooling each other. This type of dead-line also increases the postponing the deadlines.
3) Not allowing developer to go out to explore stuffs: Companies often do not send there development team for outside seminars, technical discussions, just because they want to save a money on that and in resulting getting crap code and day by day there developers will be in a virtual world which makes them to think that they know everything in world.
4) No magazines, no society membership: Developers needs to have access to all kinds of quality information in the web and also they need to have access to all the technical magazines of the domain which company is working. Even if few people gets interests in reading and trying to applying all these in a work will have definitely advantage.
5) Big boss’s worry only about numbers: Most of the big boss’s are out of touch to understand the value of ‘implementers” ( or developers), they always talk in meeting that “I believe in you developers” etc… all kinds of nice words, in reality most don’t respect developers. This can be due to there past experience may be non-technical. Only a developer can understand another developer in 99% of case. If developer senses this, they will not give there 100% to company.
6) Showing off the power: Often big people will always show off there power on developer and they will be dealing everything in non-transparent way. Most of the technical leads do not know what they are trying to do themselves other then giving ideas to developers which are not possible to implement. Instead of showing off power, they need to understand the developer and also they need to increase there learning constantly. So, Developers can learn from you and then they can try to give better code for you.
7) Not knowing the value of Developer tools: Most of these people do not know the value of good tools. If they provide right tools for developer, they can produce better quality of code. Without knowing the value of these tools, many companies will not provide tools and also as part of there cost cutting results in less quality in product.
8) Making a developer slave: This will not work to get any quality code from developer. Developers will never give there 100% for bad manager. Unfortunately many managers still believe by controlling developer they can get work done. This will not work with developers who got skills to do there job better. Since, most company needs people who are skilled and they can move on easily.
9) Not knowing the value of environment: If company does investment in providing better environment, it makes developers feel better and they will provide better quality of the code.
10) Building Respect: Each and every high level people should build a respect within a company for there skills and there transparency in there decisions and they should not known only by there designation. If developers thinks they are working for people who have skills in doing there job, they feel better and you can get better quality of code.