this post was submitted on 06 Feb 2024
110 points (94.4% liked)

Programming

20418 readers
176 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 [email protected]



founded 2 years ago
MODERATORS
(page 3) 50 comments
sorted by: hot top controversial new old
[–] [email protected] 32 points 1 year ago* (last edited 1 year ago) (1 children)

If I can code doesn’t mean I know how to do X thing on your stupid phone

load more comments (1 replies)
[–] [email protected] 8 points 1 year ago

It's not magic

[–] [email protected] 38 points 1 year ago (5 children)

That a "working" prototype with no tests is just as good as a carefully-designed and well-tested feature. I see this happen so often that a coder puts a prototype in front of a product manager or exec and they are like, "this is exactly what we need, now! Ship that!" And then misery ensues for all of the engineers that need to maintain this piece of garbage. As managers pressure the engineers to build new features on top, they inevitably break fundamental parts of it, and without a confident leader to demand that tech debt is paid off, that product will consume the souls of many desperate coders.

In contrast, if you do it right the first time, there will be significant parts of code that never need to change, and the parts that do need to change will be much easier, because it will be obvious if it breaks the tests.

[–] [email protected] 8 points 1 year ago (2 children)

feature

Please, we ship whole projects without any automated testing whatsoever then we spend month fixing the mess. The company I work for is smort

load more comments (2 replies)
[–] [email protected] 10 points 1 year ago (1 children)

That sounds super familiar :D

Anyway, a prototype is not a bad thing, if the managers know the difference. It's easier said than done to "do it right the first time" if you don't know how / what to build. Prototypes can be built to validate hypotheses and generally figure out what works, then build the real thing afterwards.

[–] [email protected] 9 points 1 year ago* (last edited 1 year ago)

Yea I should have clarified. Prototypes are a great idea. The problem occurs when you say, "this is good enough we can improve on it as we go." Yea good luck balancing priorities when everything breaks from tapping your keyboard too hard. You MUST NOT MERGE the prototype.

load more comments (3 replies)
[–] [email protected] 17 points 1 year ago* (last edited 1 year ago) (6 children)

Myth: code can be ugly as long as it works, don't spend company time on making it look good or on minor optimizations.

The truth is that you can tell when effort has been put into a job. Even if it just works, the lack of discipline means that in the end it will be difficult to maintain and probably will fail in unexpected situations.

Every language has its conventions, but if I spot more than a line of separation between blocks of code, that is a common telltale sign of noob. Run from that shit.

load more comments (6 replies)
[–] [email protected] 9 points 1 year ago (2 children)

That “just changing a word” is easy and quick. A codebase is an iceberg. Management only really typically understands the surface, but there is a disproportionate amount of ice under the water.

I had to change all instances of a label from a word to an abbreviation. Because we don’t have i18n set up in the app, it ended up affecting 55 different files. I did my best to consolidate into everything calling a common function, but it’s far from perfect. 55 files changed because management said “oh this word here should be shorter”.

load more comments (2 replies)
[–] [email protected] 45 points 1 year ago (3 children)

Myth: software engineers replicate value similar to a factory worker making the same item over and over

Truth: software engineers are closer to artists than factory workers IMO. We find and create new value, not replicate existing value

[–] [email protected] 7 points 1 year ago

I feel this. But, in a lot of jobs you have someone forcing you to do art the way they had envisioned lol

[–] [email protected] 27 points 1 year ago (1 children)

And just like artists, the vast majority aren't very good at it.

[–] [email protected] 10 points 1 year ago

Yes but unlike artists we have far fewer sugar daddies.

[–] [email protected] 24 points 1 year ago (1 children)

eh, more like self-important plumbers

[–] [email protected] 7 points 1 year ago (1 children)

Just making some corkscrew pipes because the existing architecture is corkscrew piping.

load more comments (1 replies)
[–] [email protected] 32 points 1 year ago* (last edited 1 year ago) (2 children)

Technical Leads are not rational beings and lots of software is developed from an emotional stand point.

Engineering is trade offs, every technical decision you make has a pro/con.

What you should do is write out the core requirements/constraints.Then you weigh the choices to select the option that best meets it.

What actually happens is someone really likes X framework, Y programming language or Z methodology and so decides the solution and then looks for reasons to justify it.

Currently the obvious tell is if they pitch Rust. I am not saying Rust is bad, but you'll notice they will extoll the memory safety or performance and forget about the actual requirements of the project.

[–] [email protected] 5 points 1 year ago

I know they make a joke about Tom in office space being the one who brings the specs from the customers to the engineers - as much as it looks like he's dead weight, there really is a skill in being able to explore the customer's needs (and frequently manage their expectations of what the proposed software should be and do) and parse them into something more technical for the engineers, because you might not know how to program, but you've got a good idea of what the capabilities are because you communicate with the engineering team on a daily basis.

[–] [email protected] 27 points 1 year ago* (last edited 1 year ago) (1 children)

Currently the obvious tell is if they pitch Rust

I would amend that to "if they pitch any language".

The best language is almost universally "whatever we already use" or for new projects "whatever the team is most familiar with". It should occasionally be reconsidered, and definitely try out new languages, but actually switching to the new language after trying it out? That should be very very rare.

[–] [email protected] 6 points 1 year ago* (last edited 1 year ago) (1 children)

The team/organisations knowledge is a huge factor but its easy to fall into a trap where no matter what the problem is the solution is X language.

If I have an organisation that knows C# and we need to build a Web Application. I would suggest we need to learn Node.js and Typescript and not invest in a solution that turns C# into web pages.

load more comments (1 replies)
[–] [email protected] 22 points 1 year ago* (last edited 1 year ago) (3 children)

You NEED to be good be in math to program.

Whilest for some highly specialist fields you definitly do, but for a lot of jobs things don't get more complex than calculating averages.

[–] [email protected] 6 points 1 year ago

I don't think it's so much about the actual math, but learning good logic and problem solving skills, which math helps with.

[–] [email protected] 11 points 1 year ago (1 children)

I'd argue that you do need to be good at math to be an effective programmer, it's just that that doesn't mean what a lot of people think it means. You don't need to know all the ins and outs of quadratics, integrals, and advanced trigonometry, but I think you do need to have a really solid, gut-level understanding of basic algebra and a bit of set theory. If you're the sort of person whose head starts to swim when you see "y=3x+2", you're going to find programming difficult at best.

[–] [email protected] -2 points 1 year ago

I don’t even know what a y=3x+2 is but I have no problem with programming, algorithms and data structures

[–] [email protected] 35 points 1 year ago (4 children)

OTOH, you need to be good at the same kinds of reasoning that leads one to be good at math. Not knowing much math isn't a problem, but not being able to learn math is probably a dealbreaker.

[–] [email protected] 10 points 1 year ago

Nail on the head.

The reason programming curriculums are so math heavy is because of teaching logic.

You're either right or wrong in math. There is ONE answer to the formula. You can sometimes get there different ways though. The logic on your path is the key.

[–] [email protected] 12 points 1 year ago

I'm bad at math and struggled heavily through calc 2 and barely passed with a D+ but had little issue with data structures and algorithms (except when the algorithms were written in math notation, but still got through it after being explained in a logical set of steps instead).

load more comments (2 replies)
load more comments
view more: ‹ prev next ›