6 ms·
For me, as a founder of a young startup, the overarching benefit of being proficient in modern JS and sorrounding tooling is that I can use the same language fo
by kapv89 8y ago
For me, as a founder of a young startup, the overarching benefit of being proficient in modern JS and sorrounding tooling is that I can use the same language for my whole stack(servers, web, Android, iOS), and spend more time thinking about the product and business. In the possible future where the company grows enough where it needs a distributed server software, the only part of the product that'd be changing would be the backend, and I'd probably look at Java for that. For the rest, React(& react-native) + graphql + a typesystem is a pretty good stack for UI software.
- bitL 8y agoYou literally restrict yourself to one of the worst languages ever designed. What could be solved with elegance and without demoralizing your staff in 5 minutes in some other language, in JavaScript it might require "sailing to Africa and back" to achieve the same (though I must say it has improved a bit recently from the insanity it used to be). On paper it might look good to you, but the reality is very different and you are making yourself seriously restricted in competing with other companies using more sane languages. Not to mention the web stack changes every single year completely, node has scalability and versioning issues, and you end up relying on quickly changing pieces of code you have zero control about.
- mLuby 8y agoOnly demoralizing if your staff haven't updated their knowledge of JS since 2005. :P
- coderzach 8y agoWhat's an example of a "sailing to Africa and back" problem in JavaScript?
- bitL 8y agoEmulating classes hierarchy using prototypes while always keeping on mind what "this" means right here right now at this very call stack/context, without async/await basically any resource loading (unless you use some lib that is hiding nasty pieces from you), no enforced object structure/properties and passing them arbitrarily and then in the next version needing to add/remove some property everywhere, and many more.
- kapv89 8y agoFrom this comment, I'll make an inference that you aren't comfortable in writing complex JS apps. Am I right?
- bitL 8y agoDunno, wrote games in JavaScript that left people gasping for air it was possible in a browser, wrote most algorithms in some image/vector processing tool you might be using in your business right now where I had to interleave JVM, JavaScript, WebGL and GLSL in areas nobody tried before; wrote facial/emotion tracking system with advanced computer vision in a browser etc. Maybe I am not a noob you think you are talking to? I wrote code in way better and more productive languages than JavaScript. I can somehow tolerate JavaScript when I write code alone, but once I have to deal with the fart-mess that most JavaScript developers write, I have to eject. There are very few JavaScript projects that are well designed and I always need to debug and fix them as I put most of them into their knees when they aren't working anymore. You have no idea how far "the best JavaScript" libraries are quality-wise from what you'd expect from a well-designed C++, Java or Scala library.
- kapv89 8y agoMy bad. By the way, I didn't think of you as a noob, I just wanted to see if you have explored JS to the point of being able to use it predictable while managing a few developers. In my defence: I haven't worked on webGL or facial/emotion tracking system with CV in a browser yet. My experience has been more towards apps that tend to be very heavy in functionality, and are written with a specific personas of users in mind. I have been using JS in a functional manner for quite a few years. And I have found that JS works best when you don't have to deal in classes when writing domain-specific code. Using "functions-as-first-class-citizens" is what I have found works in scalable way. And I generally get any new junior dev up to speed on basics of functional programming before working with them. (By the way, have you seen https://js.tensorflow.org/ https://js.tensorflow.org/) EDIT: By the way, I mentioned tensofrlow.js because with it, if you have a dataset, you can prototype the emotional recognition thing in a week or two. Just don't have the need/time to spend that effort at the moment. Needed to share that information in order to see if i'm correctly gauging the complexity of the type of work you mentioned.
- kapv89 8y ago1. Can you give me an exam of something that is trivial in another lang, but requires "sailing to Africa and back" in JS? 2. What sort of scalability issues related to Node.js are you talking about? Isn't node.js (thanks to V8, and async IO) much more performance friendly than other scripting langs? 3. Regarding web-stack changing quickly, this hasn't effected me on server side yet. It has effected me on the mobile apps and web app side of things where I am using react 15.x, but it'll make sense to tackle that after raising meeting the next few business milestones.
- timr 8y ago"Can you give me an exam of something that is trivial in another lang, but requires "sailing to Africa and back" in JS?" Packages and imports. First-class entities, built in to every other modern language. A mishmash of different "standards" and proprietary implementations in Javascript. Even K&R-era C had a better solution than Javascript (until ES6, anyway). And do not tell me that ECMAScript 6 fixes this -- as long as there are multiple implementations in use in legacy code (there are) JS will have to live with a rat's nest of horrors at this incredibly fundamental level (not to mention the fact that ES6 imports aren't yet universally supported!)
- kapv89 8y agoAgree with you on this one. Module systems are kind of a mess in JS land, and from the looks of it, will remain so for a few years. However, from a purely pragmatic point of view, not a deal breaker for early stage companies.
- bitL 8y ago1. You already responded to that post, so did I 2. Compare some well-designed async framework on JVM like Netty (used by most game studios for their high-throughput servers) with node.js. See the benchmarks. Still wanna use node.js? Do you think you can cost-compete with any company that needs 4x less servers than you do for the same functionality? Show me something close to zeromq capable of reaching over 1M messages/s on a single computer? 3. No comment. Plenty of posts about it over here every year
- dlwdlw 8y agoenglish is similarly a terrible language in many ways. Its only benefit is it is fairly easy to learn and start speaking with in a “broken” way but still gets its point across. Which has led to a meta advantage which is it being used everywhere. So while Esperanto speakers bemoan this, the rest of the world doesnt care too much. The rest is disagremeent or agreement on the quote “If it’s stupid and works, it’s not stupid”
- mLuby 8y ago100%. In addition, I know I can hire tons of mid-level people with JS skills and they'll be effective quickly. As much as I'd love to throw a bunch of Haskell into the codebase, the vast majority of engineers will take a while to be productive in it.
- Felk 8y agoBe aware that this might be short term thinking. What you gain in getting features done fast by mid level developers will probably cost you later in the form of technical debt. I'm not saying you can't write good and maintainable software in JS, but the features and practices other languages offer (strong and static typing, interfaces or traits, ownership reinforcements, monadic entities like list comprehensions) aren't there just to make things harder. They are usually worth the perceived extra complexity for bigger projects
- mLuby 8y agoGood point, especially that last sentence.
- tytytytytytytyt 8y agoOk, what about something more mainstream than Haskell, like Java?
- tytytytytytytyt 8y ago> the overarching benefit of being proficient in modern JS and sorrounding tooling is that I can use the same language for my whole stack...and spend more time thinking about the product and business As someone who's proficient in multiple languages, I've never had issues switching between 2 languages. Am I missing something?
- themoat 8y agoIf you have a couple small teams, it's nice when any one of your developers is able to work on any part of the app. Is that worth anything? I dunno. But I can see a certain appeal to that line of thought. Similar to why a startup might do their mobile app in react native. "We have react devs, this way any of them could work on it."
- paulhodge 8y agoIt's not just a matter of switching your brain, it's also about reusing code across projects, and being able to use the same toolset for everything. But on the topic of switching your brain, you have to know that not all developers can switch between languages as easily, they aren't all special geniuses like you.
- tytytytytytytyt 8y agoNice straw man argument. You don't need to be a special genius to be proficient with 2 languages.
- kapv89 8y agoYou need to be a genius to use two languages well in a single software while at the same time working on figuring out how to solve the constant barrage of new business problems that an enterprise software product needs to solve in the early stages.
- tytytytytytytyt 8y agoIf you say so. :|
- fulafel 8y agoClojure plug: You can cover server, frontend & mobiles with Clojure as well - mobiles with the Re-Natal, leveraging React Native. (This is also part of the "JS wins" story since two out of those three are ClojureScript, using JS as a compile target)