10 ms·
"The simpler product makes it much easier to maintain and scale." This is good news for the developers, the product owners and the customers. I still can't un
by tdrdt 5y ago
"The simpler product makes it much easier to maintain and scale."
This is good news for the developers, the product owners and the customers.
I still can't understand why today people choose a (Javascript) stack of build systems, ton of dependencies, and all kinds of exotic tech that is the latest and most hyped. As a developer you need to support this in the future. It might be nice to build today but it will be a nightmare later.
I have seen days go to waste because of Docker misconfigurations, problems with dependency versions, outdated dependencies not available anymore, bugs deep down in an unknown dependencies, and so on. Personally I want to build systems. I don't want to spend my day debugging all kinds of weird problems.
The (old) WhatsApp teams sounds like a great workplace.
- hasperdi 5y agoThese issues that you described can happen with any language, ask any programmer or system engineer with long enough experience they’ll have stories with weird problems. Regardless which language you pick, there will always be these kinds of issues.
- Cthulhu_ 5y ago> These issues that you described can happen with any language While you're not wrong, I do strongly feel it depends on the language and architecture chosen. I'm a Go developer these days, and there's a big mindset to e.g. avoid dependencies, and for those dependencies to avoid including even more dependencies, keeping things fairly lightweight and with a low 'attack surface'. I mean I personally wouldn't mind a stricter type system and native enum support and some other things, but for now, I enjoy how basic it is, whilst avoiding the footguns that C/C++ brings.
- johnfn 5y ago> Personally I want to build systems. Sure. And so do I. Specifically, I don't want to rebuild systems that have already been built for me which I can use as dependencies. And I don't want to spend all my time troubleshooting bugs, either - I'll take a well-maintained repository on GitHub with thousands of users bug-testing it for me over some janky thing some guy on another team threw together a few quarters ago before he quit.
- tdrdt 5y agoHaving dependencies is not bad. But slapping a system together with a ton of dependencies you don't know about is bad. Simple is better in my opinion.
- rjzzleep 5y agoSimple isn't always better. Reusable patterns are. WhatsApp followed pretty standard erlang design patterns. Rails and Django to some extent force a standard pattern, they're not really low dependency systems(although they are compared to most node projects). But that pattern to some extent makes sure that you can hand over the project to the next dev and he'll be able to make sense of it. Somehow node.js has become what PHP used to be. Whatever happened to interoperability? How are there hundreds of queuing system that use redis and rabbitmq under the hood, but you can only process things in python, javascript or ruby? The data structures are considered private. So if you want to process your code in python you have to use the python message queue, if you want to process it in javascript you have to find a node mq. How does that make sense? Want to do business intelligence on your javascript based system now? Gotta write javascript code. Welcome to debugging the same kind of memory leak and processing issues every other queuing system has had to go through.
- netcan 5y agoI agree, but this assumes you actually know what you are building. This isn't usually the case for a startup. I'm sure whatsapp wanted a million users, but they didn't originally know that would happen. If whatsapp later turned out to be about serving fewer users with more features, this becomes a story about premature optimization.
- choeger 5y ago> with thousands of users bug-testing it for me Replace this with: > with thousands of users just like me that once picked it as a dependency and then forgot about the project
- feketegy 5y ago> exotic tech that is the latest and most hyped You answered your own question. Because it's "exotic" and "hyped".
- chinathrow 5y ago> exotic My fast reading brain with not enough caffeine read that as 'toxic'.
- nodejs_rulez_1 5y ago> ...As a developer you need to support this in the future. It might be nice to build today but it will be a nightmare later. But the sort of people choosing a JS stack are quite quick to move on. Make a mess, slap a new achievement on CV and dash.
- paraknight 5y agoI don't agree, but I also find your username ironic. Did you dash?
- croes 5y agoHe speaks from experience
- freeall 5y agoDo we really think Javascript is exotic? Hasn't it proved itself over many years now? That doesn't mean it can't have issues like anything else. And because of the massive scale of the language you'll see a lot of shit. It's a language and ecosystem like anything else - it's what you do with it that matters.
- _Understated_ 5y agoI wouldn't say JavaScript is exotic, it's more to do with what is being done with it. Traditionally it was used to enhance HTML pages with some DOM manipulation but it's now being used for a million other things too. So historically, if your JavaScript code broke your page would still render as it was just html but now there are all sorts of build processes and long chains that use JavaScript to create the html in the first place... I'd consider that the exotic bit. Traditional JS running in the browser manipulating DOM elements is very much a foundational aspect of the web and won't deteriorate with age (with the exception of perhaps deprecated functions in the far-off future) but all these js libraries and tools and build processes with massive dependency-chains are what's being referred to.
- emerongi 5y agoJavaScript has matured massively over the past 10 years. I'm not a Node developer myself, but JS + TS is a very palatable combination to me. I'd pick it over many other languages. 10 years ago I would not have touched JS unless I was forced.
- brigandish 5y ago> I'd pick it over many other languages. I'd be interested to know which ones, because I can't think of one advantage that Javascript has - aside from the ubiquity of browsers. If we're comparing any other aspect of it though, I just don't know what advantage it has (seriously).
- tolgerias 5y ago
- trhoad 5y agoA static React site, an Express backend, and a REST API is hardly exotic
- capableweb 5y agoSeems redundant to have a Express backend + REST API, why can't you just build your REST API on the Express backend? And also, React is complex, hardly anyone seems to know the internals. The API interface might be easy to learn, but "simple" is not something that you should label React with.
- crate_barre 5y agowhy can't you just build your REST API on the Express backend Pretty sure he means to set up the REST api in Express with a few simple routes. JS is not complex, and pretty vanilla choice. It’s what people add on top of it that gives it a bad name. I’ll link to this guy so you can understand: https://kentcdodds.com/blog/how-i-built-a-modern-website-in-2021 https://kentcdodds.com/blog/how-i-built-a-modern-website-in-... ^ This is the problem, not JavaScript.
- Zababa 5y agoI'm not sure I understand why people build websites like that. My theory would be that usually at some point you have to go lower in the stack (learn how Linux/Node/V8 work or stuff like that). You can avoid going lower in the stack, but the complexity has to go somewhere, and that's what we see here.
- BigJono 5y agoYeah and if that's all people used, JS would be the best language ecosystem ever. Too bad I can't even remember the last time I jumped on a project with less than 80 dependencies.
- javchz 5y agoWell, WhatsApp had to support exotic cases like BlackBerry, Symbian OS (Nokia), and Windows Phone. I will say, dealing with JS stacks, seems easy in comparison to mobile fragmentation from back then.
- vadfa 5y agoI don't see how this is related. Server-side you write and expose an API. Then you have 1-3 developers for each platform that write code that consumes that API. Those developers don't need to know anything about the internals of the server.
- snovv_crash 5y agoBut this speaks to good architecture decisions, right? If they tried to make a shared framework that ran the same codebase everywhere and then port it onto different platforms (cough facebook) then you don't get these nice isolated issues, for example.
- vadfa 5y agoYes, if you don't write a native app for every platform the result will be rubbish. That's not a "good architecture decision", that is common sense. If they don't do it that way it's to save money, because as we all know Facebook is strapped for cash. (Talking about Facebook and Instagram here, because as far as I know WhatsApp is completely native on every platform)
- snovv_crash 5y agoThis then also means a well defined server API without undocumented behaviour that individual implementations depend on. I stand by my assertion that the good scaling and separable builds is a sign of good architecture.
- vadfa 5y agoIsn't a non-leaky abstraction a given too? All these requirements are like saying "having a good experience using this app requires an app that doesn't crash all the time". Well, duh?
- hnlmorg 5y agoDocker isn't itself the problem. It's people who insist on `latest` et al. Docker itself can provide a stable backbone that allows you to run repeatable and predictable builds.
- stackbutterflow 5y agoHonest question, is specializing in a JS stack bad in terms of career prospects? I've been using express + react/vuejs professionally for a couple of years and I wonder if it'll be in demand in the next 10-15 years.
- goodoldneon 5y agoYou’re fine — don’t listen to JS haters on Hacker News. They pine for the simpler days of sites that primarily use HTML and CSS, with maybe a little bit of JS sprinkled in. But consumers are increasingly demanding an app-like experience from the web, which requires JS frameworks. As for Express, JS on the backend will be popular as long as JS on the frontend is popular. JS backends have their flaws, but there’s a lot of value in using the same language in the browser and server.
- brigandish 5y ago> But consumers are increasingly demanding an app-like experience from the web This seems tendentious. Which average user was looking for these changes? Can you point to a site that shifted to an "app-like experience" and became successful because of it?
- thekyle 5y agoHow about Google Maps and Docs
- brigandish 5y agoGoogle Maps was successful from the start, and in my view, has become worse over time. Docs started off "app-like", though I haven't used it in such a long time it may be different now.
- chenmike 5y agoThis is a strange way to phrase the question. Sites that had to shift to app-like experiences are hard to find, because nowadays pretty much every web app is an app-like experience from the beginning and is created with a JS framework. The shift happened years ago. Barring informational sites like blogs and news publications, it’s actually more challenging to come up with new web products that are NOT app-like in nature, and that do not use any kind of JS framework. Craigslist may be one of the few big ones and even it is losing market share to FB marketplace, which is an app-like experience.
- halfmatthalfcat 5y ago> I still can't understand why today people choose a (Javascript) stack of build systems, ton of dependencies, and all kinds of exotic tech that is the latest and most hyped. So the same cannot be said for "newer" languages like Rust, Go, and other's whose ecosystems and paradigms aren't completely fleshed out yet? This comment reeks of someone who is looking from the outside in when it comes to building stuff in JS. Most comments I see criticizing JS stacks are so superficial and demeaning that's its obvious the commenters have little to no experience working in JS.
- shmel 5y agoWhy do you compare it to Rust though? JS is as old as Java, however its ecosystem seems to be much less mature (at least from outside). I haven't touched Java for 15 years, but I am fairly confident that people still use Apache Ant as build system. Every time I try to peak into JS world, it appears similar to tiktok trends in terms of how quickly people move from one thing to another.
- y4mi 5y agoJS is as old as java, but they're both talking about the build process of JS. in the beginning, JS wasn't really transcoded/compiled. The first time i personally found out about that was sometime after 2010 with coffeescript, not sure if there were preceeding examples. and your claim that people move around is really false. React has been the defacto standard for a pretty long time at this point. yes, other UI libraries/frameworks exist, but reacts marketshare has been extremely dominant since it displaced jquery/ember etc
- jpgvm 5y agoI don't think anyone really has strong opinions about JS on the frontend. It seems relatively fit for purpose there. Most contention I have seen is around attempting to apply it outside the browser. That path only seems to lead to misery.
- 5y ago
- yen223 5y agoWhatsApp was built on Erlang and FreeBSD, which feels way more exotic to me
- RNCTX 5y agoFreeBSD was a more stable/mature platform to build on when WhatsApp was designed, particularly in terms of network performance.
- seanw444 5y agoIs the implication that FreeBSD is less mature now, intended? I'm assuming not. The BSDs have grown in popularity significantly in the last couple years.
- _-david-_ 5y ago> The BSDs have grown in popularity significantly in the last couple years. Is the market share for BSDs growing?
- trasz 5y agoWhich market? If you take eg gaming consoles, then FreeBSD maintains steady 1/3 of the whole market, compared to Linux 0%.
- _-david-_ 5y agoHas the PlayStation market share grown in the last couple years? Also, Linux is probably going to grow when the Steam Deck is released. Even if the PlayStation is growing, I am not aware of BSD growing in desktop, server, embedded devices, etc.
- trasz 5y agoLinux isn’t growing in those markets either. Moreover, it’s increasingly seen as a liability - thus increasing efforts to replace it with eg Fuchsia.
- antihero 5y ago> exotic tech that is the latest and most hyped See whilst obviously the JS ecosystem is quite volatile and can be trend-based, I think there are benefits - the language breeds innovation. Innovation doesn't always make the correct choices, and some tech-conservativism is important in many types of companies. But if our ancestors had just been lazy and just stuck with what was known and good, we'd never even had computers in the first place.
- netcan 5y agoFor all sorts of reasons, good and bad. One is that the future is unknown. Your goal might be to keep the product simple and scale to 1bn users, but you don't really know if it will play out like this. Maybe you plateau at 1m users with the initial idea and pivot the product somehow. Now the app does dating, social media or specialised communications for highway construction teams. Tradeoffs are easier to make in hindsight. Whatsapp is a good demonstration of what you can gain with good trade offs. Do less but well. Whatsapp did trade some things off though. Their web version came late, is feature poor and a little clunky. Same for a lot of features, compared to similar apps ATT. IDK what exactly can be traced to the stack, but their decisions around user identity are similar. Phone numbers only. One device at a time. They gained simplicity, but lost options. It's easy to see the benefits in hindsight. Real time is harder. Play that game again and it might turn out different. Most apps that set out to have 1bn never get close. At this point, scalability doesn't matter and tradeoffs made for maximum scalability don't seem as wise.
- baktubi 5y agoI think the Unix philosophy should apply here. The fact that WhatsApp did one thing well and it had a good business model (was it $1 per year?) is the important bit. When you say, “Now the app does dating…” I think the right move is to scrap the project because that’s a colossal fuckup. Unless you have Microsoft cash to have multiple colossal fuckups in a row, don’t add another dating app to your messaging app. Ergo, less is more. WhatsApp probably started with passion and a solid vision. The Zuckerberg gave them an offer they couldn’t refuse. Anyone will take 19 billion for a basket full of Indian users. Another thing WhatsApp did well is they targeted ALL phones. They didn’t abandon their users like the fang-bangers (sorry been watching True Blood— FAANG is an annoying acronym so they are hereby fang-bangers).
- ChicagoBoy11 5y ago>Another thing WhatsApp did well is they targeted ALL phones. They didn’t abandon their users like the fang-bangers (sorry been watching True Blood— FAANG is an annoying acronym so they are hereby fang-bangers). That was clearly the killer "feature." Whatsapp is synonymous with communication on the developing world because of this. I remember when I was introduced to it fairly early on in Brazil and someone claiming that yeah, anyone no matter the OS could get on it. I couldn't believe it, to be honest, it felt like what iMessage was starting to look like... but for everyone? I can't imagine what it would've been like to support so many things, but clearly it was a lot of sweat that paid off extremely handsomely.
- ignoramous 5y ago> I still can't understand why today people choose a (Javascript) stack of build systems, ton of dependencies, and all kinds of exotic tech True, but one can do simpler things with JavaScript, too. And a word on exotic tech: Well, some of it is really good in helping small dev shops achieve scale of development, deployment, and maintenance.
- teekert 5y ago"Personally I want to build systems. I don't want to spend my day debugging all kinds of weird problems." Don't we all, I guess we all crave that snap, click, build -feeling Lego gave us. But in my experience building a system means debugging all kinds of weird problems. At least, when I start something, I usually for a long time feel like I'm just hopping from weird problem to weird problem. But, TBH, those problems don't seem weird anymore as experience grows.
- atirip 5y agoIt is called CV driven development. The cold truth is if you do not have latest SV hype in your CV, you become pariah, unhireable. It’s that simple.
- onion2k 5y agoI still can't understand why today people choose a (Javascript) stack of build systems, ton of dependencies, and all kinds of exotic tech that is the latest and most hyped. As a developer you need to support this in the future. It might be nice to build today but it will be a nightmare later. You know that JavaScript developers don't see JavaScript as weird or exotic, right?