{"id":22,"date":"2024-03-01T04:36:59","date_gmt":"2024-03-01T04:36:59","guid":{"rendered":"https:\/\/blogs.oregonstate.edu\/gunniesack\/?p=22"},"modified":"2024-03-01T04:36:59","modified_gmt":"2024-03-01T04:36:59","slug":"slow-fast","status":"publish","type":"post","link":"https:\/\/blogs.oregonstate.edu\/gunniesack\/2024\/03\/01\/slow-fast\/","title":{"rendered":"Slow == Fast"},"content":{"rendered":"\n<p>My biggest success for this class wasn\u2019t technical. Writing a simple MERN app isn\u2019t a mysterious thing any more than learning to play an instrument. Time and practice. Rushing it will only mess things up. My teammates are more skilled than I am, but I wasn\u2019t doing anyone any favors by trying to match them. But that\u2019s exactly what I was trying to do. And I didn\u2019t know where to start. The result was me trying to eat the whole elephant at once.<\/p>\n\n\n\n<p>My breakthrough was remembering to relax. Once I did that, I started to identify specific paths of research. From there, progress started to come.<\/p>\n\n\n\n<p>Having said that, my most important <em>technical<\/em> breakthrough is not something I\u2019m exactly proud of, but it\u2019s a perfect example of what I\u2019m talking about above. I was working on styling our app. My only experience was some <em>very<\/em> basic CSS, but our MERN app uses the Bootstrap library. At the start, I roughly understood Bootstrap to be a facilitator for styling and that it had some other prebuilt UI features. Separately, I had heard of Sass as a styling tool &#8211; an extension to CSS I guess? I didn\u2019t have time to learn all that though!  My team had decided on Bootstrap so I better get to figuring that out. And if Bootstrap was what I thought it was, the whole point of it should be to help with changing the look of the app. Working on these initial assumptions, I immediately began searching for resources on how to style using Bootstrap.<\/p>\n\n\n\n<p>Now you might be saying, &#8220;just read the documentation.&#8221; I\u2019ll take a quick aside to say that I don\u2019t agree with the RTFM mentality as I\u2019ve typically experienced it. \u201cFMs\u201d are usually exceedingly long, technical, poorly written anyway, and 99% doesn\u2019t apply to what I\u2019m doing at the moment. To be clear, I understand that the actual documentation is usually the best source of information. However, when I want to do one \u201csimple\u201d thing under pressure of a deadline, I look for the executive summary first. The documentation does not know what my immediate problem is, nor when my work is due.  The introductory tutorials are usually too simple and don&#8217;t address my use case.  Getting further into the docs often feels like reading a dictionary in order to learn a language.  At my experience level, it&#8217;s a reference more than a teaching aide. So I figure out a general plan and then use documentation to drill into the details. In short, I need to understand the problem before I start asking questions. Reading documentation from the beginning and then hoping I find what I need in time is&#8230; not helpful.  Documentation does not work independently of time and experience<\/p>\n\n\n\n<p>Obviously, I researched some sub-optimal solutions. I read all about how I should import individual component-level CSS style sheets to override Bootstrap defaults. For one thing, component-level style sheets might be good for scalability and reuse, but I found that it overly complicated implementation for a simple application like ours. A more serious problem was that every style that I applied felt as if I was fighting Bootstrap, not being helped by it. The app looked terrible. I started to think &#8211; does every Bootstrap app look the same? Is the default it? (something that I later learned is an actual complaint about Bootstrap) It all just felt wrong.  It shouldn\u2019t be so awkward. But I kept pushing forward with the approach because I had been making some progress, and I didn\u2019t want to start over entirely.<\/p>\n\n\n\n<p>What I should have done is slow down and back up when I started to see that my approach wasn\u2019t working. When I finally did that, I found other resources that referenced Sass. As you\u2019ll recall, Sass was that other styling tool that we weren\u2019t using. At least that\u2019s what I still thought at this point.  I looked deeper and found out that Bootstrap already uses Sass.  Oops. All my answers were found in the node_modules folder &#8211; a place I had always been (wrongly) warned not to tread. Once I found all the Sass files, I was able to start modifying the styling variables more easily and with better effect. I further learned about live compilation of Sass into CSS in order to avoid modifying the source files. That was one of those \u201cOh, that\u2019s neat\u201d moments. That led to proper import of the CSS in a method that worked for my use case, and eventually how to dynamically change styles in the app using context &#8211; a fun feature with interesting constraints on how I implemented styling. More importantly it taught me to  understand the React context hook which is a key functionality for all of React, not just for a styling feature. And so it goes. One thing to another.<\/p>\n\n\n\n<p>The moral of the story, to quote my my high school football coach, might be \u201cSlow is smooth, and smooth is fast.\u201d In other words, progress is first slow and iterative before it is fast and effective.<\/p>\n\n\n\n<p>Turing my reflection toward the Capstone course itself. Strengths, Weaknesses, Opportunities, Threats:<\/p>\n\n\n\n<p>S &#8211; The biggest strength of this course is that it\u2019s a little taste of what the industry is really about. It\u2019s not an academic course. No major \u201cnew\u201d technical concepts are taught as part of the syllabus (i.e. I already took the WebDev course). This course is about teaching yourself what you need to know to accomplish a broadly defined task in coordination with teammates and to deliver a product to the customer on a deadline. It feels like I should be getting paid for this. I imagine that\u2019s the point.<\/p>\n\n\n\n<p>W &#8211; I would have been put more at ease with a clearer understanding of specific requirements. That&#8217;s not really a weakness.  No one is going to hold your hand in the real world, after all.  It&#8217;s also rare to get perfect instructions. Finally, being given latitude is actually a good thing (if you know what you&#8217;re doing), right? Still, being provided a slightly clearer &#8220;done&#8221; state would have alleviated some stress.<\/p>\n\n\n\n<p>O &#8211; The biggest opportunity for improvement would be to assign projects sooner. I know I could have used every extra day. I also know it\u2019s not so simple to coordinate, and some time does need to be afforded for students to explore the projects. However, if there is any margin at all, it could be applied to providing that time for project work.<\/p>\n\n\n\n<p>T &#8211; I wouldn\u2019t say there are any serious issues. Maybe I should have saved the project assignment timeline issue for this bullet. Time is valuable for a project like this, and one quarter goes fast. Having that first week or two for research and overcoming any start of project confusion would have been nice.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>My biggest success for this class wasn\u2019t technical. Writing a simple MERN app isn\u2019t a mysterious thing any more than learning to play an instrument. Time and practice. Rushing it will only mess things up. My teammates are more skilled than I am, but I wasn\u2019t doing anyone any favors by trying to match them. [&hellip;]<\/p>\n","protected":false},"author":14043,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-22","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/blogs.oregonstate.edu\/gunniesack\/wp-json\/wp\/v2\/posts\/22","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.oregonstate.edu\/gunniesack\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.oregonstate.edu\/gunniesack\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.oregonstate.edu\/gunniesack\/wp-json\/wp\/v2\/users\/14043"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.oregonstate.edu\/gunniesack\/wp-json\/wp\/v2\/comments?post=22"}],"version-history":[{"count":1,"href":"https:\/\/blogs.oregonstate.edu\/gunniesack\/wp-json\/wp\/v2\/posts\/22\/revisions"}],"predecessor-version":[{"id":23,"href":"https:\/\/blogs.oregonstate.edu\/gunniesack\/wp-json\/wp\/v2\/posts\/22\/revisions\/23"}],"wp:attachment":[{"href":"https:\/\/blogs.oregonstate.edu\/gunniesack\/wp-json\/wp\/v2\/media?parent=22"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.oregonstate.edu\/gunniesack\/wp-json\/wp\/v2\/categories?post=22"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.oregonstate.edu\/gunniesack\/wp-json\/wp\/v2\/tags?post=22"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}