DEV Community

Joshua Lusk
Joshua Lusk

Posted on

Six Months

(Originally Posted to my Blog)

Technology moves fast, and programming is no exception. This often leads to
programmer fatigue, where we feel like we can't keep up with the latest
and greatest, stuck having somewhere between a beginner and intermediate level
of compentency in a given technology, only to have it be superseded by The Next
Big Thingβ„’ before anything more can be gleaned.

This problem affects me specifically by pitting two of my strongest impulses
against each other: my love of building things and my drive towards
"perfection."

Of course, with computers, and especially within the well-traveled field I work
in (web development / SaaS / what have you), everything is far from
perfect. This is not an indictment on the current state of things, but instead a
truth I need to embrace. I'll ellaborate by outlining my current process below:

  1. Have a certain technology pop into my head. This can be from reading an
    article or blog post, a discussion with a co-worker, or just a though that pops
    into my head. At the outset I generally have a rosy feeling about any
    technology - that's the part of me that loves to build things seeing all of the
    possibilities. This used to be by far my favorite part of the process - a), I
    haven't had to do anything yet, and b) I can confuse all the possibilities of
    what I can build with a given tech stack with what I will build in reality,
    given my limited time and resources.

  2. Start the development environment setup for my tech stack du jour. I'm
    actually pretty good at this, for two reasons: instead of actually build
    anything of lasting value, I come back to steps 1 and 2 a lot, usually deleting
    whole cloth whatever progress I've made when something doesn't go my way down
    the line, and my perfectionist tendencies put me on many sidequests to build the
    perfect automated development environment - but again, if I can't order a new
    Macbook, create a user account, and run a single command to setup everything,
    I'm out. No matter how many .macos scripts I tweak, once the
    environment is tarnished (curse you ~/Library folder), all of my motivations
    fade away. I guess I'll just have to wait for Apple to allow me to boot from a
    Docker Image at login. Also - even though I pride myself at being competent at
    this step, the tools I work with being far from perfect can introduce some
    early friction, and if it gets bad enough, the escape hatch might being here in
    step #2.

  3. I've made it past the development setup, meaning I've also made it to the
    last step in my process. This step always ends with me giving up, deleting the
    local repo, deleting the GitHub repo (I've gotten really good at typing full
    repository names), and feeling a mix of annoyance and sheepishness. Something
    along the line somewhere didn't go right when "I thought technology X coupled
    with technology Y stored in ZDB was going to alleviate all my problems."

Well, it didn't, and it never will. So here's what I've decided to do.

Alt Text

I scribbled out 6 rough project "stacks" on my whiteboard, generated in my head
from some of the technologies I am familiar with, as well as some that have
fallen at the hands of my 3-step program above. I then added a list of 6 project
ideas that will map to those stacks, and some other basic notes about how to run
my social media and this blog.

That's it. It may seem odd to take this stack-first, problem-second development
approach, but the fact is I do want to build things and I do want to try out
new technologies I'm interested in. And I figure my best chance at success
given my described weaknesses is to give myself constraints:

One part of my brain says I’m tired of trying to come up with things in this box, but I force myself to do it, because I know something good can come out of it, if I really work inside it…. Telling yourself you have all the time in the world, all the money in the world, all the colors in the palette, anything you want β€” that just kills creativity. --Jack White

At work (since I've never greenfielded a project), I have plenty
of constraints in place, and while I find that working within those constraints
can be as difficult as a setting up a new technology stack, I do have less
open-ended questions to traverse on the way to my solution, which is a great
simplifier, and what I feel I'm generally lacking in my personal projects. Also,
any job you take as a developer (outside of an early stage startup, maybe) is
going to have some constraints already set for you anyway, meaning this approach
is also at least...realistic?

So here's my outline: 6 months, 6 projects. Google said that gives me
a hard deadline of April 19, 2021. I'll also be posting two full blog posts
here a week, as well as shorter musings and tips I pick up along the way
(they'll be categorized under snippets).

I think that's enough for now. I hope to learn a ton, shirk off my analysis
paralyis, and hopefully get a nice online portfolio by the end of it all.

Here's to hoping 🀞.

End of Tweet.

Top comments (0)