written by owen on 2019-Jun-21.
Personally I always assume that people discussing programming at a high level are not laity/beginners and as such are well versed in patterns, anti-patterns, multiple languages, and systems. So I tend to move beyond the standard talking points and opinions that you would normally bring up when talking to noobs/begginers/consumers. What is the sense of being permanently stuck participating in idle talk? Or are we apart of a masquerade ball? At some point in order to get things done you have to move to a place of understanding/expertise.
There is a whole world of discussion to be had outside of noobie central for example look at this issue;
github.com/reactjs/rfcs/issues/102 (5 months ago relative to this writing)
Now this person is not battling with a "choice" of tool or lack of knowledge. This person has already gone down the rabbit hole and chosen a tool (REACT) and at the same time cares enough about it to post an issue on github. This is good but this person is battling a problem which is inherent with the platform - they have hit a wall - they cannot climb over themselves.
Zoom in on this comment:
"The if statment (1) and (2) are the way that I use to avoid the unnecessary render. Yes, two state variables are fine for now. If I have 10 state variables, then I have to put 10 if statements to perform a pre-check before calling setX. If so, it will be odd. Or did I do something wrong? And what is the best practice?"
The comment reveals some interesting points;
It is your fault
This person is obviously hacking around problems with the framework/library. This person assumes that THEY are doing something wrong. That THEY are the problem. Also this person is actively and constantly seeking a "best practice" solution because somewhere in their formative years they were taught that there is a best practice solution for EVERYTHING and that if a problem arises then clearly THEY THEMSELVES are at fault for being lame OR chosing the wrong approach OR not reading enough documentation or missing some line in the tutorial. This is a modern day problem in programming because we lure people in with simple tutorials with the promise of high salaries but seldom discuss difficult edge cases. The future AI/robot overlords will still enslave programmers too!
In the past when you introduced someone to a tool (or took on an apprentice) you had to literally let them live with you until they were able to go off on their own. They would watch everything you do and try to mimic your entire process. Eventually if the student were passionate enough they would eventually surpass the master or become some kind of evil mad scientist. In modern programming we take the "hands off approach" - everything starts and ends at the lowest common denominator - we link you to a tutorial then let you sink or swim. What we end up with are noobs that never become experts or evil overlords or anything. They just exist, trapped in a sort of noob-purgatory.
No one really wants to deal with it
Anyway back to the issue at hand. This issue was posted 5 months ago. why has no one responded? Why doesnt someone jump in and say stuff like; "some tools are better for different tasks" or "you are trying to do something which is not supported" or "this edge case is not fixable" or "do this instead". Why does it fall on deaf ears?
It would seem to me that no one wants to tackle the hard problems. The difficult-physics breaking walls. This is probably why we still do not have flying cars or floating cities.
This person probably started in a intro course and has now reached a point where they are stuck at a wall. A wall which they will probably be stuck at for 6-7 months until they give up on programming or switch to another language or framework and the process starts all over again. I assume that the people who teach these intro course do not care about these "walls" that their students run up against because the internet is simply a tutorial machine and bringing more people into programming just to live and let die is probably worse than never having taught them anything in the first place.
Hopefully someone will come up with a solution to the above issue and be able to explain it and everything turns out right. And in that way the programmer is set free and learns to fly. How can we bring new programmers up to a high level of expertise? Instead of having them be bottom feeders, forever struggling to get grip on technology.