this post was submitted on 01 Sep 2023
13 points (100.0% liked)

Programming

17748 readers
574 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities !webdev@programming.dev



founded 2 years ago
MODERATORS
top 50 comments
sorted by: hot top controversial new old
[–] million@lemmy.world 7 points 1 year ago* (last edited 1 year ago) (6 children)

Refactoring is something that should be constantly done in a code base, for every story. As soon as people get scared about changing things the codebase is on the road to being legacy.

[–] NoXzema@lemmynsfw.com 1 points 1 year ago

Been with a lot of codebases that had no unit tests at all and everyone was afraid to change anything because the QA process could take weeks to months.

The result is you have a codebase that ages like milk.

load more comments (5 replies)
[–] AdmiralShat@programming.dev 7 points 1 year ago* (last edited 1 year ago) (3 children)

If you don't add comments, even rudimentary ones, or you don't use a naming convention that accurately describes the variables or the functions, you're a bad programmer. It doesn't matter if you know what it does now, just wait until you need to know what it does in 6 months and you have to stop what you're doing an decipher it.

[–] fkn@lemmy.world 2 points 1 year ago

Self documenting code is infinitely more valuable than comments because then code spreads with it's use, whereas the comments stay behind.

I got roasted at my company when I first joined because my naming conventions are a little extra. That lasted for about 2 months before people started to see the difference in legibility as the code started to change.

One of the things I tell my juniors is, "this isn't the 80s. There isn't an 80 character line limit. The computer doesn't benefit from your short variable names. I should be able to read most lines of code as a single non-compound sentence in English with only minor tweaks and the English sentence should be what is happening in most of those lines of code."

[–] Kolanaki@yiffit.net 1 points 1 year ago* (last edited 1 year ago)

it doesn't matter if you don't know what it does now

If I don't know what it does now my comment of "I have no idea wtf this does" won't help me in 6 months.

[–] A_Porcupine@lemmy.world 1 points 1 year ago

However, engineers who rely solely on comments to explain their code, are bad at writing readable code.

[–] uniqueid198x@lemmy.dbzer0.com 5 points 1 year ago (4 children)

Programing is a lot less important than people and team dynamics

load more comments (4 replies)
[–] witx@lemmy.sdf.org 4 points 1 year ago (6 children)

Python is only good for short programs

[–] lysdexic@programming.dev 1 points 1 year ago (5 children)

Python is only good for short programs

Was Python designed with enterprise applications in mind?

It sounds like some developers have a Python hammer and they can only envision using that hammer to drive any kind of nail, no matter how poorly.

load more comments (5 replies)
[–] NBJack@reddthat.com 1 points 1 year ago

Python should not be used for production environments, or anything facing the user directly. You are only inviting pain and suffering.

load more comments (4 replies)
[–] Vince@feddit.de 4 points 1 year ago* (last edited 1 year ago) (1 children)

Not sure if these are hot takes:

  • Difficult to test == poorly designed
  • Code review is overrated and often poorly executed, most things should be checked automatically (review should still be done though)
  • Which programming language doesn't matter (within reason), while amount of programming languages matters a lot
[–] Xylight@lemmy.xylight.dev 1 points 1 year ago

I've been wanting to make my applications easier to test. The issue is, I don't know what to test. Often my issues are so trivial I notice them immediately.

What are some examples of common things in, let's say a web server, that could be unit tested?

[–] MrTallyman@programming.dev 4 points 1 year ago (6 children)

My take is that no matter which language you are using, and no matter the field you work in, you will always have something to learn.

After 4 years of professional development, I rated my knowledge of C++ at 7/10. After 8 years, I rated it 4/10. After 15 years, I can confidently say 6.5/10.

load more comments (6 replies)
[–] r1veRRR@feddit.de 3 points 1 year ago (1 children)

Compiler checked typing is strictly superior to dynamic typing. Any criticism of it is either ignorance, only applicable to older languages or a temporarily missing feature from the current languages.

Using dynamic languages is understandable for a lot of language "external" reasons, just that I really feel like there's no good argument for it.

load more comments (1 replies)
[–] asyncrosaurus@programming.dev 3 points 1 year ago (4 children)

SPAs are mostly garbage, and the internet has been irreparably damaged by lazy devs chasing trends just to building simple sites with overly complicated fe frameworks.

90% of the internet actually should just be rendered server side with a bit of js for interactivity. JQuery was fine at the time, Javascript is better now and Alpinejs is actually awesome. Nowadays, REST w/HTMX and HATEOAS is the most productive, painless and enjoyable web development can get. Minimal dependencies, tiny file sizes, fast and simple.

Unless your web site needs to work offline (it probably doesn't), or it has to manage client state for dozen/hundreds of data points (e.g. Google Maps), you don't need a SPA. If your site only needs to track minimal state, just use a good SSR web framework (Rails, asp.net, Django, whatever).

[–] GaveUp@hexbear.net 1 points 1 year ago

Preferring server side rendering is an interesting topic

Client side renderering is currently the preference because the company gets to offload the compute costs of their servers onto the clients' devices

As long as every website has a profit motive, even if it's just a single person trying to save some money on their AWS bills, server side rendering will never become the norm

load more comments (2 replies)
[–] fubo@lemmy.world 3 points 1 year ago* (last edited 1 year ago) (2 children)

Until you know a few very different languages, you don't know what a good language is, so just relax on having opinions about which languages are better. You don't need those opinions. They just get in your way.

Don't even worry about what your first language is. The CS snobs used to say BASIC causes brain damage and that us '80s microcomputer kids were permanently ruined ... but that was wrong. JavaScript is fine, C# is fine ... as long as you don't stop there.

(One of my first programming languages after BASIC was ZZT-OOP, the scripting language for Tim Sweeney's first published game, back when Epic Games was called Potomac Computer Systems. It doesn't have numbers. If you want to count something, you can move objects around on the game board to count it. If ZZT-OOP doesn't cause brain damage, no language will.)


Please don't say the new language you're being asked to learn is "unintuitive". That's just a rude word for "not yet familiar to me". So what if the first language you used required curly braces, and the next one you learn doesn't? So what if type inference means that you don't have to write int on your ints? You'll get used to it.

You learned how to use curly braces, and you'll learn how to use something else too. You're smart. You can cope with indentation rules or significant capitalization or funny punctuation. The idea that some features are "unintuitive" rather than merely temporarily unfamiliar is just getting in your way.

load more comments (2 replies)
[–] CodeBlooded@programming.dev 2 points 1 year ago (2 children)

Python, and dynamically typed languages in general, are known as being great for beginners. However, I feel that while they’re fun for beginners, they should only be used if you really know what you’re doing, as the code can get messy real fast without some guard rails in place (static typing being a big one).

load more comments (2 replies)

Agile in it’s current implementation with excessive meetings wastes more time than the mistakes it tries to avoid.

[–] Elderos@lemmings.world 2 points 1 year ago* (last edited 1 year ago)

The best codebase I have ever seen and collaborated on was also boring as fuck.

  • Small, immutable modules.
  • Every new features was coded by extension (the 'o' in S.O.L.I.D)
  • All dependencies were resolved by injection.
  • All the application life cycle was managed by configurable scopes.
  • There was absolutely no boiler plate except for the initial injectors.
  • All of the tests were brain-dead and took very minimal effort to write. Tests served both as documentation and specification for modules.
  • "Refactoring" was as simple as changing a constructor or a configuration file.
  • All the input/output of the modules were configurable streams.

There is more to it, but basically, it was a very strict codebase, and it used a lot of opinionated libraries. Not an easy codebase to understand if you're a newbie, but it was absolutely brain dead to maintain and extend on.

Coding actually took very little time of our day, most of it consisted of researching the best tech or what to add next. I think the codebase was objectively strictly better than all other similar software I've seen and worked on. We joked A LOT when it came time to change something in the app pretending it would take weeks and many 8 pointers, then we'd casually make the change while joking about it.

It might sound mythical and bullshity, and it wasn't perfect, it should be said that dependency injection often come in the form of highly opinionated frameworks, but it really felt like what software development should be. It really felt like engineering, boring and predictable, every PO dreams.

That being said, I given up trying to convince people that having life-cycle logic are over the place and fetching dependencies left and right always lead to chaos. Unfortunately I cannot really tell you guys what the software was about because I am not allowed to, but there was a lot of moving parts (hence why we decided to go with this approach). I will also reiterate that it was boring as fuck. If anything, my hot take would be that most programmers are subconsciously lying to themselves, and prefer to code whatever it is they like, instead of what the codebase need, and using whatever tool they like, instead of the tools the project and the team need. Programming like and engineer is not "fun", programming like a cowboy and ignoring the tests is a whole lot of fun.

[–] phoenixz@lemmy.ca 1 points 1 year ago (5 children)

Go with what works

Error messages should contain the information that caused the error. Your average Microsoft error "error 37253" is worthless to me

Keep functions or methods short. Anything longer than 20 - 50 lines is likely too long

Comment why is happening, not what

PHP is actually a really nice language to work with both for web and command line utils

Don't over engineer, KISS. Keep It Simple Stupid

SOLID is quite okay but sometimes there are solid reasons to break those rules

MVC is a PITA in practice, avoid it when possible

load more comments (5 replies)
[–] Masterkraft0r@discuss.tchncs.de 1 points 1 year ago* (last edited 1 year ago)

As an embedded firmware guy for 10ish years:

C can die in a fire. It's "simplicity" hides the emergent complexity by using it as it has nearly no compile time checks for anything and nearly no potential for sensible abstraction. It's like walking on an infinite tight rope in fog while an earth quake is happening.

For completely different reasons: The same is true for C++ but to a far lesser extent.

[–] rikudou@lemmings.world 1 points 1 year ago

Modern PHP is great and people judging it by PHP 5 (version that's almost 20 years old) are idiots.

[–] eeleech@lemm.ee 1 points 1 year ago

I find that S-expressions are the best syntax for programming languages. And in general infix operators are inferior to either prefix or postfix notation.

[–] hansl@lemmy.ml 1 points 1 year ago

Hot take: people who don’t like code reviews have never been part of a good code review culture.

[–] chicken@lemmy.dbzer0.com 1 points 1 year ago

I am not smart enough to effectively code with certain languages and design patterns and that's ok. There is nothing wrong with accessibility being prioritized or with making tradeoffs for the sake of reducing complexity.

[–] bidenicecream@hexbear.net 1 points 1 year ago* (last edited 1 year ago)

Computer hardware has been getting faster and faster for decades at this point, but my computer still slows down. Like WTF. The dumbass programmers take the extra power given to them and squander it instead of optimizing their code. Microsoft word could run pretty well on a windows 98 PC, but the new Word can slow down PCs that are 5-10 years old. Programmers are complete idiots sometimes...

[–] corstian@lemmy.world 1 points 1 year ago

Most modern software is way too complex for what it actually does.

load more comments
view more: next ›