Learn to Look Around Corners
letterstoanewdeveloper.com
letterstoanewdeveloper.com
Relational v Document DB. Python v Java. Message bus v RPC. Where on the mono/micro axis to land.
I don't know how to transfer that knowledge to a new dev other than experience and mentorship. As it takes a lot of business domain knowledge and soft skills to anticipate the type of ripples any decision will make. Even the ripples that you intentionally make like, let's crank out this MVP in Rails/Django with the knowledge that we will be rewriting this entire thing three years later so we can get this to market now.
Got it.
I wonder when I'll be done with my initial analysis, so I can finally start building, but I suspect it'll be 3 months from now as I need to evaluate a lot.
But after that, I can strap on my rocket ship and go to the moon with my product.
Oh, nobody wants my product. I guess I should've created a crappy prototype first.
Ah, I see that people want my product with my crappy prototype. Wait, what? We're 1 year down the line still working with our crappy prototype code as a base and now our competitors are building much much faster than us? (You should've gone with Lisp and not C, buddy)
How on earth am I supposed to do this right?!
Oh, there's talk about this team that didn't build anything but just did market research and then started building it [1]. That might be a way to go, but how do you know when you simply talk to people they'll be correct in what they say about their own future behavior? Where they just lucky. I suppose it worked for that company.
Oh wow, Nomad List just started out as a Google Spreadsheet? [2] I guess that's one way to go! If that's applicable to your particular app.
Oh, and this particular game developer does actually show a history of having prototype code and then just updating his development stack and workflow practices, so I guess in some cases it can be done [3].
I guess, I'll just write up a guide of potential actions one could do and see which is applicable to which situation. I'll also talk to some senior devs and ask how they do it.
Man, the real world is complex!
[1] From the book Traction.
[2] Pieter Levels his story: https://levels.io/product-hunt-hacker-news-number-one/
[3]
See the game: https://www.youtube.com/watch?v=HIsCYHpCfVc
Read about his development style: https://www.reddit.com/r/asciicker/comments/d3ca43/whats_goi...
Yes consider the knockon effects, but be sensible and build firebreaks
NoSQL has no specific definition, so no it doesn't necessarily bring anything different.
> the core of every software system is its data.
That doesn't really mean anything. One could also say that the core of every software system is its use cases.
> isolate your code from that choice.
It is very important to isolate code (e.g. business logic) from the specific details of how you persist your data.
And when it is worth the effort.
To be fair to the nosql example in the post, the company in question was an early stage startup. And in those situations available skillset and time to market can and often does outweigh long term flexibility.
Choosing what kind of database to use isn’t really an “implementation detail” as much as it is a “major, foundational architecture decision”. Taking tabular, relational data and putting it in a document DB (which I’d be willing to bet is the most common NoSQL use case) makes about as much sense as taking the same data and putting it into a graph DB. You can make it work, but everybody who does this runs into exactly the same problems over and over again. Perhaps this is a sign of how dysfunctional some technology trends are, but I can’t see it as an indictment of software architecture in general.
Kate also has some videos with the technical details.
An object around the corner will have a minute but detectable effect on the light adjacent the corner.
Yes, this is the same Kate Boumann of black-hole-imaging fame.
https://www.technologyreview.com/s/603314/new-camera-can-see...