4 ms·
A good programmer is someone who can communicate with the problem domain experts and provide an a solution to fit their problem. Someone who understands the lim
by oldandtired 8y ago
A good programmer is someone who can communicate with the problem domain experts and provide an a solution to fit their problem. Someone who understands the limitations of the computing environment and can engineer a solution that is adequate for the problem space problem.
Many who consider themselves programmers produce solution space solutions that just don't get to the core of the problem space problems. This is a function of the simple fact that many programmers never have the opportunity to see what the problem space experts are doing or actually need. This is a real shortcoming in the education of programmers.
We don't have to be subject matter experts in all fields, we just need to become competent in being able to understand the kinds of problems that are being faced by the various subject matter experts that we build systems for.
On the other side of that coin are those who are subject matter experts who think it is easy enough to become competent programmers. What they miss is the essential problem that programming is, itself, a field that requires a subject matter expert. I have come across too many systems that have been developed by the subject matter experts that were just wrong. Wrong in design, wrong in understanding the limitations of the tools being used, wrong in oh so many ways.
To build properly functional and functioning systems requires the cooperation, input and continual communication between those who are subject matter experts facing problem space problems and those who are subject matter experts in computing systems. This is a rare event and so we see the problems in every field with the computing systems that currently exist.
- chrisweekly 8y agoGood points, if a bit verbose. :) Tangent: regarding "problem space vs solution space" issues, I find that many projects suffer needlessly from too much focus on one of these over the other. Learning to balance them isn't easy, but is critically important.
- oldandtired 8y agoIt was one of my former managers/mentors that introduced me to the concepts of problem space vs solution space. As the decades have passed since then, what I have seen is that most computing solutions that have been offered for the problems people have experienced do not really consider what the problem is that is being faced. It takes a lot of effort to actually elucidate what the actual problem is that needs solving. Which is why I have made the comment earlier that programmers need to get out and see what the end user (client/customer/whatever you might want to call them) is actually doing and experiencing. When all you have is some design documents, functional specifications and technical specifications, the actual working environment for the solution is then missing. We need to get out and face the complaints, observations, ire and suggestions of those who use the software we write. Edit: as for verbosity, my mother has made the statement for many decades that, of her children, I was the one who could talk the legs off a cast iron stove. As my sons and daughters, grandsons and granddaughters, nephews and nieces have all had to learn, to shut me up, they have to talk.
- chrisweekly 8y agowrt verbosity: Haha, I'm the same way, as in: "Sorry this [email|message|comment|...] is so long, I didn't have time to write a short one." wrt problem space, yes! In contrast to all the focus on product development and engineering methodologies, somehow customer development generally suffers from a lack of rigor and attention. Ditto marketing -- in the sense of identifying or growing a market for the goods or services on offer.
- chosenbreed 8y ago> Many who consider themselves programmers produce solution space solutions that just don't get to the core of the problem space problems. This is a function of the simple fact that many programmers never have the opportunity to see what the problem space experts are doing or actually need. This is a real shortcoming in the education of programmers. I can't argue with that. I would add that another factor is how the work is structured and presented to the programmers. In many places programmers largely disconnected from any users. The programmers are usually given a set of requirements by a third party who themselves derived it from someone other than a user/consumer. Thus, programmers may end producing lovely programs that don't actually address the needs of users/consumers.