Passionate vs. Professional Programmer : Part 2 - Ideas
[ Read about the first part of this Passionate vs. Professional Programmer here.]
Again only few came up with ideas while the rest are busy in discussing them.
It would be better to know a thing about the software product in question to understand these suggestions and how they can impact the product. The product is a set of around 20 very complex soft real time applications that integrate with another 5 third party products. Out of them 4 applications are key applications that can greatly impact the overall performance. Applications are written in C/C++ and run on unix platforms.
Here is the list of suggestions(not in any particular order).
Ideas come from passionate people definitely fit to the problem and will have a considerable impact on the overall solution. Unless we look what impact these suggestions can make, and which suggestions took into consideration the current performance and architecture of the product, it is highly impossible to make any comment on any of them. Remember, in an organization a suggestion has to prove not only on technical merit but also on the cost of execution. On the face, all looks good and each may make sense. They are purely professional at this point. But some of them are totally ineffective and useless for the product. In the next part, I will explain which one of them makes an impact for the current product. Then anybody can figure out which are passionate and which are mere professional.
Again only few came up with ideas while the rest are busy in discussing them.
It would be better to know a thing about the software product in question to understand these suggestions and how they can impact the product. The product is a set of around 20 very complex soft real time applications that integrate with another 5 third party products. Out of them 4 applications are key applications that can greatly impact the overall performance. Applications are written in C/C++ and run on unix platforms.
Here is the list of suggestions(not in any particular order).
1. Do line by line code review to identify bottle necks.
2. Initialize uninitialized variables to prevent faults.
3. Remove unused local variables to improve performance.
4. Use of profilers to profile the code under run time with near-real time load and identify the 20% of the code that is executed 80% of the time. This 20% code will be reviewed line by line and optimized.
5. Recommeded use of static and dynamic code analyzers to spot obvious issues and memory leaks. Again use of tools that can predict and report real time issues.
6. Pointed out fundamental issues with the current architecture and IPC(inter process communication) mechanisms. Two new architectures that will not impact any applications but require changes only in basic platform support functions have been proposed. These architectures not only improve the capacity theoretically by around 60% but also improve the reliability and fault tolerance of the system to a greater extent.
7. Remove Goto statements to improve performance.
8. Remove tracing functionality in the build versions.
9. Totally unrelated but possibly give more time to the development team to do more unit testing: using effective load build mechanisms to save time during development phase.
10. create and initialize objects just before use.
11. Redesign key classes to minimize data duplication across them.
12. Use of tools to measure code/scenario coverage to reveal untested parts of the product.
Ideas come from passionate people definitely fit to the problem and will have a considerable impact on the overall solution. Unless we look what impact these suggestions can make, and which suggestions took into consideration the current performance and architecture of the product, it is highly impossible to make any comment on any of them. Remember, in an organization a suggestion has to prove not only on technical merit but also on the cost of execution. On the face, all looks good and each may make sense. They are purely professional at this point. But some of them are totally ineffective and useless for the product. In the next part, I will explain which one of them makes an impact for the current product. Then anybody can figure out which are passionate and which are mere professional.
Comments