23
hashedram
34d

What unpopular opinion do you have about programming?

Comments
  • 12
    Not about the programming itsself, but rather some programmers.

    That useuslly seems to deem a language shitty based in stupid things and some people state a certain language based on they use a lot or due to its their favorite.
  • 10
    @Frederick absolutely true.

    Python sucks.

    That's my contribution to the question and the confirmation for @Frederick statement.
  • 13
    Type checking makes your application more predictable. Functional programming makes it more or less provable. This means any well written application in a language with a proper type system is more maintainable than any application in purely dynamic language.
  • 9
    Programming is not for everyone
  • 9
    You don't have to be absurdly passionate about it to be a good programmer.
  • 7
    Not all programmers are created equal.
  • 9
    TypeScript is a valid backend language.
  • 8
    There's nothing wrong with not commenting your code.
  • 5
    Programming is just Math on steroids.
  • 0
    @SortOfTested, your comment has moved me
    Thanks
  • 3
    @example-user please no... Don't throw in math, please
  • 0
    @Axel406 What?! All we do is add and subtract ones and zero, duhh
  • 5
    You should write unit tests :(
  • 0
    @craig939393 You said you’ll pay my income?
  • 6
    Tabs are superior to spaces. There is no need for semicolons in modern JavaScript. Code style consistency is a religious dogma and you don’t need it. Html, css, mp3, bmp and other formats are programming languages but json is not. Robert Martin is an idiot and his opinion should mean nothing.
  • 7
    I hate frameworks. I hate every single one, from react and angular through CakePHP and all Laravel, and all of them. Express I can endure... I also can't understand how can somebody be react dev without knowledge of javascript.
  • 0
    I also hate typescript, for me, it's like vegan meat. I'm also vegan by the way...
  • 1
    @example-user *enterprise systems should have unit tests
  • 5
    You should know how something works before just randomly picking the latest buzzword blackbox off the shelf to hide it all. - How the hell are you going to debug something you don't understand
  • 5
    Meta-programming via annotations is the worst!

    I understand the necessity for quick implementation of crosscutting concerns via 3rd party code. But now you have invented a second programming language that sits (literally!) on top of my actual code.

    bro, you high? plz staph :(
  • 1
    Programmers are like drug addict and finding and fixing the bug is their drug.
  • 1
    Best common practice suck pretty badly quite often.
  • 7
    Reinvent the fucking wheel!

    Often, packages made by others are barely passable in terms of quality -- they made a square wheel.

    Instead of installing other people's public packages, no matter how popular that package is, there's no shame in reimplementing or even just largely copying their code into your own codebase.

    The added advantage is that it becomes much easier to deal with breaking language/framework changes: When you rely on 300 vendor pacakges, you have to wait for hundreds of other developers to get the compatibility on their (often abandoned) libraries in order.

    Of course, I don't think you should just throw your package manager completely out of the window -- just that writing a maintainable IBANValidator module yourself and throwing it in the right directory might be less work than figuring out which version of a random iban-validator package is compatible with your framework & use case.
  • 0
    @SuspiciousBug Ideally, metaprogramming should be supported properly by the language.

    For example: PHP Docblocks are kind of a dirty abuse of commenting syntax, but the upcoming PHP 8 Attribute system uses a somewhat better system (even though it's too limited for my tastes). It introduces some new syntax to mark methods, variables, etc with attributes -- but the handling, the defined attribute itself, is an easy-to-understand PHP class.

    Rust Macros are an example of a very good (in my opinion) metaprogramming system. It goes beyond just attaching metadata, into the territory of true metaprogramming: Code which writes code for you.

    So whenever you find yourself writing out boilerplate, you can just macro out the boilerplate. But it does so with a standardized structured syntax.
  • 4
    Machine learning is just statistics on computers.
  • 3
    Many pretend that they 'love' programming.
  • 2
    @example-user Sometimes I think about we programmers as cheap mathematicians 😆
  • 6
    Creating websites was a lot more fun when it was simply HTML, some CSS, and occasional Javascript. The contortions of build tools and task runners and frameworks that take hours to set up and maintain took the joy out of all of it for me.
  • 5
    Python sucks, in fact most interpreted languages are awful to use

    Just give me properly typed variables/parameters
  • 5
    Unless you code something YOU want to create, programming ain't as fun as you're led to believe.
  • 2
    I hate python and php
  • 1
    If it runs; it’s good code.
  • 3
    C++ is a great language.

    Python is fun to program.

    Functional programming is just another approach to programming.

    MSVC is actually usable now.

    Puning is a useful technique.

    HTML is a great programming language.
  • 5
    Always write unittests first. And do not test every unit -- only test the units that represent your functionality, i.e. only test those parts that you create interfaces for [assuming you do].

    - These tests will be your guidelines keeping you on the track while you're building the feature.
    - These tests will not be a PITA when you are refactoring your implementation details
    - These tests will cover your implementation details completely (with a single exception of hard-to-repro error handling)

    I deem it unpopular because TDD fans urge us to cover every bit of code with tests, i.e. test almost all the units. That's tedious work and it slows our refactoring down. While a set of high-level-unit tests does the same job perfectly well and does not get in your way when you want to refactor things.
  • 2
    Leading commas > trailing commas.
  • 0
    @c3r38r170

    I find it useful in some places:

    class ClassName : public Something

    : Something()

    , m_var(5)

    , m_string("hello")
  • 4
    >90% of everything on GitHub is absolute garbage. 50% of that code is nicely branded and used by the mainstream.
  • 1
  • 0
    @uyouthe @LotsOfCaffeine @nitwhiz

    (here comes the Python addict to defend his precious): what's wrong with Python (and any too l other languages you have said suck)? Can you give me some concrete reasons? Check my comment history and you'll see I feel very strongly about this.
  • 0
    @pxeger of course you feel strongly about this, you're a python dev
  • 0
    @pxeger cPython is slow. Many of the libraries/frameworks encourage bad practices (e.g. Django using foreign key references to create synthetic fields on foreign classes at runtime). It has its uses but serious application/service programming outside of scripting is not one of them.

    As with every language, it has its uses.
  • 0
    @junon

    - yes Python is slow. But developer productivity is more important.

    - Python's uses clearly extend beyond being a "scripting language" (I hate that term) because it is actually used for "serious development" in production by loads of companies

    - I don't use Django so I don't know what that means but there are loads of other web frameworks out there
  • 1
    @pxeger

    - Developer productivity is not more important that maintain bility, performance, etc. in many, many cases. You wouldn't write a firewall in Python.

    - I know exactly what python is used for. It is, 100% undeniably, classified as a scripting language. It is an interpreted language that is embeddable within another runtime. It is a scripting language. It being used in production means nothing about its classification.

    - Yes there are. Many of them encourage bad practices.

    EDIT: further, I said cPython is slow. Not Python. Python doesn't have performance, it is a language. A language's performance is not measurable.
  • 4
    Spaces vs tabs dispute is pointless. Tabs are for indentation, spaces are for alignment. Do not use space for indentation, and do not use tab for alignment. If you are using tabs only or spaces only for both indentation and alignment, go stab yourself and die.

    Peace.
  • 1
    @pxeger

    Python (And plain JS, and PHP, and Rails, and...) is great for productivity right now, but not so much for productivity later.

    It's a loan with interest.

    Setting up a Django or Laravel or Express project will get you a working prototype of a website. Within 24 hours you have a usable website.

    Now imagine you REALLY ACTUALLY hold the next Uber. You get your Series A, you hire 200 developers and buy pingpong tables and a life-sized golden Charizard fountain posing in a marble floored toilet (Yes, a certain Fintech startup on Amsterdam Zuidas, I'm looking at you).

    When people ask "does Python/PHP/Ruby/Js/etc scale", the right question would actually be: Does the paradigm of weakly typed monolith scale?

    200 developers working on a Python repo will become frustrating. Maintaining two or even twenty million lines of PHP in a monolith is suicide.

    Weak languages have their place. That place is in rapid prototyping.

    After that phase is over, all hail Rust.
  • 0
    @bittersweet Haha, I'm arguing both sides it seems.

    I worked for Uber corporate. Most of the company is using Python or Java. Just the last few years they've been pushing Go, but nobody will use it because Go is terrible.
  • 3
    @AvyChanna

    Agree that the dispute is pointless, but not for the same reason. Just set your IDE to "conform to project".

    And when it comes to curly bracket placement after methods: Your eyes get used to all kinds of formatting, as long as it follows a predictable, consistent pattern.

    Discussions about code style simply don't matter enough, when there are more important discussions about code structure, logic & safety to be had.
  • 1
    @bittersweet

    - Python and Ruby are not weakly typed
    - Developer productivity is undeniably more important in the vast majority of cases. Not for a firewall, but for most apps. What costs more: a whole new developer's salary, or a small scale-up in AWS?
    - "200 developers working on a Python repo will become frustrating" - do you have any evidence for this? I don't think that's true.
  • 1
    @pxeger Python is slow if you don't code in an idiomatic way. You have to learn to "push to the internals" to take advantage of the C side of the language. If you try coding python the same way you code C++ it will be slow. No it won't be as fast as a C++ program, but it isn't a dog either. If you really need to speed something up you can write a module in C/C++. Another option is using a JIT library to speed up specific functions. If high performance is the main criteria then Python probably isn't the right tool.
  • 0
    @pxeger
    - python slow without pypy can’t change my mind
    - dependencies are hell, django has its own dependency management
    - 2 vs 3, boubas still be using 2
    - ‘3’ * 3 = ‘333’
  • 1
    @uyouthe what's wrong with "3" * 3 = "333"? Do you want it to be 9? "9"? Or an error?
  • 0
    @pxeger this is super prone to errors especially when interacting with apis. It’s also unpredictable. I want it to be 9 or “9”
  • 3
    @pxeger Unpopular opinion: I think dynamic vs static and strong vs weak is ambiguous and stupid.

    Anything with a type system weaker than Haskell's S-tier type system is weak. 🤷‍♂
  • 0
    @pxeger I don't like it. Just like i don't like the color green for shoes.
  • 4
    I'm surprised it took this long for the type checking shitstorm to start.
  • 1
    Unpopular opinion (maybe?)

    I think both MVC monolithic backends and microservices are evil extremes.

    MVC (and any other related 3 or 4 letter paradigm) is evil because grouping code by syntactic similarities is simply insane. You never think "today I will work on all my controllers" or "sheez, our users really would like more middlewares and views" — you're working on the user profile system, or order system, or invoice system. Some systems might need routes & views, others might only act upon crons, or react to events from other systems.

    But microservices are also evil: when you try to simplify your code to the extent where all complexity moves to the infrastructure layer and decoupling is forced to the extent that data consistency is suffering, you have gained nothing.

    Microservices are a bridge too far.

    Miniservices is where it's at.
  • 2
    @hashedram It's not a shitstorm, more of a crusade, a holy cleansing, in which the unfaithful will either submit to the righteous path or be vanquished and made to suffer eternally as retribution for the foul stain that is the runtime error...

    Ah, yeah... I see it now too. That comes off as a bit strong 🤔
  • 0
  • 0
    @uyouthe '3'*3 = 9/'9'? You really are a JS bouba.
    Python does not 'help'(sarcasm) by automatically converting strings to numbers.

    What about 'a'*3? Is it 'aaa' or 291?
  • 0
    @AvyChanna nice strategy of defending your fragile mindset of enjoying your inferior programming language by insulting other people and other languages, I rate it solid 7/10 👍
  • 0
    @Demolishun a language requiring some additional shit to be at least comparable to proper languages in terms of performance? Js has an excuse of being a language that can’t be fucking updated by releasing a new version because browsers and compatibility. What excuse does python have besides guido being megalomaniac?
  • 1
    @uyouthe Case in point: Fortran has excellent performance, decent legacy code, and yet, I haven't used it since 2005.

    Obviously Python has objectively bad performance when compared to other languages, everyone knows that. The "excuse" is that it doesn't matter.

    Data scientists and engineers would much rather spend an hour coding from a plethora of legacy code and then run it over 5 minutes to gain a solution than spend significantly longer coding, with limited legacy code, and then wait for a compiler, but get the answer in 5 seconds. It's just not justifiable in most cases, unless you're running the code over and over and it's taking a long time, in which case; python doesn't get jealous, you can still use another language.
  • 1
    @uyouthe Not defending python there. I am not even a python dev. Just use it for side projects when I want to hack something together quickly.

    But really, who TF thinks that '3'*3=9 is acceptable? That is shitty design.(though '333' is also shitty) Also, you did not answer the second question. What is 'a'*3, or 'aaa'*3
  • 0
    @AvyChanna

    SELECT * from list_of_your_questions_i_have_to_answer;

    0 strings
  • 2
    Not sure if this is unpopular but;

    I think that you shouldn't be allowed to program on projects that people depend on/can use when you don't take care of security and/or fuck over user privacy (by using Facebook/google/surveillance services and/or tracking etc)
  • 2
    I'm getting sick of freelancing. I want a senior dev in my life to tell me what to work on because I'm shit at organizing my tasks or even chosing one to start.
Add Comment