A thread of some of the likely most unpopular and unconventional hot takes on software and programming.

All very personal opinions, most derived out of personal preferences, rather than logical/rational reasoning.

I don't necessarily apply all these in practice though.
I don't think doing artificially created puzzles like LeetCode should be involved in early stage learning to code.

Learning to build a website or app first, and coming to algo-gyms later in life is a better approach.

Or else people miss the forest for the trees.
People focus waaay more on "moving the logic from O(N) to O(log n)" for optimisation, when in the real world "each iteration touching the UI thread vs batching UI updates" type of things actually make a dent on performance.
Also vs LeetCode, one more heavily underrated resource is HackAttic

As a good developer you should be able to solve all the challenges on it. In reality, 90% junior devs, and 50% mid level devs would struggle with a bunch of them

Those challenges are literally ur bread & butter
I wouldn't take hiring/appraisal calls based on it, but on a personal level I totally judge developers on having shell and CLI chops.

GUI and mouse bois can surely be good devs too, but the productivity unlock on being nifty with shell is whole different level.
To understand the scope of productivity unlock imagine requiring the bandwidth of a dedicated video editing person and involving man-hours of work, file transfer etc vs someone who can ffmpeg their way into splicing some videos, transcoding them and getting shit done in seconds
Another thing (again I work hard to keep workplace biases in check regarding this) but I have absolutely never ever seen a good dev *NOT* being absolutely pedantic about comments and commit messages. Again <1% people are like this, but it correlates absolutely always.
You might wonder if the greats, the ninja programmers, the 10x engineers, who move mountains, give a shit if whitespaces go around braces or inside them.

And yet, the sharpest folks I know set up a linter in their project before writing their first meaningful line of code.
I'll come to some very opinionated and very personal preferences and inclinations in terms of tech stacks and languages.

I'll go with hottest of all takes. Go is an absolutely abused, mis-intended and dumpster fire language, for of the use cases it is used today.
I want a tiny binary, for a monitoring/logging agent, or a systems tool like docker agent, or kubectl, fantastic, Go (or Rust) is the best language to go for.

I want to make REST APIs, and some DB calls - no worse choices than Go to do that. Even Python and Node are far better
99% of the "concurrency" benefits Go touts is just offloading IO and network into goroutines (which you have to largely manually manage safe concurrency for) - is available out of the box in something like NodeJS via internal I/O APIs, without manually managing safety
Not unsurprisingly, the stack with which beginners create high concurrency web servers best is NodeJS, vs other stacks where beginners either cannot easily achieve concurrency (Python, Rails) or screw up context and memory leaks (Java, Go)
Okay, databases.

MongoDB is a veritable cancer on the face of this earth. Not because it is always bad, there are some places it *might* be good, but my god, the level of marketing and evangelism, has made it the biggest bane of the software world.
99% of info-system software should be just Postgres (and Redis).

Maybe 99.99% is a better estimate.

Except the analytics data and stuff, for which Clickhouse type things are required.
About languages, another thing - learn Java.

I don't use actual Java a lot now a days (Kotlin for both Android and backend), but one thing, in your devleoper career one can never run from is understanding the JVM.
Between Java, Scala, Kotlin and search tools like ElasticSearch and Solr, or for old school data houses using Hadoop, I don't think there are *any* tech companies in the world that do not use Java or something JVM based

The career penalty for not knowing Java is incredibly high
On that note, Java is actually a fairly good language.

A Spring app, packed into a GraalVM image, gives you all the single-binary-ness Go touts, with a way more mature ecosystem (a library for literally everything, all answers on SO), and significantly better dev experience.
Oh, and talking of developer experience, I've totally come to judge folks who do not invest in good IDEs and put effort into setting up their (digital) workspace.

Like, oh man, what productivity 10x you get from Jetbrains IDEs and some of the popular plugins.
Seeing someone with all their keyboard shortcuts setup, doing things like "test this line of code" and debugging with a proper breakpoint debugger, and using all the refactoring features is just 🤌 ASMR
I'll add some frontend hot takes too. Starting off with the most controversial

I feel both Angular and Vue to be better than React. Vue has been going downward and losing the plot since 3.0 though

MVVMs are great for frontend. Pure immutable state functions that emit UI is 👎
It is a mathematician's intellectual maturbation that everything can be output of a function and pure state functions run the world.

Web UIs are not that. They are too interactive, and forcefitting a statemachine to the smallest button press creates very convoluted state mgmt
This one's a personal opinion. I love template based UI design waaaaay over composable things. HTML, XML, mustache syntax for injections, are great.

I don't get the craze for JSX, Flutter, Compose style way of UI building.

This, I get, is how my mind looks at UI. Ymmv.
Going to add some more here. Next up: services

"services" are great. Microservices, serverless, kubernetes type orchestration, auto scale up/down etc are terms I vigilantly run away from

Nginx + node monolith + cloudflare caching GET reqs = easily 1M user throughput on $50/mo
Something like user/auth, analytics, and straight up pure in-out workloads like eg image uploads, NLP workflow to tag data, payments processing, email/SMS sending can for sure be developed as a separately spun up server.

Mostly these do not impact UX latency directly too.
But I still cannot believe how many times I have been consulting on some very early stage startup, hitting "perf" issues on slight scale, and digging down, it always is actually because of the overhead of API gateway, service discovery, queue and worker spin up times etc
Not so well known fact: Read replicas of DB with larger thread pools + simple horizontal scaling with the most basic nginx based loadbalancing usually gives 100~1000x speedup without even optimising DB queries or anything high effort "optimisation".
Microservices and distributed computing just makes things unnecessarily hard.

Some engineers love playing the game in hard mode. But in most companies you have limited respawns available. There are no points of playing hard mode and dying before killing the boss
Remembered another thing regarding comments.

I highly correlate quality engineers mentally with large trails of // TODO: comments left behind.

Every commit is unfinished. Some people just document that shit, some don't.

Again personal bias, but mostly checks out.
Why no continue the violence into Monday too. Let me add some more here - re: API design.

GraphQL is in the same bucket as MongoDB for me. Absolute dumpster fire, over-marketed, over-hyped, and used in 99.99% cases where CRUD-over-REST should have been.
Again, *maybe* some cases where GraphQL is better. (Don't come at me with - "Github API is graphQL", it is the only corner case in the world full of 100s of open APIs in the world)

Largely though, young teams are giving up default caching of GET reqs, and doing in-memory joins
To you frontend folks - just bloody learn talking to CRUD endpoints. Your relationship to the backend is similar to backend's relation to the DB. You have to put in the work

There can't be this magical "single firehose of data that answers whatever I ask"
99% startups using GraphQL will see a 100-1000x perf gain (and might not need horizontal scaling on the API server) if they used REST instead of GraphQL.

So much compute wasted by in-memory joins of those silly Apollo-based controllers. Also 99% GET reqs will be 304 now

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Arnav Gupta 💉💉💉

Arnav Gupta 💉💉💉 Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @championswimmer

Jun 13
When something works "well enough" and most people start using it, it gets *tremendously difficult* to replace. Your delta of efficiency + user delight has to be astronomically high to beat it.

Case in point: Wordpress.
I mean, if you just look at the hacked up PHP plugin ecosystem that exists, or the lame attempts at creating a different frontend (using WP API as headless), or just WP's codebase, it might look like quite a dumpster on fire, but it works, and everyone uses it.
If Wordpress didn't exist today, and someone created a fresh solution to personal blogging websites, it would hardly look like Wordpress, would definitely not be made in PHP.

And there are some absolutely brilliant alternatives like @TryGhost too, for the record.
Read 5 tweets
Jun 6
Often when people discuss "100 unicorns in India" and "2nd largest tech startup hub" etc, the same people often are also talking of how "India hasn't produced a Facebook/Google".

There's a reason to it. There are extremely few *actual* tech-first companies in India.
Yeah, your tech headcount might be the largest, or your SDEs might be paid 90 percentile in the market, or you make have a rockstar exFAANG CTO. None of it necessarily make you truly a "tech first" company though.

How many unicorn sized Indian companies have a tech blog?
How many unicorn sized Indian companies have published open source tools that are actually widely used across the industry? The answer is abysmally close to 0.

Take the example of StatsD
github.com/statsd/statsd
Read 19 tweets
Mar 23
Discovered a very nice grift to run on NFT Discord servers. If you are moderately savvy on building Web3 frontends (web3.js syncing up with Metamask) and Discord bot creation, you can do this and earn 5-6ETH ($15K) easily.

Disclaimer: I am describing how to run a scam.
🧵👇
Generally how an NFT project runs is by first announcing an NFT collection (usually 10k items) will be made. A landing page is made that tells you what all benefits the holders of the NFT will have. Some NFTs give you access to some 'exclusive' things.
Then the project launches a Discord server.

These Discord servers run a well-defined process now. They will have bunch of top .gg bots on them that automate
- levels (that increase more you interact)
- different roles based on other NFTs you hold
- in-game currency
Read 17 tweets
Mar 22
Discord channel for Indian Android devs. To discuss

- gradle build times
- compose vs XML
- how tf Dagger works?
- building a design system library
- correct way to modularise
- common problems of large scale apps

100 likes and I'll make it.
Rather, 100 likes and I'll make a Google form for anyone who wants to join it (so like + turn on notifications for this thread).

Google form because I want to gatekeep it a bit. There are tons of dead groups. Want to make a group of people who are actually interested in talking
Want to make an active group. Small, not too big. Good mix of people who are senior and want to share their experience and younger folks who want to learn.

Active enough, where every weekend some meetups (virtual/real) can happen too.
Read 6 tweets
Feb 26
At Delhi airport to catch a flight to airport, and a couple of startuppy bros behind me discussing how air travel is so cumbersome, and needs to be 'disrupted'.

"Now that I have to fly so much, I just feel it is a hassle. Security check is such a nightmare"
Other guy, obviously, has some tech solutions on his mind.

"It is 2022, how come people still manually see these X Ray scan screens? I am sure some ML or computer vision thing must exist to detect bomb like patterns in these images?"
First guy seems like a product person.

"I think some startup should look to capitalise on this 'convinience arbitrage' (emphasis mine). Like before Zepto, who knew we even want 10 min deliveries? But now I always select 10 min on my Grofers orders"
Read 7 tweets
Feb 25
I posted it yesterday (FB memory from 2015) about my shitpost from 7 years back. As suggested by @iabhi1610, I posted the same shitpost on LinkedIn yesterday to see how well 7yr old shit can be recycled there.

And boy, LinkedIn doesn't disappoint. 2.2k likes in <24hrs.
@iabhi1610 And the comments are an absolute gold mine.
And the whole 'agree' crowd in tow too :P

LinkedIn gave 6 reactions, and people still comment to write "well said" and "agree" and "true". 🤦🏻‍♂️
Read 4 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us on Twitter!

:(