Like any good and growing web developer, I have been holding on to my familiar toolchain with an unhealthy fervor, unwilling to reach for a new tool until the comfortable techniques I have honed over the years literally crumble in my hands, committed forever to history textbooks and lessons of warning cited at the beginning of articles decreeing modern best practices. Everything is a nail to my hammer! Admittedly overly sarcastic, there is an aspect of my latest foray into revamping my skillset by learning ReactJS which has struck me with understanding how older developers can be resistant to learning a new technology; it can be a damn nightmare.
I began thinking of ways in which the power of JS could be brought to my existing projects, but struggled with procuring the vision. I instead found the opportunity to build a front-end from scratch for an IoT project I developed (see http://paintmyleds.herokuapp.com)
in JS and chose the MEAN stack (MongoDB, Express.js, AngularJS, Node.js). I liked it for the most part! Perhaps the best aspect of the venture was seeing how SPAs are organized; they really do seem to offer an intuitive option to developers. Sure, there were aspects of the learning process which were rather head-banging-wall frustrating, but it was nothing compared to what lay in store for me once I decided to learn React.
#.933p03cvh), sent to me by a friend which discusses the myriad obscure-sounding tools required to get a simple feature developed. I responded with a sarcastic "yeah, no" meant to mask my insecurity and get him to share in empathizing with me. Unfortunately, he claimed it was a good introduction to the lay of the land, meaning I had to start learning about the dozens of libraries and techniques mentioned in the article. I chose to have a recent assignment (creating a recipe-sharing website) be my surfboard with which I would enter the massive wave of full-blown JS.
As often is the case, I made the mistake of diving into a tutorial which was too advanced for my state of understanding and got blasted by a fire hose which seemed to have the effect of scaring me and putting me into a state of mild depression. In the course of about 20 minutes, I was introduced to React, Babel, Webpack, react-router, React hot-loader, fetch, Redux, Django webpack_loader, and ES6 syntax. Sure, the tutorial was very well-created and provided me with a working prototype, but I became increasingly frantic as I simply typed out yet another configuration file; not knowing its significance, for what tool it was designed, what the tool did, or why the tool was needed. I understood there was a good reason for each tool, but I hated the surface understanding I possessed of so many new ideas. I luckily had an understanding of much of what glued it together (npm, JS in general, and other core aspects) which kept me from the complete drowning. At this stage, I had a delicately working app which seemed to break violently when I made any small change to modify it to my purposes. The error messages were ambiguous and often pointed to a problem far from where the real issue lay--is this a problem with JS in general?? I struggled with understanding the difference between .js and .jsx files, often erroring on trying to return more than one React element and thinking the problem was coming from elsewhere. I consulted many more tutorials throughout the process which led me down the dark path of wild frustration from using out-of-date libraries (again, very very poor error messages), a mis-matched syntax from the ES6 version I had supposedly been using, and the occasional flat-out error in the tutorial which induced spasms of my upper lip from having been frozen in a disgusted irate snarl for such a long period of time. I periodically returned to simpler tutorials, trying to juggle a dozen open tabs at once and spending too much time trying to retrieve a tutorial I had for thought had been committed to memory when I again faced the same problems which originally brought me there.
There are surely many aspects of the learning process which I have blocked from my memory and forgotten to include here. I have luckily waded through the mires long enough to feel I am now more on the "in" side of the process. There are, however, still many aspects I do not understand and I will likely transgress best-practices, but I feel I can now think in React. Now it's time to begin looking at why so many people like the actual library. There must be something good amidst all this, right? :)