In this post I discuss how to be an asset to an organization when you are not a good programmer. First, for the record:
I am a poor programmer. Ask anyone who has worked on group projects with me.
But the key compensation is I am aware I am a poor programmer. I do not try to do anything fancy. I follow some heuristics that keep me productive IMO. I think these heuristics are in fact good for all programmers, but are essential for those of us in the bottom quartile.
- KISS. Always ask first something the extreme programming movement advocates: what is the simplest thing that could possibly work? Try that and if it doesn't work, try the second simplest thing.
- YAGNI. When it comes to features and generality, "You Aint Gonna Need It".
- ALAN. Avoid Learning Anything New. Various languages and environments and tools come and go, and each of them requires learning a new set of facts, practices, and a mentality. And they will probably go away. Only learn something new when forced. In 1990 I learned C++. In 2015 I learned Python. Good enough.
- Make arrays your goto data structure. Always ask "how would a FORTRAN programmer do this?". During the course of your lifetime, you should occasionally use trees, but view them like binge drinking... regular use will damage your liver.
- Never pretend you understand something when you don't, and never bluff. Google first, then ask people for what to read, and finally ask for a tutorial from a colleague. We are all ignorant about almost all things.
- Be aware that most coding advice is bad. Think about whether there is empirical evidence that a given piece of advice is true.
- Avoid linking to other software unless forced. It empirically rarely goes well.
- Try to develop a comfort zone in some area. Mine is geometric C++ code that calls random numbers. Don't try to be an expert in everything or even most things.