15 ms·
Reading this got me thinking and I wonder if other people feel like me about this, so I'm going to share it. This is not serious, but not entirely unserious...
by KirinDave 7y ago
Reading this got me thinking and I wonder if other people feel like me about this, so I'm going to share it. This is not serious, but not entirely unserious...
I try to be a good sport about it, but every time I write python I want to quit software engineering. It makes me angry how little it values my time. It does little for my soured disposition that folks then vehemently lecture me about the hours saved by future barely-trained developers who will ostensibly have to come and work with my code. Every moment working with python (and that infernal pep-8 linter insisting 80 characters is a sensible standard in 2019) increases my burnout by 100x.
I try to remind myself that we're trying to make the industry less exclusive and more welcoming to new developers and "old" isn't necessarily "good" (in fact, probably the opposite), but damn I just don't understand it.
It used to be that I could focus on other languages (Erlang, Nemerle, F#, Haskell, Ocaml, even C++) and sort of balm myself. But now, I can't even overcome the sinking feeling as I read the Julia statistics book that I'm going to be dragged back to Python kicking and screaming in the morning, so why even bother?
And frustratingly: it's one of the few languages with decent linear algebra libraries. And that means it's one of the few languages with good ML and statistics support. So it's very hard not to use it because when you want to cobble together something like a Bayesian model things like PyMC or Edward actually give you performance that's obnoxiously difficult to reproduce.
This is what the industry wants and evidently a lot of people are okay with it, but to me it's misery and I can't work out why people seem to like it so much.
- aaron_m04 7y agoI write python professionally and honestly, who cares about the 80 character limit? Just ignore it! :)
- KirinDave 7y agoI've never worked at a place where the prevailing python culture wasn't to set the linter on kill and just let go wild.
- futureastronaut 7y agoWell that sounds like a personal problem and it has nothing to do with the language. As a counter-anecdote, I've been working on Python projects for over a decade and have yet to experience the draconian linter settings you described.
- KirinDave 7y ago> Well that sounds like a personal problem Have I given you the impression that any of the opinions or experiences I have expressed here are not personal? I've never not encountered them, so I guess you're just lucky.
- yongjik 7y agoI do. This is 2019, and I like being able to see at least three files side-by-side without squinting my eyes, thank you very much. Yes, I know I'm in the minority these days. :/
- KirinDave 7y agoThen may I respectfully submit you or your employer should buy an appropriate monitor or you chould use two. I'm not asking for 300 character lines. A 25% increase would be a rational and sufficient nod to the fact that monitors are bigger.
- joshuamorton 7y agoI work at the same place you do. I code often enough from my macbook, using likely the same tools that you use, and they're truly painful with >80 character lines. I don't understand how Go and Java devs survive. I also don't think an 80 character line limit is a bad thing: small well defined functions that do only one thing are good. Long lines often encourage people to want to nest code deeply (which is terrible!) or to write complex one-liners, and that + list comprehensions is a dangerous pairing.
- KirinDave 7y agoThe only tool that gets remotely irritable about it is the one we use for diff reviewing, afaict? > I also don't think an 80 character line limit is a bad thing: small well defined functions that do only one thing are good. Long lines often encourage people to want to nest code deeply (which is terrible!) or to write complex one-liners, and that + list comprehensions is a dangerous pairing. Python already starts you out at a nest of 2-4 characters, so we don't even get the full 80. But honestly I don't think a 100 character line is going to doom us all to hyper-nested expressions.
- cs02rm0 7y agoJava dev here. I would try and defend a 120 character limit but I have a 34" 5k widescreen monitor so I probably don't have a leg to stand on. I'm writing a mix of Java and python at the moment. Python for lambdas behind an API gateway and Java on some containers for stuff that's more complex but evolves more slowly. It's neither python or Java where I'm really spending my time though. It's CloudFormation, Ansible, Jenkins and stitching the whole system together for CD that's killing me. I feel like programming languages are the easy bit these days.
- sbr464 7y agoAny language can benefit from the beauty of enforcing general typography guidelines that go back 100+ years.
- nikofeyn 7y agoi fully agree with you. it has a stubbornness about it and not in a good way like the stubbornness you might find in lisp, scheme, and sml derivatives. i have had to write python on only a few side projects, but it was miserable, as you say. not only is the language all over the place and embarrassingly slow, the ecosystem is as well. i tried getting an application someone left when they left running on windows 10, and it was basically a null effort without a complete rewrite, upgrade to 3.x, and upgrading/replacing GUI libraries. if i had to write python as a day job, i would quit. i have said it before, but python is the new c++, helping people everywhere write brittle, unmaintainable code.
- becga 7y agoFinally, someone typed what I was thinking.
- mkl 7y agoIt seems to value my time quite highly, as I can achieve most things more quickly and easily in Python than any other language I know. Can you be more specific about how it increases your burnout? Is it the language, or someone forcing you to use that linter and settings?
- KirinDave 7y ago> Is it the language, or someone forcing you to use that linter and settings? It's definitely both. Preface in true internet style: these are just opinions and you may not share them. That's fine. I really don't like Python as a language. I don't like its total lack of composability. I don't like its over-reliance on a very dated vision of OO. I don't like how its list comprehensions aren't generic. I don't like how it farms all its data structures out to C. I don't like how it uses cruddy one line lambdas and forces me to name things that are already named by the things I'm passing it to. And also the linter just exacerbates these things, because the linter is just a crystallized slice of a kind of software engineering culture I really don't like.
- futureastronaut 7y ago> I don't like how its list comprehensions aren't generic. Python iteration is generic. https://docs.python.org/3/reference/datamodel.html#object.__iter__ https://docs.python.org/3/reference/datamodel.html#object.__... Please don't spread FUD.
- KirinDave 7y agoI'm thinking of generic in the sense of monadcomprehensions, sorry. > That's an implementation detail of CPython. I don't see how it's important for a language user either. Jython uses Java objects. PyPy uses RPython. This strengthens my point though? > Please don't spread FUD. This is that culture thing I'm talking about.
- futureastronaut 7y agoI'm not really sure what your point is in criticizing "farming" to C. > This is that culture thing I'm talking about. You made a false claim. You referred to Python iteration as not generic, when what you really meant is that Python lacks first class monad support. If you want a monadic programming model, you're not going to be a happy camper in the Python world. But I doubt that comes as a surprise.
- pmikesell 7y ago```--max-line-length=120``` passed to flake8 will switch it to 120. Use another number for a different length. Things like max line length should be something your org or your fellow contributors decide on, not something dictated to you no matter what the language.
- KirinDave 7y agoAs I've said elsewhere, the python culture I encounter is extremely serious about maintaining it. It's just not worth fighting over.
- sammorrowdrums 7y agoOn a given company it's often winnable. Nobody in my company fought for 80 char. We ditched it and moved on.
- lacampbell 7y agoEvery moment working with python (and that infernal pep-8 linter insisting 80 characters is a sensible standard in 2019) It's a very sensible standard. There's a reason most books are taller than they are wide. The fact that we have bigger screens now doesn't change it.
- KirinDave 7y agoThis is about as sensible to me as saying it is a good idea because most trains are longer than they are wide. Who cares about those things, we use computers that nearly all have 4:3 or 16:~10 displays (or wider), and many of use use more than one of them.
- teddyh 7y agoDisplay size has nothing to do with it. Long lines are hard to read: https://en.wikipedia.org/wiki/Line_length https://en.wikipedia.org/wiki/Line_length
- KirinDave 7y agoI obviously don't agree, but it is worth noting that comparing typographic conventions for English with typographic conventions for code is not a very good idea, to me. Especially when we're discussing a language with semantically active whitespace. A 100 character line might only see 15-70 characters of active use.
- CameronNemo 7y agoWhile this is a fair point, pylint bumps the limit to something like 100 characters, and you can split deeply nested logic into separate functions with ease.
- mirekrusin 7y agoHN has ~200 char lines and I find it easy to read long bikeshed arguments.
- 7y ago
- yawaramin 7y agoI'm sympathetic that Python is relatively not a great language, but IMHO an 80-character line limit is quite reasonable. It's easier to read on smaller screens, easier to view side-by-side diffs, and tends to force you to break up your code more. That said, this shouldn't be a lint, it should just be enforced by a formatting tool as a format-on-save setting. It just destroys all the wasted arguments about formatting and the wasted time trying to manually line up code.
- DonHopkins 7y agoI enjoy printing code out, going outside, and reading it.
- danielbarla 7y agoI'd also add that while perhaps a bit on the pessimistic side, I tend to view the 80 char rule / limit not as an ancient hardware limitation of monitors, but as a limitation of our eyes and visual processing circuitry. There is a reason why newspapers and well laid-out websites don't have 300 char width lines. Those are physically harder to read, whether we want to admit it or not, as our eyes lose track of the flow to the next line. I'm all for decreasing unnecessary cognitive load, there should be quite enough of that without us adding more by accident.
- YokoZar 7y agoWhy not take this reasoning one step further and have Hacker news impose an 80 character line wrap limit? If you've ever had to deal with this in an email client, you can quickly see that 80 is undershooting it in the modern era.
- nesadi 7y agoFunny. I preferentially read HN on my phone which has probably what looks like around a 80 char limit. It makes it really comfortable to read.
- 7y ago
- l0b0 7y agoRe. linting, I'd highly recommend Black with whatever line length you want - it'll reliably reformat your code, and once you lose the urge to reformat while typing it's fantastic. It's like deleting a bunch of useless mental code. And the code reviews are even better: include a linting step (ideally with isort) in CI and you can avoid 95% of formatting comments.
- dgrant 7y ago100% this. I just switched to using Black recently and not having to ever fix a lint issue again has been life-changing. Use Black with pre-commit (https://pre-commit.com https://pre-commit.com) and never look back.
- geewee 7y agoI've had some issues with black formatting some code differently depending on the OS it's run on. So perhaps almost reliably is more correct.
- konschubert 7y agoMake sure to run the same version of black.
- medecau 7y ago> it's 2019 use an auto-linter - black is what most seem to be using and stop using flake8/pylint directly, try prospector with sensible --sensitivity
- polotics 7y agoWell in my world, the other language is Java, not Haskell. Alone in this?
- KirinDave 7y agoFor what it's worth, Java tortures me a lot less since J8. I don't dread it the way I do python because I can use Clojure or Kotlin.
- icebraining 7y agoSo the workplaces you've been at don't even let you change the line length limit, but they let you mix Clojure or Kotlin into a Java codebase?
- KirinDave 7y agoAh, no when I ran my own company I decreed it was a Clojure shop.
- aliswe 7y agoWhat about .NET Core?
- j88439h84 7y agoStop using flake8. The original PEP 8 document doesn't even recommend 80 characters anymore. Pylint and mypy and black are way more useful.
- sammorrowdrums 7y agoFlake8 is customisable. I use it with 120 chr override. Maybe there are good alternatives but Flake8 starts from PEP8 until you tell it otherwise.
- youraimanager 7y agoblack -l 120
- KirinDave 7y agoI sure do enjoy watching people hyper-fixate on a tiny thing. I'm not sure who you think you're helping by doing this, but it isn't me.
- j88439h84 7y agoIt's the only problem you mentioned, and I inferred from your post that it was really bothering you. That was my thinking anyway. I see now that you mentioned other issues in other comments. Anyway I appreciate you sharing your feelings to an evidently unreceptive audience. It's nice to know there are better ecosystems out there waiting when I get a chance to look for my own next step.
- Ensorceled 7y ago> Every moment working with python (and that infernal pep-8 linter insisting 80 characters is a sensible standard in 2019) increases my burnout by 100x. You hyper-fixated on that tiny thing. It increases your burnout 100x, remember?
- KirinDave 7y agoPython increases my burnout. The linter is a relatively small part of it.
- hyperion2010 7y agoI am about to hit a decade of python experience. I work with it daily, all my major codebases are written in it. I hate it. It has an ok object system which is possibly its only redeeming quality. I found Racket about 4 years ago, and any new project that I work on will be in Racket or CL. I could go on at length about the happy path mentality of python and the apologists who are too ignorant of other people's use cases to acknowledge that maybe there might be some shortcomings. The syntactic affordances are awful and you can footgun yourself in stupidily simple ways when refactoring code between scopes. Python isn't really one language it is more like 4, one for each scope and type of assignment or argument passing, and all the sytactic sugar just makes it worse. Not to mention that packaging is still braindead. I actually learned the Gentoo ebuild system because pip was so unspeakably awful the moment you stepped away from the happy path. Blub blub blub, someone help I'm drowning in mediocrity.
- meddlepal 7y agoI have nightmares of dealing with Python packaging... I finally gave up and just started using PyInstaller to ship binary blobs to people.
- dev_dull 7y agoThat doesn’t even work in all situations. What if the system requires development packages? What if it’s a different OS or architecture? Packaging is a nightmare.
- blattimwind 7y agoWhat if you are on Linux and your binary requires a slightly newer version of glibc for some reason etc. Static, portable binaries on Linux are hard.
- joosters 7y agoThey aren't too bad IMO. However, you need to set up a build environment/VM with your choice of your earliest-supported Linux+glibc. Build on old, run on new works well. Linux backwards-compatibility is pretty good, in that a static binary should run just fine on newer systems. I've had far worse experiences with OpenBSD, where a build on an older version of the OS would never seem to run on a newer system.
- mikorym 7y agoDo you think this is at least partly due to one usually being frustrated by your "official" work? Or would you prefer something like Java? I can imagine other people's code in Python frustrating myself, but if it is only my own code base then Python is a rewarding language for me.
- KirinDave 7y agoIt's hypothetical so I can't say for sure, but I did work a lot with the JVM and I used Clojure (and I'd probably use Kotlin now as well) and I didn't feel as burnt out as I do now.
- mikorym 7y agoI have a acquaintance that swears by Clojure (for data modelling of sorts) and specifically that I should also use it (due to my category theoretic background).
- isatty 7y agoI know I’m responding to opinion but: developer productivity isn’t one of the pitfalls of Python. Yes I agree that if you’re using Python for a large scale project involving lots of developers its not the best; but that’s because it doesn’t have a good type system. You can’t work out why people like it so much because of this misconception. The languages that you gave as examples most definitely do _not_ value your productivity, it values correctness as enforced by a type system and refactoring needed for large projects.
- deleted 7y ago[deleted]
- willtim 7y agoI am more productive in a language with an expressive type system (e.g. Haskell) than one without. Thinking about types not only guides me towards a working solution quickly, but the checker catches all my minor mistakes. In Haskell, you can actually defer all type errors to runtime if you want to. But I have never felt this makes me more productive.
- dagenix 7y agoIt's unclear to me how a person can be productive if the language doesn't value correctness.
- pjc50 7y agoThere are plenty of real world situations where neither the requirements nor the prerequisites value correctness, but getting an 80% or even 99% correct set of results while flagging the unhandled cases is very valuable. Python as a structured upgrade to Excel.
- hombre_fatal 7y agoI'd say the most immediate value/payoff of correctness is ensuring your own code is consistent with what you think it does rather than correct wrt to some sort of external specification.
- agumonkey 7y agoit's funny because a few people ended up using python as a prototyping tool to find better approaches to then rewrite in cpp or else. Somehow in that regard it saved them tons of time.
- zmmmmm 7y agoDefinitely feel the same. The way I think about it is that Python is a strong local optimum in a space that has a massively better optimal solution really close by. But it's nearly impossible to get most people's algorithms to find the real optimum because Python's suboptimal solution is "good enough". And the whole software industry (and in some ways, by extension, all of humanity ... to be over melodramatic) is suffering for it.
- m45t3r 7y ago> And the whole software industry (and in some ways, by extension, all of humanity ... to be over melodramatic) is suffering for it. I don't think the biggest services built with Python (think Instagram, Dropbox, etc.) have more consumer-facing issues than services written in other languages. If you're talking only about developers, fine, however I also think most Python developers like the language. For me it seems that Python has strong vocal critics, that show well in places like HN, however it is not representative of the majority. So I really don't think Python is making the humanity suffer, for any good measure of suffering.
- Abishek_Muthian 7y agoI would rather wish Golang eat the world than Python, just because the practicality of python becomes questionable when performance is key. In my previous startup in India, I trained unskilled personnel to become decent python developers to work on our product; everything was fine till the product grew exponentially and we had to optimise every nook and corner of it to better serve the customers and save on server bills. So we had to optimise our application with Cython to meet the demands. So, when training someone to code if we use Python as a language; we should follow up with the disclaimer "You will learn to code faster than most other languages, but you cannot use this knowledge to build something at scale (i.e at-least when budget is of concern, when you are not instagram)". In comparison, Golang excels in both form and function. It is just as easy to teach/learn as python and doesn't need the aforementioned disclaimer. Web services are a breeze to write and is built for scale. I understand that there are criticisms against the language design of Go, some are valid and most are just because it was made by Google but none questioning the scalability of Go applications.
- KirinDave 7y agoMany of my complaints about Python are valid for Go, except that Go makes even more perilous decisions than Python for error handling (and the community kinda gleefully embraces it). But at least Go is a lot faster and has real concurrency AND parallelism, so it's definitely better than Python.
- WaxProlix 7y agoGo makes worse decisions even, I'd say. Python has gevent, one of the best and most friendly greenlet libs around too, so the concurrency/parallel issues seem fairly moot. It's true that the batteries-included versions of things, while mostly easy to use, falter at scale.
- aikah 7y ago> so the concurrency/parallel issues seem fairly moot. Python has the GIL, so true parallelism can only be achieved with basically cloning a process X times the number of processors on a computer and inter process communication. Go doesn't have this problem.
- xxxpupugo 7y agoI don't know why you hate it so much TBH. It is a language, better than MatLab/R/SPSS, which come before it. I honestly don't think it is that bad. And they are many people don't care from a programming language perspective, they need to just finish the functionality.
- KirinDave 7y ago> It is a language, better than MatLab/R/SPSS, which come before it. I don't think so. I think R is a lot more expressive and not really any harder to read. It might have a steeper learning curve, but it's not so bad that I think that actually matters.
- Ultimatt 7y agoI'm currently learning R. Its a terrible, dreadful programming language. But an excellent DSL for statistical analysis. The main mechanisms for the expressive nature of R is its use of the Environment structure, and terrifying casual use of call stack inspection just to make symbolic APIs. It doesn't even make the latter part of the language without Tidyverse things like rlang. In fact without the Tidyverse efforts the language is even bad as a DSL unless you only deal with a CSV of data with like 100 data points.
- xxxpupugo 7y agoI think R is a much worse programming language, like 1 indexing, very unintuitive string manipulation, dataframe being the magic facade that hides complexity, etc. I would choose Python any day if the other option is R.
- FranzFerdiNaN 7y ago1-indexing makes sense within the realm in which R shines. It’s only CS people who seem to completely lose their shit when they encounter it. I’m glad Julia also has 1-indexing.
- bart_spoon 7y agoIf you are a computer scientist doing a little data science, then R is awful for the reasons you detailed. If your function entirely consists of data science, then R is a fantastic language for the same reasons you hate it.
- autokad 7y agoDisclaimer, I am a data scientist I feel the complete opposite. I really enjoy working with python over any other language. R does linear models and time series better and matlab has its charm, but overall I prefer python. Python is so easy to read and quick to program in. I am so glad I am not in the Java/C++ world anymore, but I know people in different roles have to deal with different issues.
- willtim 7y ago> I really enjoy working with python over any other language. I assume you mean, "over any other language I have tried" ? As someone with a mathematical background myself, I am always surprised at how many data scientists and quants are ignoring more mathematically principled languages like F#, OCaml and Haskell.
- p1esk 7y agoF#, OCaml and Haskell Can I quickly prototype a new deep learning model and scale it to a 32 GPU cluster with very little effort in those languages?
- CameronNemo 7y agoIf you put in as much time as you have learning Python, then the answer is probably yes.
- p1esk 7y agoProbably yes What does it mean? Have you done it in any of those language? Have you seen it done in any of those languages?
- haspok 7y agoAlthough I'm not sure what you mean by "deep learning", you can take a look at Spark: https://spark.apache.org/mllib/ https://spark.apache.org/mllib/ As a bonus, it IS Python (numpy) in the background mixed with Scala. So you can use each language where they make the most sense - Python for the maths number crunching and Scala for the business logic and the architecture. I think Spark also has .net bindings (so you can also tick F# on that list...).
- deleted 7y ago[deleted]
- trilila 7y agoWhat I find worse about Python than other languages is the lack of tooling and a relatively small collection of libs - many of which are half way done. In a last assignment, we decided Python is at most a hobby language. Python is great for machine learning because most research was conducting using this language, and as such, tooling is available. I would use it at most as an API exposing ML but that's pretty much it.
- Daishiman 7y agoI don't know what parallel reality you live in but there are few languages with as many packages for getting productive things done than Python. In web dev andam data science I have yet to see a language with as many libraries for useful stuff. Now, if what you're looking for is high performance and precise memory management, sure, the language will never give you that. What language has as many easily available libraries? Java, .net and npm come to mind as the only comparable ecosystems.
- trilila 7y agoWell, that's what I said, there are plenty of packages for data science. For building APIs and web stuff usually there aren't. Python is nowhere near NodeJS for instance. But whatever suits, if you only know one language, it will seem like the best language out there.
- Daishiman 7y agoNo? You have Django and DRF and Flask. DRF is, by far, the best designed framework for building APIs in any programming language I have ever seen, and I've at this game for a long time. JavaScript has 10 times more packages than PyPi, and for the most part they are absolute garbage with no intent on being maintained. Python has substantially fewer packages where the community rallies around them and keeps them as best-in-class. SQLAlchemy, DRF, factoryboy, requests, etc., are all incredible one-stop-shops for the vast majority of use cases. You don't need 15 libraries for doing HTTP requests. You just need one good one that does the job so you never have to think about the problem ever again. Python excels at this class of libraries and by comparison npm has appalling choices.
- stephen_g 7y agoYeah, I'm a bit sick of Python. We have some internal utilities written in it and while developers could manage all the dependencies and everything, we kept having problems with getting everything working on the machines of our electronics techs. Gradually pretty much everything has been rewritten in C++ (with Qt GUI framework). Way easier to be able to have a setup program (using free InnoSetup) that just extracts the eight or so DLLs required in the same folder as the EXE and that's it. We just use Python for a bit of prototyping and data crunching here and there now.
- icebraining 7y ago> Way easier to be able to have a setup program (using free InnoSetup) that just extracts the eight or so DLLs required in the same folder as the EXE and that's it. You can do the same with Python.
- stephen_g 7y agoYeah, we tried all sorts of ways to do it. Couldn’t get it to work satisfactorily with the particular libraries we were using.
- Fnoord 7y agoYou can configure Pep8/Flake8 to ignore subset of rules. You might wanna look into that. Also, automatically executing it might be your preference, or not.
- jammygit 7y agoI look at developer surveys sometimes when I'm trying to decide what to learn next. According to the 2018 stack overflow survey, 68% of python users would like to use it again in the future [1]. The surveys never tell me why though. What do people like or dislike about python? I know it has a lot of libraries people love (scikit-learn, tensorflow come to mind) [1] https://insights.stackoverflow.com/survey/2018/#most-loved-dreaded-and-wanted https://insights.stackoverflow.com/survey/2018/#most-loved-d...
- pojzon 7y agoThose surveys are often targeting mosstly newer devs who know no better because they did not have the time to validate their opinion against real world. Its not thir fault tho, you can only do so much in limited time, thats why expertize requires years.
- retrobox 7y agoI’m really glad to hear someone else voice these frustrations. I’ve really tried to embrace Python and everyone tells me how great it is. I feel like a failure as a developer but I dislike it so much I quit a job, that switched to Python as the primary language, and took a year off from development. I’m pretty much a polyglot as far as languages go but Python riles me.
- mixmastamyk 7y agoPython is the simplest mainstream language yet still reasonably powerful. Some folks don’t like simple and I’ve found it’s better in the long term to find those that do.
- iLemming 7y agoI was smart and lucky enough to switch from Python to Clojure and from Javascript to Clojurescript. I am not even sure anymore what have I liked about Python back then. I know for sure - those who really like Python probably haven't given a heartfelt try to Clojure, Haskell or Racket.
- blub 7y agoOver-sensitive individuals are hard to please and often unhappy. That's more of a personality flaw than a flaw with the current state of software engineering. If there's one thing wrong with our profession is a lack of ethics and accreditation - we're essentially letting random people build critical infrastructure and utilities. We don't have a tooling problem, in fact we have too many tools. I see so many people (especially on HN) fixating on tools, dissecting programming languages, editors and libraries into their most minute parts and then inevitably finding faults in them, disavowing them and swearing that other tools X, Y and Z are purer and worthier. If you want to stop hating software and improve your burn out, stop caring about irrelevant stuff.
- vturner 7y agoOversensitive? Is the contractor who chooses a Dewalt or Ridgid over a Ryobi for daily work "caring about irrelevant stuff"? A drill is a drill right? Why is it different for us in software?
- lsc 7y agoMaybe. (and I thought festool was the new hotness? I thought that at least rigid and ryobi had been devaluing their brand by selling cheap junk under their brand? But I'm solidly in the 'prosumer' and not 'real contractor' end of the market, so not an expert or even close observer, really.) But I think the point OP was making is that contractors have a licensing and training program, and if you hire someone to put a roof on your house, they either have to go through that process or work under someone who went through that process. I mean, choosing the right tool is a small part of that, but someone in the chain of command is gonna have words with you if you bring your Xcelite screwdriver and try to use it on the roofing job. That's not true almost anywhere in software, and that probably makes a big difference. (I mean, not being educated myself, i personally have mixed feelings about licensure. But it's a good discussion to have, and I think that there should be something like the PE for software engineers (and there was, in texas, but it will be discontinued this year. )
- blub 7y agoI don't know anything about those brands you mentioned, but a programming language is more complex than most (all?) mechanical tools, it's designed over years and continues to change over decades. It's impossible to do a perfect job under such conditions, and it's anyway impossible to please everyone.
- mixmastamyk 7y agoThis is the top comment? Not very useful.
- KirinDave 7y agoSorry. I'm as surprise as you are. I figured I'd take a small hit the karma and I feel better about getting this off my chest. This comment is more highly rated than some links I've submitted that made it to the front page.
- mixmastamyk 7y agoI believe. Probably evidence that Python is more heavily used than ever, even in places it shouldn't be.
- vturner 7y agoThanks for posting. I've wondered if it's just me or does anyone else want to leave software engineering because of Python's dominance. There's no arguing against it either because as this thread shows, "I like it for my use case, look at these libraries that let you get X and Y done SOOOO easy, so it must be great for everything."
- copperx 7y agoI've contemplated leaving SE behind because of JavaScript, not because of Python. Do you tolerate JS?
- hombre_fatal 7y agoI hated Javascript back when all it had were callbacks, but once native promises stabilized, I loved the simplicity + ubiquity of the promise abstraction, and then later async/await. Now it's actually my favorite dynamically-typed language. I've noticed a lot of Javascript hate also comes from people just disliking client development (which isn't easy on any platform).
- vturner 7y agoI thoroughly enjoy UI/client development, but the web app tooling (layer upon layer that is supposed to "fix" HTML/CSS/JS every few years) is frustrating to me. Thus, I avoid it like the plague. :) To be fair, the JS ecosystem I think is a bit more tolerable than Python. JS isn't being promoted far and wide as the good-enough tool for everything like Python is. A lot of JS is focused on the "view", and I can see a dynamic language fitting there (though React/Redux is making me rethink that).
- cameronbrown 7y ago> and that infernal pep-8 linter insisting 80 characters is a sensible standard in 2019 I don't know why 80 characters is a problem. I don't use the linter but I enforce this rule religiously with a couple of exceptions (long strings comes to mind). It forces me to think heavily about the structure of the code I'm writing. If I'm nesting so deeply, something has gone wrong. If I've got a ton of chained methods or really lengthy variables, it forces me to rethink them. This also has the advantage of being able to put 4 files next to each other with full visibility. Vertical space is infinite, horizontal space isn't. It's probably a good idea to use it.
- guitarbill 7y agoIt's also awesome if you have to do code reviews on a laptop or don't have a massive screen available. That said, we usually just go with autoformatting via black, which is 120 by default. No more hassle manually formatting code to be pep8-compliant. Just have black run as a commit hook, which is super easy via pre-commit [0]. And you can run the pre-commit checks during CI to catch situations where somebody forgot to install the hooks or discovered `--no-verify`. Can't really imagine developing Python without Black any more. [0] https://pre-commit.com/ https://pre-commit.com/
- chimprich 7y agoI haven't got round to trying Black, but according to the project's README[0], the default is 88. Personally I think 79 is fine, but I can cope with up to about 100. Above that and you risk some really crappy code in my opinion. EDIT: Sounds like the Black author agrees. "You can also increase it, but remember that people with sight disabilities find it harder to work with line lengths exceeding 100 characters. It also adversely affects side-by-side diff review on typical screen resolutions. Long lines also make it harder to present code neatly in documentation or talk slides." [0] https://github.com/psf/black https://github.com/psf/black
- somada141 7y agoWhile initially resistant I've come around on Black for our team and a failed Black check will now make a CI build fail for all our projects. We're still using the community edition of SonarQube [0] for inspection but Black finally did away with the constant bikeshedding over formatting minutia, seems like it's saving us tons of time. [0] https://www.sonarqube.org/ https://www.sonarqube.org/
- deleted 7y ago[deleted]
- goto11 7y ago> folks then vehemently lecture me about the hours saved by future barely-trained developers who will ostensibly have to come and work with my code. It seems you are really complaining about having to write code which is maintainable by others than yourself?
- KirinDave 7y agoMaybe that's true, maybe it's not. A corporate point of view is than any programmer should be interchangeable with the minimum amount of fuss. I understand why someone building an injury organization has a responsibility to think about the future. But I confess that sometimes I feel very demoralized when an organization implicitly tells me that my years is study and my ongoing self-education and practice is all meanless Because in principle someone fresh out of college should be able to take over my project with the two week handoff and a few docs.
- goto11 7y agoBut how is that the fault of Python or any particular language?
- antupis 7y agoThere is great saying that Python is the second-best language for everything and it might be true. Where Python excels is that you have good-enough libraries and support almost everything. All other languages have some pain points where they shine very brightly in some areas but they have very bad or non-existing libraries and support to other areas.
- ourlordcaffeine 7y agoThere is a lot of hype and "they are using it too" mentality as well I think. I am working on control software which, if it crashes or even takes a tiny bit too long to issue a command, could cause the company big financial loss. I was forced to do it in python "because everyone else is using python".
- deleted 7y ago[deleted]
- mailslot 7y agoFortran has great linear algebra libraries.
- marmaduke 7y agoIt sounds like you're bothered by its syntax or lack of sophisticated type system etc. But it's just a tool, not a amusement park. > why people seem to like it so much? > cobble together something like a Bayesian model things like PyMC or Edward actually give you performance that's obnoxiously difficult to reproduce And this, across many domains
- jpindar 7y ago>that infernal pep-8 linter insisting 80 characters is a sensible standard in 2019 So change the limit or disable that check. If someone is keeping you from doing that they're the one who's insisting on 80 characters, not the language. Who uses any linter without making some changes to its default settings?
- ryanisnan 7y ago(and that infernal pep-8 linter insisting 80 characters is a sensible standard in 2019) increases my burnout by 100x I've yet to encounter a python linter where you can't pick and choose which rules to ignore. This is a first one to go. Annoying PEP for sure, but https://pypi.org/project/black/ https://pypi.org/project/black/ almost completely eliminates your issue.