33 ms·
The Python Paradox (2004)
- john-tells-all 4y ago(2004) It calls Python "esoteric"! :-D I agree with the sentiment even if the example given hasn't aged well.
- stubish 4y agoI too tend to agree with the sentiment. What isn't mentioned though is that is quite possible to run out of people to hire. Which mostly happened to us, where we had grown and everyone in the relatively small Python community who could and would work for us was working or had worked. We had to move on to another new language (Go), although that did rub a number of the Pythonistas the wrong way.
- unlikelymordant 4y agoCan you hire people who know other languages and train them in python? Why would you need to change languages?
- stubish 4y agoI worded that badly sorry. Only one project switched to Go (a rewrite), and a few new projects where Go from the start. There was still a lot of Python. We hired from Open Source communities (mailing lists, conferences, our own website), and applicants always had at least basic language skills and more importantly a desire to work with it. Once you start hiring people from outside, who are not interested in you or your tech and just interested in a job, you lose the benefits being discussed in the article. One of the reasons we expanded to include Go was to increase the size of the recruitment pool.
- VectorLock 4y agoAround that time it was hard to get people to learn Python because they were turned off over whitespace delineated blocks. You could have their curly braces and semicolons when you pried it from their cold dead fingers.
- rst 4y ago[2004] -- Python is no longer a "comparatively esoteric language" these days. I suppose now this might be an argument for hiring folks using Haskell or the like.
- PhoenixReborn 4y agoOr Rust, which is very popular on HN.
- noobermin 4y agoRust is "not as used" but it has a following who hype it to the point that I've avoided taking time to relearn it just due to the strange vibes I get from their community. These people once mentioned, on twitter, that people who hate systemd are like reactionaries (as in, politically far right), as if a choice of init is a correlative of political ideology. When you view others' preferences for fucking software as so important to your world view that they might as well be nazis[0], you can tell your priorities are not in order. They hardly seem like iconoclasts in that respect, it feels like there is a lot of group mentality there which is strange to me. People in a place with strange groups dynamics might not be aligned with the public outside the group (who are oblivious to the group think since they are just "normies"), and so the group is sure, against the grain in some respect, but that aspect of being separate from the general population is due to adherence to groupthink, not really due to individual eccentricity or originality. Another aspect, rust is being hyped by some big names in Tech, so at this point, rust feels alot more like Java in its early days, so not really niche but just new and before mainstream penetration. [0] Yes, some anti-systemd people literally say Lennart Poeterring is hitler or some nonsense, they are idiots. I just think the software he pushes is not the best.
- threeseed 4y agoThe difference is that Java has alway been driven from the enterprise. And so there has been this long investment in frameworks, libraries etc that no one would ever otherwise write. Especially areas like governance, security, compliance, reliability etc. I think Rust is just going to end up just being a better C++ not a true mainstream language.
- RomanPushkin 4y agoIt's called "anecdotal evidence", the only thing that makes this post credible(-ish) is that PG wrote it.
- whatyesaid 4y agoIt's not just PG: https://news.ycombinator.com/item?id=20212869 https://news.ycombinator.com/item?id=20212869 Although I do think between Python and Java, just pick your poison, they're not night and day. Unless you're writing 1990s Java consisting of factories of factories which is more to do with library style and over-conventionalism (back then when people were writing APIs after reading GOF). Even in 2004 I don't think there's much credibility in knowing both languages although I wasn't around. What I find stupid that a lot of recruiters and jobs look for certain languages/technologies and require X years of experience in them. Sometimes requirements predating the existence of certain frameworks. Makes sense if you for some reason need a Kubenetes guy but mostly not.
- hbrn 4y ago> Unless you're writing 1990s Java consisting of factories of factories which is more to do with library style and over-conventionalism But I still see this happen more than 20 years later when brilliant ex-Java folks are doing Python. Java has this weird cultural inertia which reminds me of "Five Monkey Experiment".
- threeseed 4y agoSince I have been following PG on Twitter I understand that the reason he has so many good takes is because he has so many takes in general. And most people tend to skip over the incoherent, offensive or just plain dumb ones. I wish more of those weren't flagged to death when people post them here.
- deafpolygon 4y agoA broken clock is right twice a day.
- eugenhotaj 4y agoThis post would sound so dumb if it didn’t come from the almighty pg.
- virtualwhys 4y ago> So a language that makes source code ugly is maddening to an exacting programmer, as clay full of lumps would be to a sculptor. I am completely repulsed by Dart, but people seem to actually not be bothered by the hideous syntax. Must be wearing Flutter colored glasses...
- TeeMassive 4y agoThe complement to this paradox is the Linus Torvalds C++ rant http://harmful.cat-v.org/software/c++/linus http://harmful.cat-v.org/software/c++/linus > C++ is a horrible language. It's made more horrible by the fact that a lot of substandard programmers use it, to the point where it's much much easier to generate total and utter crap with it. Quite frankly, even if the choice of C were to do nothing but keep the C++ programmers out, that in itself would be a huge reason to use C. > In other words: the choice of C is the only sane choice. I know Miles Bader jokingly said "to piss you off", but it's actually true. I've come to the conclusion that any programmer that would prefer the project to be in C++ over C is likely a programmer that I really would prefer to piss off, so that he doesn't come and screw up any project I'm involved with. Oh Linus...
- LtWorf 4y agoI wonder how he feels now about getting the Rust programmers.
- drewcoo 4y ago2004. Almost 20 years ago. Was Python even a teen? Python does not attract smart young iconoclasts anymore. It's the scripting language everyone writes because everyone writes Python. What languages do attract smart young iconoclasts? Nim? Elm? Whatever you're doing that is not yet old enough to drink by the time you comment?
- treeform 4y agoMy vote is on Nim. Python like syntax with C++ speed. Unknown enough, but still not too new or obscure.
- girvo 4y agoMy vote is for Nim too, but I'm decidedly biased. It's allowed us to do things in embedded that would've taken 3, 4 times as long and with more developers to achieve in C++.
- xhevahir 4y agoThe community gives me pause. Nim's BDFL seems to have a habit of driving away prominent users of the language. Programmers who had contributed to the compiler have made their own hostile fork, and two of the three people who have written book-length introductions to the language have either given up on Nim or been tempted to do so. (The third is the BDFL himself.) If anyone cares, here's some comments from one of those authors: https://github.com/StefanSalewski/NimProgrammingBook/issues/10 https://github.com/StefanSalewski/NimProgrammingBook/issues/... . And from the other: https://twitter.com/d0m96/status/1592827547582332929?t=IqKBzSp9Gum1NuAnN2GO3w&s=19 https://twitter.com/d0m96/status/1592827547582332929?t=IqKBz... . These quarrels with Araq differ obviously, but both are pretty discouraging as far as Nim's prospects are concerned.
- VectorLock 4y agoAsserting that the English language can't evolve is a weird take from someone who is trying to evolve a programming language.
- 4y ago
- anonu 4y agoPython is a glue language. If you want to be hardcore you write something in rust (or whatever) with python bindings...
- threeseed 4y agoOr you can just pick a language like Java, Scala, Go etc and not need to manage two codebases, build tools, testing setups etc
- eddsh1994 4y agoOr just write in Python like Quora, Pinterest, YouTube, Dropbox, etc
- threeseed 4y agoYouTube is almost entirely C++ and Dropbox rewrote their sync engine years ago in Rust because of how ridiculously slow their Python implementation was. No one is saying you can't make a web site using Python. Just that it is inherently a slower language that is far poorer at concurrency than many other languages.
- necovek 4y agoPython is not slow for concurrency: Python has built-in cooperative concurrency that's pretty efficient, and if you care about minimum task time vs running more tasks in parallel, you need to look at multiprocess execution. In the latter case, you are generally inefficient with memory use, but if that's not an issue, you'll be effectively using your CPUs. However, Python is slow compared to most compiled languages for simple large loops over any data structure. A good example is how ORM libraries will fetch a million rows from the database as a list of tuples in roughly the time the db emits them at (say, a second with C-based code), yet it will take them 100x or 1000x as long to turn those rows of tuples into Python objects with pure Python code.
- hbrn 4y agoBoth of those became unicorns before rewriting. It is quite likely that they were able to grow so much precisely because they chose Python. Google emails prior to acquisition happen to confirm that.
- tgma 4y agoYaron Minsky of Jane Street said the same thing about OCaml
- nephanth 4y agoI feel like that's a bit different: Ocaml is a functional language. Functional languages have a reputation of being difficult. Plus they encourage a mathematical way of thinking about your code By selecting ocaml developers, you filter developers who - aren't afraid of trying stuff even if it has a reputation of being hard (or leart it at school) - are biased towards a mathematical way of thinking
- ninjaa 4y agoUPDATE: I realize this is a repost from 2004. Still worth exorcizing dead links since content is still relevant What's up with the Turkish and Japanese translation links not working? Are they just dead cos they rotted? I've been working on my own multilingual site upgrade lol so my mind is on this @PG to future proof consider using archive.org's wayback machine for essential links like translations, shld hopefully be straightforward to roll into your blog software
- ninjaa 4y agoNB did not bother trying the others
- selcuka 4y ago> What's up with the Turkish and Japanese translation links not working? No idea about the Japanese translation, but the Turkish one was hosted on a Turkish Slashdot clone (fazlamesai.net) back then [1]. There is still a web site at that domain but I believe it is owned by someone else these days. Key takeaway: Host translations yourself, do not let others host it for you. [1] https://web.archive.org/web/20040910012806/https://fazlamesai.net/modules.php?file=article&name=News&sid=2330 https://web.archive.org/web/20040910012806/https://fazlamesa...
- raister 4y agoWhen organisations were asked "Which languages and platforms in your application portfolio have been the greatest source of risk or exposure to your organization?" in the SANS Institute "A SANS Survey: Rethiking the Sec in DevSecOps: Security as Code", security officers mention Python 29.4% of the time (first of the list - they can choose up to three languages - dated 2021). My question is: when will Python be seen as "risk or exposure 'free'" in the near future? Edit: small typo
- VectorLock 4y agoI'd be willing to wager that is because Python is simply highly represented in the workplaces of those interviewed. To think Python in and of itself is more risky or exposing than other languages, especially those like C/C++ where it's considered by some to be impossible to write safe programs, doesn't make much sense.
- bottlepalm 4y agoNot statically typed until recently (difficult to navigate/refactor), global interpreter lock, kwargs grossness, no multi line lambdas, the whole version 3 upgrade fiasco.. idk it’s ok.
- cvccvroomvroom 4y agoIt was right then, but it's kind of dated and misses an evolutionary lesson: beautiful code isn't enough, it has to be safe, beautiful, maintainable, productive, understandable, and resource efficient. Ruby is still great for throwing something together fast and maintaining it until it runs into scale problems. It added gradual typing with sorbet and RBS. Crystal is a neat typed, compiled Ruby-alike but it's buggy. Rust hits more of these but it's ugly. Uglier than Python and approaches C++-level eyebleed. Rust generics aren't as flexible as they could be because type constraints don't have union and specialization is painful. Tag structs are laborious. Go hits more of these except it's not as flexible and not quite as safe as Rust. Rust makes enormous binaries and compiles slow and the cargo index download is glacial, I'm surprised they don't have an "sccache" for it. Go is easy to learn but then the capability of it plateaus. Go compiles and tests insanely fast. Rust should rebase its type system to have union types, i.e., foo: i32 | f32. Also, more granular and specialized type constraints (negation, union) on generic trait parameters. Elixir (on erlang) can be productive. It's gorgeous, it's fast, it's powerful, and fairly expressive. Haskell and Idris are beautiful and powerful, but inaccessible to most software engineers. Pony is beautiful, productive, extremely safe, and fast. Zig, Nim, Kotlin and friends are all moving in the right general directions. Swift is alright too.
- jimbob45 4y agoapproaches C++-level eyebleed Have you ever hit F12 on any C++ std function or data structure? Every time I do it genuinely feels like I'm back at day 1 freshman year of an undergrad CS degree.
- arthurcolle 4y agoPost a pic
- klyrs 4y agoA random file in the standard library: https://gcc.gnu.org/onlinedocs/gcc-4.6.3/libstdc++/api/a01099_source.html https://gcc.gnu.org/onlinedocs/gcc-4.6.3/libstdc++/api/a0109... Honestly I don't think it's that bad if you can look past all the underscores. I looked around for something worse but maybe I'm just accustomed to the eyebleed that C++ has to offer. To me, Rust is uglier, but that's because it's been around a quarter of the time that I've been using C++ and I don't know what all the symbols do without looking up a cheatsheet.
- FatActor 4y agoWhat an interesting theory. Talking to new hires, they learned python because that's what they were taught in school. Maybe in the 1990's when Python was competing with PERL for 2nd generation scripting languages that was the case that enthusiasts picked it up (along with Java beans, it was the 90's. :), but Python is institutional now in CS coursework. EDIT: I just realized this was 2004. And now I agree with him.
- juanbyrge 4y agoPython is great for small scripts or explorations. You can't use it for anything serious that needs to scale due to the lack of concurrency and significant memory overhead. If you need something to scale you use something like C++, Java, Go, Rust, etc.
- tomnipotent 4y agoYet it's good enough to scale Pinterest, Instagram, and Youtube.
- cabalamat 4y ago> Python is great for small scripts or explorations. I've used Python on program with >30000 LOC without any problems.
- VectorLock 4y agoTypically large code bases have problems that are more intrinsic to organization than what language its in. Huge code cases in any language are usually fine if discipline is exercised. And concurrency issues and memory overhead problem are from not knowing the right way to do it. Although I will concede that naive approach to both of those is sub-optimal.
- cwalv 4y ago> Although I will concede that naive approach to both of those is sub-optimal. Paradoxically, this can actually lead to a better understanding of how to write performant code. When I first learned some of the be implementation details of python, I couldn't believe it was performant enough to work for anything ... after optimizing enough of it, I understand better what actually matters
- VectorLock 4y agoAlso people seem to forget the rule of premature optimization. Worry about performance when performance starts to be a problem. You identify the area with performance is lacking and optimize that. Compute is cheap, manpower is expensive.
- marsven_422 4y ago[dead]
- d--b 4y agoYeah it is dated. Python got hyped and now people learn it because data science hires python people, and data science pays well, not because they care.
- arvinsim 4y agoI remember Python being hyped for being a good beginner language and a good web programming language(Django, Flask). It does seem that Python has settled into a niche as one of the mainstream data science languages.
- rgoulter 4y agoThere's a saying "Python is the second-best language for everything".
- ShredKazoo 4y agoI used to interview people for data science roles. We let people use whatever language they wanted in the interview. I expected to see a split between Python and R, but the reality was that almost everyone used Python, which was a bit of a surprise. It's even more surprising to me given that Pandas is such a poorly designed library. (Apparently the guy who developed it was learning Python while he was writing Pandas.) I saw candidates make mistakes due to quirks in Pandas often. And quirks can be extra deadly with data science code: https://news.ycombinator.com/item?id=33797339 https://news.ycombinator.com/item?id=33797339 So overall it's a weird situation. I think a big factor is that a lot of data scientists are newbie programmers who are just piling in to what's popular & established.
- ImaCake 4y ago>Apparently the guy who developed it was learning Python while he was writing Pandas This makes a lot of sense. I remember trying to learn Pandas before v0.24 and finding the syntax changing a lot between versions which just confused me even more. I later learnt some R and was blown away by how easy tidyverse, and even base R data.frames were to use.
- 4y ago
- 082349872349872 4y ago> ...along with Ruby (and Icon, and Joy, and J, and Lisp, and Smalltalk) the fact that [Python and Perl are] created by, and used by, people who really care about programming. The distinction Python has (wrt to the rest of this list) is that it is a language created by someone who really cares about systems programming, descended from a language (ABC) created by people who really cared about programming theory. (that said, my vote for the mechanism of python's current popularity is: time and chance)
- aabhay 4y agoTyped python is extremely ugly and frustrating. Does anyone have any good advice on doing it well? It seems like every library has their own system and doing any kind of casting just to make the linter be quiet is such a chore.
- benreesman 4y agoCheck out https://github.com/google/pytype https://github.com/google/pytype
- LtWorf 4y agoUse mypy. More mature.
- VectorLock 4y agoTo me it seems like the ugliest parts of every language is the parts dealing with anything but the most simple types. When langs start introducing things like generics, then things really get gruesome. Thats why I always personally enjoyed duck typing.
- mrkeen 4y ago> Thats why I always personally enjoyed duck typing. Static or dynamic? You will ask a non-duck to quack. Do you want to find out before or after you start your application?
- VectorLock 4y agoIf you care if it can quack, you see if it can quack.
- zo1 4y agoIf you're doing casting its probably a code smell and good indicator of something being off, or you're doing something too exotic. I'd say this applies a good amount to normal compiled languages too. To do types well, I'd recommend constraining as much as possible. E.g. if a library gives you a union of 5 possible return types, just type it as one of them that you know you'll get and don't let that "complexity" propagate further into your code base. Likewise if you're wrapping a lib function that can take 3 levels worth of complex union or umpteen varargs, don't let that bleed through in your function signature "just in case". And most crucial advice. Don't use Google's type checker pytypes. Or any other type checker for that matter other than Pycharms built-in one and mypy. Don't faff about with vscode either. Pycharm will make your python type hinting journey a pleasant experience (barring some generics and OOP corner case scenarios.)
- john61 4y agoI remember to having read this post back in 2004, in a state of transitioning my main language to the esoteric hacker language python, since I did not like java or perl at all. The argument in the article resonated with me and enforced my believe that python is the right choice. Looking back it was a great decision, still using python as my main language and it is still going very strong.
- waldrews 4y agoSo what are some present day choices for a language that can serve this people differentiator role? And yet is practical? How about F#?
- dagw 4y agoRust seems to be a popular choice for filling this role at the moment.
- ilrwbwrkhv 4y agoImba for the web. So superior than anything else that we use it for all of my companies.
- deafpolygon 4y agoFunny how Python is considered esoteric by author when Python is amongst the oldest of languages in widespread use then (2004). - C++ 1985 - Perl 1987 - Visual Basic 1991 - Python 1991 - JavaScript 1995 - Ruby 1995 - Java 1995 - PHP 1995 - C# 2000 Back in 2004, despite how small Python was - it was still in the top 10, just past Delphi. - Java dominated, followed by PHP.
- babarock 4y agoI don't know how popular the language was, but I distinctly remember it was seen as unfit for "enterprise" work. This was a time where the Serious devs would do SOAP, CORBA and other boilerplate-heavy RPC. Python was always branded "bad performance because of PIL", because multi-threading was gonna be the future anyway. I don't know how popular Python was, but I remember it was a "toy" language, and when Reddit rewrote their whole website in it a few years later (2005? 2007?) it was seen as a bold risky move.
- pjmlp 4y agoIn 2000, plenty of enterprises were adopting Python to replace Perl, and doing CMS based on Zope. During the late 90's there was a DDJ issue dedicated to Python. The first Python version I used at work was 1.6.
- shubhamjain 4y agoIn my experience, programmers obsessed with unconventional programming languages are exactly the ones that prioritize (over) engineering over simply shipping things. If you think, writing your codebase in a funky functional language would bear fruits in the long turn, you're in for a surprise. The road is full of pitfalls. Here are a few I outlined in my essay[1]: 1. Hiring is harder: "When it comes to hiring people, it’s true that programmers versed with functional programming would be, on average, better than those who aren’t. However, the hiring pool itself would shrink massively. Learning a language is an investment, and not many people are using their spare time to learn a new one. As I have seen it happen, demanding functional experience soon becomes an unreasonable expectation." 2. Less resources: What's the point of choosing an esoteric langauge and having to build nearly everything from scratch. You're basically throwing away years of experience that a vibrant community provides. 3. Hackers use languages they know: I am nearing 30, and having seen rise and fall of many tech trends, I want to play my cards right. Why should I waste my energy on learning a new language, especially when it can fade into obscurity and the output is going to be the same anyway? MeteorJS[2] was supposed to revolutionize front-end programming, who is talking about it now? Facebook was written in PHP. Mark used one language he knew and a $300B company was built on top of it. While a company I worked at that prided itself on being written in Clojure, slowly felt behind the competition and barely managed to get acquired (at a deep discount to what they raised funding at). Trust me, your time is better spent shipping, and learning internals of how things work. [1]: https://shubhamjain.co/2018/12/01/why-paul-graham-wrong/ https://shubhamjain.co/2018/12/01/why-paul-graham-wrong/ [2]: https://www.meteor.com/ https://www.meteor.com/
- lmm 4y agoI've had the opposite experience. Our competition used a "boring" Ruby on Rails architecture, so they were burning investment capital on cloud hosting every month, meaning they were forced to rush for milestones and cut corners so that they could grasp the next piece of funding before their runway ran out. Meanwhile our "esoteric" codebase meant we could run everything on a couple of servers we owned and spend our time building stuff there was an actual business need for. So we were the ones who got a big acquisition while they crashed and burned. I mean, if you're looking at Facebook then you should look at WhatsApp too.
- omershapira 4y agoFunny how emergence works with tools. Give a language too few tools but viral circumstances - the ecosystem diverges (Lisps, Javascript). Give it too long an iteration time but killer guarantees, you end up with committees. Python not falling into either of these traps should be understood as nothing short of magic in emergence. I only recently discovered that python's reference typechecker, mypy, has a small side project for typed python to emit C [1], written entirely in python. Nowadays with python's rich specializer ecosystem (LLVM, CUDA, and just generally vectorized math), the value of writing a small program in anything else diminishes quickly. Imagine reading the C++wg release notes in the same mood that you would the python release notes. [1] https://github.com/mypyc/mypyc https://github.com/mypyc/mypyc
- anttihaapala 4y agoWell, the mypyc was not a side project originally, as mypy was conceived to be a complete programming language with optional static typing (https://www.slideshare.net/jukkaleh/mypy-pyconfi2012 https://www.slideshare.net/jukkaleh/mypy-pyconfi2012), but still (almost) 100 % python compatible and that variant was supposed to be transpileable into C.
- Yoric 4y agoI haven't followed development of the Python language in a while but this article was featured last week [1] and it does feel like committees. I have followed development of C++ and... yeah, committees and subcommittees. [1] https://chriswarrick.com/blog/2023/01/15/how-to-improve-python-packaging/ https://chriswarrick.com/blog/2023/01/15/how-to-improve-pyth...
- wirrbel 4y agoWell, in reality it’s more complicated there always were approaches through committee and approaches outside (conda being an initiative, and lately there is an explosion of tools making use of the pyproject.toml interface). with packaging there are things the committee is good at (making sure that a change to packaging does not break packaging for certain configurations and use cases) and individual initiatives outside of the committee often had drawbacks improving packaging in some area and making it worse in others. But the “committee” then was able to take inspirations into the committee which means there is the best of both worlds. IMHO the python PEP process is a good example of python going the middle way.
- lisparadox 4y agotime travel from 2004 to 1960s: fortran vs lisp was lisp considered esoteric back then? is lisp programmer smart[er]?
- z3t4 4y agoIf you already know a general purpouse language well there is no reason to learn another one, unless you are tired on the lang you already know.
- deleted 4y ago[deleted]
- college_physics 4y ago> You push blobs of source code around the way a sculptor does blobs of clay Love this sentence. Python is a success precisely because it enabled a lot more people to be sculptors. Ofcourse this means you see a lot ugly, unfinished pieces. And indeed bronze or iron sculptures may require a slightly different workflow and skillset. Not clear for how long Python will retain this advantage. People parlay lists of technical reasons but most likely the new hot language will be one that makes it even easier and fun to push around blobs of code.
- zmmmmm 4y agoPHP dominated the internet and then eventually became shunned with people embarrassed to admit they use it. I sometimes wonder if Python is on this trajectory but much slower or not. We are already at the point where there are very clearly better alternatives from nearly every technical perspective, so it's carried primarily by momentum and ecosystem. Can that last forever?
- revskill 4y agoPython is fine as scripting language for scienctific computing. What do you need more ?
- kelipso 4y agoToo many reasons to list. Numpy, pandas, matplotlib are all pretty badly designed and very annoying to work with. Dealing with different array types in numpy, pytorch, etc, I shouldn't have to do. Different array types have different interfaces, they shouldn't, I don't care why. Terrible packaging system. No threading. Slow loops. Etc.
- thruway516 4y ago> We are already at the point where there are very clearly better alternatives Can you name them? I’m not personally aware of any. Python is here to stay for a long long time. It’s become the de facto language for AI/ML and there’re good reasons for that. And programming the AI way or with a significant component involving AI is very likely the future of programming. Until a much better general purpose tool comes around (ie a language that doesn’t get in the way and comes with batteries included - especially for non cs types who have to accomplish programming like tasks) I don’t see it going away anytime in the near horizon
- signaru 4y ago> People don't learn Python because it will get them a job; they learn it because they genuinely like to program and aren't satisfied with the languages they already know. At least in my area, these days there are many programmers who know Python because that's the only language they have been taught. And there are many job opportunities specifically looking for Python.
- frr149 4y agoIcon, that's a name I havent heard in a long time...
- klaftc 4y agoI wonder if Graham writes from the perspective of a startup founder, i.e., he observed other founders who used Python in 2004 and got a positive impression. I do not have this impression in 2023. No website written in Python is as polished as GitHub (has Ruby influenced the elegance?). The scientific ecosystem is chaotic, new and half-finished tools are released daily, packaging is a mess. Of course some of the scientists are smart in their domain, but not always in programming. Core development is pedestrian and run by unproductive, dominant bureaucrats who want to remain in power. From a CS point of view, Python is of zero interest and has few exciting areas. Python has maximalist specifications with many bugs in the resulting case explosions. Python has too much churn and a horrible package manager. I don't see smart people who are attracted to Python (like maybe in 2004). They sometimes use it, grudgingly.
- raygelogic 4y agoif you're trying to build a product, code is a liability. not sure that an esoteric codebase is the best signal to candidates that the bottom line is solving problems for stakeholders, rather than beautiful code.
- dzonga 4y agothis piece was an article relevant to that certain point in time. where at that time - java had slow velocity - because it was tied up in marketing speak - and enterprise jargon. however reading in between the lines - languages or ecosystems that are not shaped up by hype / marketing to do tend to encourage faster velocity and an uncanny advantage. in this day and age though - maybe due to resume driven development - influx of vc funding. keep in mind - when YC started it was just a seeder fund - which encouraged companies to reach ramen profitability as soon as possible, not survive on the next round of funding. what you now experience in the present - is rubber gum / viscous velocity amongst startups due to marketing i.e things like k8s, cloud tools etc which reach the complexity of J2EE tools of back then; when only the appointed prophets could show you the right true path. now every company big and small - talks about doing things at scale. yet if you take a step back - no one has a definition of what scale is. at $job - the talk of scale is prevalent - yet we're reaching for tools to solve human problems. that wouldn't need tech at all. good luck finding a place that shuns complexity, isn't afraid of letting servers fail - to make sure they're robust and reliable enough. where the presentation layer - isn't going through a yearly ritual of sacrificing hours dealing with dependencies.
- alkonaut 4y agoSo today it's the Erlang or Rust or Hasekll or F# paradox?
- articsputnik 4y agoI love learning new languages because of learning, not because it's cool. That's why learning Rust shows more about the person than being on a hype train. This is one of the best indications for hiring if I'd hire someone.
- ilrwbwrkhv 4y agoIt's ugly as hell though. The person might like learning but I wouldn't think they liked aesthetics or elegance.
- Dowwie 4y agoIn 2023, it's the Rust paradox
- ben7799 4y agoHaving written my first Python & Java way before this article was written some of this stuff doesn't hold up all these years later. It took a while for startups to start using Python but there was already big OSS software infrastructure built in it in the 1990s. And everyone noticed it was slow too, in the 1990s I remember more of the Python software being interactive and/or having desktop GUI components that were laggy compared to C/C++ ones, even worse than Java GUI elements were at the time. An opposite observation, the engineers that want to differentiate themselves by using "less popular" tools often have some of the biggest egos and are most blind to the issues in their designs. The one place I worked where we built the application in Python was rife with: - People with a big chip on their shoulder about Java and .NET being inferior - Constant talk about how bad Java/.NET were and how their use of Python was so much better - The design of the product hit every weak point of Python that Java and .NET are much stronger at - We had bugs & data leaks that Python's issues made possible in ways that were almost impossible in Java/.NET - Performance issues and jumping through hoops due to Python's issues around multi-threading - Tons of tech debt and difficult to decipher code Still there was a good result in the end, and the rapid iteration of Python was helpful in getting things done fast. The question is how bad was it to deal with the issues after the exit when the new owners had to keep scaling it. Another place we had a bitter LISPy guy. Always trying to write everything in the most esoteric language he could, always leaving behind maintenance issues, never stopping talking about how bad the tool chains were (Java/C++) that actually brought in the revenue his job depended on.