I’ve been working on a React and Nodejs project for the last month and here are my thoughts (thread)

1. JavaScript is powerful, but you HAVE TO know it’s idiosyncrasies otherwise it will punch you in the crotch when you least expect it to.
2. npm & yarn are 1000x faster than gradle.

JavaScript devs - stop complaining about how slow it is, you have no idea how good you have it.
3. I miss a solid framework like Rails. Rails is waaaayyyy faster to build out forms over data apps & I’d even argue apis too.

“But rails is slow!”

blah blah blah...

Tell that to Shopify, GitHub, AirBnb, http://Dev.to , and Basecamp and many more. You can tune it.
4. I really like testing with Jest as well as the react testing library.

For the most part, it just works. I could never say that about Android.

Tests run fast, tools are easy to use (cli based) and even full UI tests are a breeze.
5. React hooks are the shit. That and function components. So much more succinct than regular component based ones.
6. Building an app & api at the same time is slow AF. There are a ton of moving parts ... 🥵

However, this exposes what an API really is - a business unit in itself.

A well designed API becomes a business asset. You can then build web, mobile and external integrations.
7. A “full stack dev” is a misnomer.

Yes it’s possible, but it’s hard.

Context switching still takes place all over the place. React code is vastly different than the api code base.

Yes, similar principles apply, but the context switch can kill your productivity.
8. VSCode is actually pretty good. I wish debugging was better, but it works well. Problem is configuring it correctly. I like how lightweight it is, but my project isn’t huge so I’m not sure how it would respond then.

If bad I’d move over to WebStorm (which I also love).
9. Overall, development has been a lot more fun.

I found myself insanely frustrated with Android for many years & while JS has its own frustrations I find it less frustrating than Android for the most part.

Please note, my true love is web dev so I’m biased.
10. I still hold my stance that the web is the ultimate platform. There will always be a need for native apps, but they will be maps/nav, games, hardware integrations, media/graphics apps ... the rest will move to the web one day. The web gets stronger every day.
What would I do differently next time I wrote a similar app?

Personally I’d use rails in the backend. I am having to write so much boilerplate that it’s a complete time sink. Rails comes with so many tools it’s ridiculous. I can be 10x productive.
Being productive early in in a project can often be the life/death of it.

Remember, the majority of software projects fail.

Not saying JS will make your project fail, not at all, but for me, I’d be much faster with Rails for an API. This project is unique though, so JS it is.
What is the api now?
- NodeJS
- ExpressJS
- PostgreSQL
- ObjectionJS & KnexJS
- ... and probably 8,000 other libs inside of /node_modules 😂
You can follow @donnfelker.
Tip: mention @twtextapp on a Twitter thread with the keyword “unroll” to get a link to it.

Latest Threads Unrolled: