This week I began my latest development project: A Rails-based journal app that Google-authenticated users post to via email. It's a simple enough concept, but my project's significance lies in the fact that I am building it using nothing but knowledge I already possess, and documentation.
That's right: No tutorials.
Tutorials are the initial lifeblood of every self- or bootcamp-taught developer. We bask in the security of being told what to do, when and how to do it. Though we are exposed to new tools, utilities, frameworks, and libraries at every single lesson, their bombardment is very bearable because the tutorial will tell us how to sort through them all. The tutorial gives us victory over concepts that otherwise would overwhelm us to the point of permanent retreat, amidst regretful mutters of "why the &%!$ did I think I could become a developer?"
During The Firehose Project, I remember how much our lessons (read: tutorials) bolstered my sense of self-efficacy. Granted, with each successive module, my bootcamp gradually transferred the reins of the development process into our hands. If we were led through user authentication using the Devise gem in the last app, then we were expected to implement the gem independently in this app. This approach certainly helped, but it still felt familiar - we still had the option of running into our parent's arms as it were, when things got too confusing.
However, the benefits of dev tutorials can quickly become the bane of the growing developer. The biggest drawback I discovered from being tutorial-fed is the false sense of ability that they can confer. Tutorials can make us feel as though we are the ones actually conceptualizing and generating our app's code, and to a certain extent, we are - as much as we can say a toddler on a 3-wheeler is riding a bike. Which is why, when I decided to build my client-facing journal app, I chose to do it without any tutorials, walkthroughs or YouTube videos. If I come across a gem or SaaS that looks useful, I consult its documentation (or general-worded StackExchange comments) for information on how to implement it.
Because I need to know what I actually know.
I need to know how to find resources to teach myself what I do not know.
I need to chew through those resources without being told beforehand which parts will give me what I need.
I need to take my training wheels off.
I've already discovered some things: Not all documentation is created equal. Some are downright atrocious - sparse, perfunctory paragraphs with all the qualities of an afterthought. Oh, how I appreciate documentation that is so obviously written by people who have experienced the frustrations and difficulties of the features they are writing about, and clearly wish to spare their successors the same. I've discovered that conceptualizing an application from scratch is. not. easy. There are several aspects to consider: Which features would best serve the user, and how will these features interact? How complex is too complex? How will you protect your users' data and information?
My development process is slower, because I'm learning to balance first, then coordinate my pedaling, before I can start picking up speed. My head hurts after poring over documentation for hours, taking the paragraphs apart and figuring out how to apply what I am reading to my particular problem. The frustration of persistent errors in my console can sometimes crush my motivation. How I miss the reassurance of the tutorial - the very reason why I cannot - will not - keep using them.
My next few posts will document my experience developing my journal app, and the lessons I learn. I'm certainly looking forward to it, and I hope you will read along! 🤗