I’ve been coding for quite some time now. I’ve either written, co-written, or designed well over 200 corporate level applications using various programming levels. Of course, they weren’t all perfect. In fact, I don’t think any of them were perfect. Put the point is, I’ve been around the block a few times, and I know a thing or two about what works and what doesn’t work. Additionally, I’ve gotten very bored of writing the same chunk of code over and over again. We need a class that connects to a database and allows us to add a record, remove a record, or update a record. Yes, yes. I’ve done this before.
So it isn’t that I can’t code. Or even that I won’t code. It’s that I don’t enjoy it. I’d rather design, work on the interesting parts, and correct mistakes made in the coding of the boring parts by other people. Of course, if I’m working alone, that isn’t an option, because I have to do everything. But, in many cases, I have an opportunity to work in a group. Yet, without fail, when working in a group, we’ll come to a point where the group either doesn’t understand how to proceed, or they are afraid to get it wrong.
Now, in most cases, the group could have done the project on their own, entirely. However, they would have made the same mistakes I’ve made in the past, leading to a less flexible, less usable application in the end. So, when I jump on to the project, I help them code, while at the same time, making suggestions on how to improve the entire process. Generally, my improvements are regarded as “good”. However, the other coders lack the understanding to continue coding. And despite my explanations, pictures, encouragement, and corrections, they don’t budge.
So, in the end, I’m the one who ends up coding most of the boring parts, and all of the hard parts, and, at the same time designing most of the application. It almost sounds like I’m coding it myself, doesn’t it? The only difference is, now I have to code around features the other think they need, or database constraints that they refuse to change. Additionally, the other coders claim that certain parts need to be done by certain dates so that they can use those parts for some other project. And when that part does get done, and they do use it, then they almost always complain if we don’t maintain backwards compatibility with that portion of the code, because they don’t want to alter the work they’ve done using this piece of code in that other project. I would have been better off working alone.
I’ve been told many times by many people that I explain myself very well; that I’m a great teacher, who speaks simply enough that I can be understood and yet complex enough to keep the information interesting. Yet I can’t help but feel that I am failing when I find myself unable to communicate, what seems to me to be, simple ideas to a group of, at least, reasonably competent programmers enough that they are willing to take a stab at coding it. I’m not expecting them to get it exactly the way I envisioned it — just close.
This isn’t an isolated event. This has happened time and time again.
So what do I do? Stop sharing, suck it up, and code everything myself, under my own set of requirements, with no outside help? Continue working within a group that, in the end, will contribute very little, and yet increase the requirements, superficially, extending development time and making the work even more boring and tedious? Or just give up all together?