10 ms·
Learn more ? I'm actively trying to unlearn a bunch of languages at this point! ofcourse, when I was a wageslave in the bay area, its nice to know python, java
by dxbydt 8y ago
Learn more ? I'm actively trying to unlearn a bunch of languages at this point!
ofcourse, when I was a wageslave in the bay area, its nice to know python, java, javascript, scala etc. - got me jobs every 2-3 years & put food on table.
now that i'm in academia, its completely upside down.
literally everybody is way more productive than me in just about any task. The other day I as supposed to program a poisson clock, it took forever. Meanwhile my advisors & classmates with zero industry experience chug thru these tasks effortlessly. Lately I've confirmed its because they know exactly 1 language , but they know it so well & in so much depth, they know exactly where to look, the right mcmc library, the right slice sampler, the right optimizer, that's what matters.
There's no point programming the same bloody front-end & back-end in a dozen different languages just because of industry constraints. That's like eating a spaghetti with a fork, a spoon, with chopsticks, with your fingers...its the same fucking spaghetti. cook something else, not just rotate dish-ware.
- ryanthedev 8y agoI work for an airline. I known about constraints. If I knew only one language, I never would be at the level I am. Here is the tech stack I deal with daily. VB6 Kix scripts Powershell .net 3.5 Winforms WPF .net 4+ .net core .net asp Java JavaScript React Angular C++ Golang. If programming is a job and not your craft, it will be harder for you. You just have to practice more.
- ryanthedev 8y agoI had to use a jar in a .net program. Do you know how much of a pain in the ass that was?
- blub 8y ago> VB6 Kix scripts Powershell .net 3.5 Winforms WPF .net 4+ .net core .net asp Java JavaScript React Angular C++ Golang That just sounds like some mess that one is forced to deal with, not reasonable software engineering. I mean yes, some jobs will drown one in useless stuff. Doesn't mean that learning the useless stuff is a virtue now.
- TeMPOraL 8y agoIt looks perfectly reasonable to me. VB6, KiX, Powershell and .NET suggest some part of the overall system is done through Windows desktop apps and Windows computers automation. JS, React and Angular imply that at least two frontends are involved (or possibly one under rewrite). Java, C++ and Golang are probably used for other parts. It's only small and well-defined software that can get away in being written in one technology. For anything larger/serious, you're bound to end up in a polyglot environment.
- blub 8y agoKiX is funny, had to look that one up, and it wasn't easy to find: it's apparently some closed source "careware" batch scripting language developed by an MS employee. Yes, most environments use several programming languages. Done right, this can be Google's blessed languages approach. Done wrong, it can be every technology Microsoft ever brought into existence, ending up with a triplicate solution for each problem.
- dahart 8y agoWhat, exactly, makes you think any of that stack is useless or unreasonable? Do you know what all the pieces do? I don’t have a clue from a single comment, but I have enough experience to know that all stacks came from a series of reasonable decisions, and more importantly, specific problems to solve. So, TBH, my gut reaction to your comment is you might lack experience developing & shipping any large applications. That’s not an insult, and not a judgement; experience comes with time. Plus I don’t know your experience, I’m just letting you know what your comment leads me to assume. My only suggestion is to be a bit careful throwing around judgmental words like mess and useless and ‘not reasonable’ when you don’t know precisely what you’re talking about. FWIW, this stack looks very normal even for a web-only application, and it looks simpler to me than the stacks & tech people use for shipping console games. Hell, I’ve written personal projects with tech stacks that have as many pieces. If I’m off the mark about your experience level, you could make your case stronger by demonstrating that there’s a simpler cleaner alternative that solves the same problems, provides the same or better performance, build utility, maintainability, deployment, user experience, etc.. Do you have any suggestions?
- plinkplonk 8y ago" its because they know exactly 1 language ," which language is this? I'm guessing Python.
- mawaldne 8y agoThis reminds me of something Rich Hickey said about becoming a better developer: https://gist.github.com/prakhar1989/1b0a2c9849b2e1e912fb https://gist.github.com/prakhar1989/1b0a2c9849b2e1e912fb “A wide variety of experiences might lead to well-roundedness, but not to greatness, nor even goodness.”
- zinclozenge 8y agoYea this is 100% nonsense, and is borderline gatekeeping. Well roundedness allows me to identify a particular language/tech stack that is most suitable for a task and then I can just drill down on it and get productive very quickly.
- Skunkleton 8y agoAgreed. And to address the grandparent comment. Its entirely possible that he is approaching his coding with a professional mindset and wasting time on things like maintainability, scalability, or similar just out of habit.
- FakeComments 8y agoIt’s a waste of time to use classes, if all you’re doing is hacking together 500 lines into a stable enough heap to generate the graphs for a paper. Not all academic code is that bad, but the heft is definitely towards that end of the pool. I got really familiar with the distinction, because I spent a while translating PhD project/demo code into actual products for $JOB. It’s definitely mostly in making things secure, stable, maintainable, and debuggable that you lose most of the time.
- web007 8y agoThis a thousand times over. Academic code will take every shortcut and simplification possible. Hardcoded values, globals, no modularity, no error checking, shared-everything architecture assumptions, single-letter variables with mixed naming convention, anything to get the job done. Once the paper is written, the data analyzed, the project is done. There is no such thing as "maintainability" because the code isn't used past publication.
- rmrfrmrf 8y agoI'm not familiar with the author, but I didn't take the article strictly from the perspective of the labor market. There are people who program as a hobby, for example. For those who are interested, it can be enlightening to see how different language designs lend themselves to different tasks.
- nathanyo 8y agoThe author wrote 'Writing an Interpreter in Go' for reference.
- aczerepinski 8y agoI didn’t make that connection. That’s a very good book.
- vram22 8y agoAnd a follow-up book about a compiler. https://interpreterbook.com/ https://interpreterbook.com/ https://compilerbook.com/ https://compilerbook.com/
- blub 8y agoAnd it can be even more interesting to learn about operating systems, networking, algorithms, etc, etc.
- mokus 8y agoNot sure know how far you may be into your career but as one who’s had a couple decades, it’s definitely possible to have both. I have been able to learn two very different languages (C and Haskell) to that level of comfort and am feeling nearly there in Rust. At the same time, I feel reasonably comfortable picking up a project in any of about 20 others with frequent reference to standard lib docs. With only my own experience and that of people I’ve worked with to go by I can’t provide any broader scope, but I feel like it really is the case that a critical mass of familiarity with different languages and ecosystems makes it far easier to pick up and run with others and be more or less unaffected by the differences. It is probably important that the languages in your set be actually different though, rather than superficially different as most historically-popular languages have tended to be.
- dvlsg 8y agoI agree. If most of your experience is with a popular OO language, consider learning a lisp. Learn an ML. Try elixir/erlang to get a feel for how different programming for the BEAM can be. I suppose you don't _have_ to use different languages to learn new concepts, but it certainly helps in some cases. For example, learning about currying is going to be much more natural in F# than it would be in C#.
- klibertp 8y agoIt's perfectly possible to know several languages in-depth. It just takes a lot of time and effort. Moreover, it gets easier with time and practice. Knowing N languages makes learning N+1 language just a bit easier. For me the turning point was around N == 10, since when learning a new language - and yes, in-depth, including idioms, stdlib, some external libraries, maybe some framework (if needed), and also some facts about the implementation and its inner workings[1] - takes a week at most, and for simpler cases a weekend is enough. OTOH, it took around 15 years to get there. I understand that this kind of dedication may not be possible or worth it for everyone. [1] Because there is very, very little unique features to each language. Unless you go to the fringes, you're bound to see the same concepts applied again and again and again, which gets really disheartening after a while. If you don't believe me, try naming any "new" feature which was added to your favorite (EDIT: I meant mainstream - TIOBE top 10 or 20 - lang here!) language recently - and I'll show you that same feature implemented 10 or 20 years ago in another language(s). EDIT: more neutral wording.
- deleted 8y ago[deleted]
- chaosite 8y agoI mean, I basically agree with you, but I like your challenge. What about Rust's borrow checker? I considered it novel, but I'd love to find out it was stolen from somewhere.
- dhash 8y agoRust’s borrow checker was inspired by clean [1], which applied the same semantics to monads to allow in-place updates [1] https://en.m.wikipedia.org/wiki/Clean_(programming_language) https://en.m.wikipedia.org/wiki/Clean_(programming_language)
- skrebbel 8y agoClean is not a mainstream language.
- baby 8y agoYou did it wrong. What you are supposed to do is learn a bunch of languages and master one or two.
- didibus 8y agoIt just sounds like they know the domain space better then you. You seem to know less about the domain of a poisson clock then them. Maybe because I'm also unfamiliar with it, I can't judge. But knowing the right set of algorithms to solve domain specific problem sounds language agnostic to me. That said, I agree that you should also continue to learn about CS, learn more data-structures, more algorithms, explore newer techniques and paradigms. That includes learning new languages, but not only that.
- rifung 8y ago> Lately I've confirmed its because they know exactly 1 language , but they know it so well & in so much depth, they know exactly where to look, the right mcmc library, the right slice sampler, the right optimizer, that's what matters. That sounds like your "issue" isn't knowing too many languages but that you don't know any one language as in depth as they do though? I don't see why you'd want to unlearn anything.. doesn't that knowledge only help? I think there are benefits to learning more languages but also support the idea you should have at least one you're super comfortable with.. thats not mutually exclusive!
- jlg23 8y ago> cook something else, not just rotate dish-ware. As a developer you are the chef. If all you can make is spaghetti, is it the kitchen's fault? OP makes the point explicit: the language shapes the way you approach problem solving. When declarative, functional and procedural programming all yield the "same fucking spaghetti", you might just have missed the point.
- friedman23 8y agowhy don't you share the code that they wrote? I'm interested in seeing the code produced by people in academia. Anyway, once you reach enough mastery in your craft using one language or another is just a difference in deciding what level of abstraction you can work at and this is determined by performance requirements.
- shstalwart 8y ago"The code produced by people in academia" is about as specific a target as asking about the diet of people in Portland. It ranges from a strict regimen of Taco Bell to pesca-pescatarian.
- hackbinary 8y agoIs the language, or the languages library?
- not_kurt_godel 8y ago> Lately I've confirmed its because they know exactly 1 language , but they know it so well & in so much depth, they know exactly where to look, the right mcmc library, the right slice sampler, the right optimizer, that's what matters. It sounds to me like you're working in a highly specialized area that requires deep domain knowledge and rich set of tools to apply that knowledge. Your colleagues have a lot of familiarity with that domain and those tools. Knowing multiple languages isn't your problem, it's just that you haven't spent your entire career working in this particular domain and you're playing catch-up.
- bbatha 8y agoIt’s funny you say spaghetti and list two tools that were invented to eat noodles (chopsticks and forks). Even after it’s invention, it took centuries to improve the fork with a third and fourth tine. It seems hasty in an industry so young to say pick one tool and get great at it. We wouldn’t be in the same place as an industry if we didn’t accelerate web development with oo, dynamic languages, various innovative frameworks etc. a poison transform doesn’t change but the http spec and its requirements do (try writing the asynchronous code that http2 requires on the languages and frameworks of a decade.
- Yuval_Halevi 8y agothat's the difference from being skilled in many eras, than focused on one single goal and be damn good at it.
- nickkell 8y agoThat's probably because those languages are completely middle-of-the-road, with a load of inconsistent APIs that one has to learn along with the syntax itself, and that don't really expand one's programming ability.