Slogging Through the Mental Turmoil of Writing Web Applications (as a novice)
I guess it’s about time I start a blog
I’m on vacation! It’s nice to have time to reflect on personal things and tackle some demons I’ve been dealing with. One of the biggest is the frustration and turmoil I experience when I’m blocked on being productive because of trailing thoughts and general inexperience. I’ve decided that writing it out is going to be a likely cure for this, kind of like rubber-ducking. So here begins my first blog post (of hopefully many).
I’m sitting in a cafe in Provo, UT thinking about what to do with my future career, and my heart has always been in web application development. Even though I struggle progressing with it, I love the kind of technical problem solving involved and feel that it is truly my passion. I have a lot of ideas that I want to build demos for, but just don’t have the drive when I have too many questions sitting in my head.
Now, I am a complete novice — for background, I know how to hack together a webpage with the basic 3 (html/js/css) and how to use libraries and even have some experience with frameworks like bootstrap and angular. I am a unix guy and am a better IT/server ops guy than I am a web developer. You want to send performance metrics to something like Zabbix? No problem, I’ll crank out some bash scripts.
For example, I want to make my own medium clone or blogging platform, just something basic…integrate D3 later, make it more complex down the road, but where do I begin?
Here are the things that go through my head
Do I start with writing the text editor?
Am I supposed to product plan this so my structure, libraries, etc.. is kosher?
What about all the features I want to include in the editor? Where does it stop? Doesn’t adding stuff later cause refactoring?
What about application structure? I don’t want to keep refactoring (refucktoring) my code for better organization when it comes time to add features.
What framework do I use? Do I need to use MVC?
Do I intend to make this scale? I don’t know. But if I do, then it’s important to have the architecture in place.
Where does authentication come into play? If I wanted to just push to a public webserver and start playing with it, my content would be visible by everyone.
Speaking of authentication, how the hell does that even work? I know it works with JWT, but I’m not totally sure what that is or how it works. It’s going to bother me if I don’t know, but I just want to get up and running right away.
What do I do about security? I’m so junior that I’ll probably make this XSS vulnerable or some stupid shit like that.
How do I know which libraries I want to use if I need to play with so many and understand their strengths and caveats?
Database stuff.. should I use flyway for migrations? Do I even need migrations? What type of database should I even use — postgres,mongo,mysql,nosql…
Do I need redis? WTF even is redis?
What can I do right now to get to where I want?
All of these thoughts and questions rabbit-hole into other questions and ideas that just block me from actually creating and I end up sitting and doing nothing except researching a tiny component that doesn’t help me overall. It’s really discouraging to be bothered with all of the things I don’t know.
If you read through the questions, please let me know which are important to begin and which are trivial. Give me a language and framework to work with and I’ll start my journey of growth and development. My next post will be a step-by-step on what I’m doing to try and get the result I’m looking for. I’m hoping the community will be able to give me hints on the things I find difficult!