Software Development - Programming

Software Disciplines

Good Programmer

There is no perfect programmer. Every one is learning and continuously improving.
  1. You learn by doing. The only way to get better at programming is to actually program. Programming is not like studying for a test. Only memorizing procedures will not work.
  2. Copying is good and learn how other programmers have solved similar problem.
  3. Learning by yourself is really tough. Discussion and collaborating with other aspiring developers is a better way to learn for most people.
  4. Error messages are part of Programming and learn to accept them during development phase. Patience and perseverance have a magical effect before which difficulties disappear and error messages vanish
  5. Letting problems pile up without checking is a poor strategy. Instead of stacking one problem on top of another, try to solve one at a time.
  6. There’s a BIG difference between a capital letter and a lowercase letter. Undertand subtle differences between similar symbols.
  7. Computers are so complex and there is so much to learn for even experts. So, you’re never going to understand everything.
  8. Rewriting and improving bad code is part of the process.
  9. Algorithms are a step-by-step approach where there is exactly one correct next step. Do it with pen/pencil and paper.
  10. There’s a right way to ask for help. Explain what you want the program to do and what is actually happening. Check if other person has understood, so that he can help.
  11. It’s ok to admit what you don’t know. Don’t pretend to know all. Nobody expects you to know everything right away. The most important thing is understanding that you can figure out the stuff that you don’t know.
  12. Never stop learning. New methods, algorithms and technologies come out all the time
  13. Programming is about using the right tool for the job. There are so many different open source libraries, tools, and frameworks at your disposal. Understand which tool makes sense for each problem that they encounter.

Selecting Programming Staff

  1. Impressive technical skills. Years of experience give him a great foundation in other areas of programming.
  2. Willingness to learn. Interest in following the latest trends and is eager to participate in any continuing education opportunities that are available.
  3. Debugging skills. Creating code is only part of a programmer’s job. A programmer has investigate his/her code and research possible issues until an answer is found.
  4. Work environment match.
  5. Problem-solving skills. A good programmer thrives on finding ways to make something work, despite the odds.
  6. Passion for the work.
  7. Work under stress and tight deadlines. When deadlines are tight and nothing seems to be working, one should be able to handle even the most stressful situations calmly and, most importantly, be able to continue working.
  8. People skills and Teamwork mentality
  9. Smart or shortcut person. One who can find the quickest, most efficient and easy way to do it, saving time and money.
  10. A business perspective.
  11. Ability to plan.
  12. Ability to handle failure or face hurdles/problems.
  13. Willingness to research.
  14. Respect for deadlines and targets.

Suggestions for Improvement

  1. Write lots of code. If you have the passion, you will probably be doing this anyway. Find your own projects to work on. Most of the very good programmers that I know are all working on some of their favourite side projects.
  2. Learn new languages and technology (but not too many). Be familiar with the operating system.
  3. Continue learning. Read a lot of articles and blogs on the latest trends on technology, try out new toys during your spare time, follow communities, attend conferences and add value to the community by writing.
  4. Keep improving your code. Don't sit back when something works. Add documentation. Try to clean the code.
  5. Practice egoless programming. Seek and accept criticism of your code. Seek peer reviews and see these as a way to improve your code.
  6. Doing things that you’re passionate about will automatically help you improve. The best programmers are curious, creative and pick up skills across the board.

Different levels or profiles

A great programmer has nothing to do with age, education, or how much money you make. It’s all in how they think and act; deep understanding of problems and solutions; the way they communicate, the way they conduct themselves; and years of on-the-job experience. The person knows what they’re doing.
Tier I: People like Fred Brooks, Bjarne Stroustrup, and Linus Torvalds.
Tier II: These people are catalysts and mentors and success has just been guaranteed.
Tier III: Gifted programmers who are unafraid of any challenge, and can both do the work and explain their work to others. These people are primarily the people who are perceived to "get things done" or "make it happen" when it comes review time.
Tier IV: The competent rank-and-file programmers. Understands business, and how system works.
Tier V: Starting level with good but unproven skills in a leading organization.

Great developers

Great developers are rare. Their productivity is 3 to 10 times that of an average developer.
  1. Positive attitude. Willing to go the distance to get the job done and bring their best everyday.
  2. A great developer is able to understand problems clearly, break them down into hypotheses and propose solutions in a coherent manner. They understand concepts quickly.
  3. Great developers are highly reliable. They have a strong work ethic. An important skill is the ability to estimate the amount of time needed to complete a task, communicating this and delivering on it. Exceptional developers are great at managing their clients or leaders.
  4. Great developers are usually amazing self-learners. They have the ability to learn new technologies on their own and aren’t intimidated by new technologies.

The Principles of Good Programming

  1. DRY - Don’t repeat yourself - Many programming constructs exist solely for that purpose (e.g. loops, functions, classes, and more). Each significant piece of functionality in a program should be implemented in just one place in the source code.
  2. KISS (Keep it simple, stupid!) - Simplicity (and avoiding complexity) should always be a key goal. - You should try not to add functionality until you need it. Do the simplest thing that could possibly work
  3. Open/Closed Principle - Software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification.
  4. Write Code for the Maintainer - Almost any code that is worth writing is worth maintaining in the future, either by you or by someone else. Code should surprise the reader as little as possible. The means following standard conventions, code should do what the comments and name suggest, and potentially surprising side effects should be avoided as much as possible.
  5. Avoid Premature Optimization - Don’t even think about optimization unless your code is working, but slower than you want.
  6. Code Reuse is Good

Easy things to do

  1. Completing work in Time
  2. Follow rules/instructions
  3. Deliver what is required (minimum requirement)
  4. Always ready to act/do
  5. Work Ethics and Sincere effort
  6. Positive Attitude
  7. Seek help if you do not know/understand
  8. Decline if you are not capable, rather than messing it up
  9. Do extra than expected