Photo by Alex Bunardzic
Ten days ago I posted my thoughts about software development and received a bit of traction (116,000 views, 165 reposts, 91 comments, which is unusual high level of engagement for the content I typically post). Below is the screen capture of my post:
My online activity rarely gets any traction/engagement, so I got kinda curious why would this innocuous little pot all of a sudden garner this much attention? After reading some of the comments, I realized that the trigger word was ‘abstract’. Something about abstract thinking seems to elicit strong opinions.
While some people claimed that software development is not all about abstract thinking, some other people seemed to think that it’s the other way around — software development is 100% about concrete thinking.
It is this latter opinion that got me curious. Why would people think that software development is not about abstract thinking?
Earlier this week I was invited to give a talk about the challenges teams are facing when developing large complex software systems. I titled my talk “How I Learned To Develop Software Like A Bureaucrat”. After I delivered my talk, I started receiving some feedback, and much to my surprise, it appeared that some people just could not grasp what is it that I’m talking about. They started asking me for some concrete examples.
And therein lies the answer to my puzzlement — people don’t seem properly quipped to deal with fundamental abstract concepts unless they are cushioned in trivial, concrete, tangible examples.
That, to me, is a bit concerning. Why is it that so many people cannot deduct their own examples given an abstract principle, or an abstract concept? I thought that’s what the entire education system is all about — to teach children how to take fundamental principles and apply those principle to specific situations.
It is not possible to provide specific concrete examples for every possible situation. That’s exactly why we have invented abstract thinking. To generalize, to simplify, to give everyone the means to go forth and cope with unpredictable situations that life keeps throwing at us.
But no. Part of the current crop of software developers seems to contain a lot of practitioners to whom fundamental abstract principles appear useless. All they are asking us, the educators, is to furnish concrete, specific examples. In a way, I feel like it’s the equivalent of asking the educators/instructors to train the software development students following this formula: “OK, now that you have logged in, first click on this link, then you locate that button over there, you click on it, then you see the tab over there, click on that tab, then click on that other button, and then you’re done!”
I’m afraid we won’t get very far with software developers who expect that level of education/training/instruction.
I wonder about the response you got from writing about people not being capable of abstract thinking. Were the responses angry, and did they try to say the people are capable of it? I find it ironic that software developers are the ones that struggle with this as they are among the most fervent AI supporters. Their inability in this area sort of proves of point of us concerned about too much AI; people must not lose the ability to create, and imagine, and think. It seems only natural that if we turn these over to AI, we will lose the ability to come up with abstract thoughts.