Choice paralysis. Something we’re all familiar with, whether we recognize it or not. You’re faced with a choice, and when you have too many options it’s possible to freeze up as the brain tries to calculate and make a decision of some kind. It can happen at the grocery store when picking snack brands, arguably the most simple decision possible. No wonder it happens to programmers, especially those of us early in our journey. What language do I learn, what knowledge is most important to learn first, what framework should I try, when am I good enough to look for my first job, and on and on and on.

If you, like me, are still new to the discipline, I hope that together we can look at an example of stepping through one choice, for one component of a project, and can inspire you to boldly go making choices all the time. We will work through deciding on a particular server-side framework to help us build a project.

If you’re a senior developer who hasn’t hesitated on a decision in a while, maybe I can help you capture the beginner’s mind to understand the juniors working with you, and how someone brand new to development in 2020 might make choices around adding something to their stack.

So where does this choice paralysis come from when we are making choices about programming? We get hung up in choice paralysis by not having good criteria to formulate our understanding of a problem. How do you pick something when you don’t know what the result is going to look like, what challenges you’ll face along the way, or what long-term vision you have?

When we code, and when we pick our tools for coding, we are solving problems. Development is entirely about problem-solving, and the successful developers I admire have an amazing capacity to identify a problem, understand the fundamentals of the problem, and apply specific tools with razor precision to solve it. For a truly wonderful example, and if you’re interested in React, this video featuring Dan Abramov showcases how a very skilled developer who is intimately familiar with his tools can not only tackle a problem but sculpt the tool around solving the problem. Very meta.

When we have a lot of gaps in our knowledge (which we do, as juniors) a lot of powerful motivators come into play when we make choices. Honestly, that exact gap is the reason why advertising and marketing exist. Developers form strong opinions and loyalty around a stack they like. Frameworks craft their image and messaging to be flashy and catch your eye (or fail to do so). Familiarity and comfort feel nicer than being uncomfortable.

Say you have your side-hustle project idea already. You know what you want to build, but not the how. Making the “right” choice is hard, given our lack of big-picture knowledge. Thankfully MDN has a great article which includes some advice, but to summarize:

“ Some of the factors that may affect your decision are:

  • Effort to Learn
  • Productivity
  • Performance

…”

The article has some more production-level concerns to address like scaling, caching, and security. If we’re feeling overwhelmed by fundamentals, let alone considering problems at that scale, we should keep our choices narrow to help overcome that choice paralysis.

Considering **Effort to Learn **as the first criteria. What languages are you already familiar with? Depending on what stage of your journey you’re at, perhaps picking a framework in an entirely new language is an appealing prospect!

I’m most familiar with Javascript and want to deepen my experience with it, so Express is a natural choice. Koa and Hapi are two alternatives that show up prominently when I search for Express alternatives. So, Express, Koa, and Hapi will be the three frameworks we compare for our project.

#junior-developer #expressjs #javascript-frameworks #web-development #javascript #programming

Express or… ? How does a junior web dev decide on a framework?
1.35 GEEK