July 24th, 2024

My programming beliefs as of July 2024

Evan Hahn emphasizes tailored programming approaches, distinguishing "simple" from "easy," promoting testability through modularity, and advocating for ethical coding practices prioritizing societal impact and nuanced thinking in software development.

Read original articleLink Icon
My programming beliefs as of July 2024

In July 2024, Evan Hahn shared his beliefs on computer programming, emphasizing the importance of tailoring approaches to tasks, understanding the distinction between "simple" and "easy" in software design, and making invalid states unrepresentable to reduce bugs. He advocates for testability through modularity and acknowledges the benefits of functional programming over object-oriented programming. Hahn also discusses coding practices such as documentation, variable naming, and the use of enums over booleans. He suggests prioritizing high-level challenges like communication and team dynamics over typing new code. Additionally, he highlights the significance of building software for positive impact, avoiding projects that contribute to societal harm. Hahn reflects on the complexity of programming and the need for nuanced thinking in the field. His beliefs underscore the importance of ethical considerations and the broader impact of technology on society.

Related

Self and Self: Whys and Wherefores (2009) [video]

Self and Self: Whys and Wherefores (2009) [video]

The YouTube video discusses career and idea management, prioritization, Simula creation, structured programming, leadership in development, values in design, and efficient garbage collection. It mentions optimizing a Small Talk system in graduate studies.

Programmers Should Never Trust Anyone, Not Even Themselves

Programmers Should Never Trust Anyone, Not Even Themselves

Programmers are warned to stay cautious and skeptical in software development. Abstractions simplify but can fail, requiring verification and testing to mitigate risks and improve coding reliability and skills.

DHH – Programmers should stop celebrating incompetence (2021)

DHH – Programmers should stop celebrating incompetence (2021)

David Heinemeier Hansson criticizes celebrating incompetence in programming to combat imposter syndrome. He emphasizes deep understanding over surface-level knowledge, urging programmers to strive for mastery and competence through dedication and continuous learning.

I Probably Hate Writing Code in Your Favorite Language

I Probably Hate Writing Code in Your Favorite Language

The author critiques popular programming languages like Python and Java, favoring Elixir and Haskell for immutability and functional programming benefits. They emphasize personal language preferences for hobby projects, not sparking conflict.

Htmx: Simplicity in an Age of Complicated Solutions

Htmx: Simplicity in an Age of Complicated Solutions

Erik Heemskerk discusses the pursuit of a 'silver bullet' technology in software development, emphasizing simplicity over complexity. He critiques over-engineering in front-end development, highlighting trade-offs in code solutions for better user experiences.

Link Icon 10 comments
By @langsoul-com - 3 months
My programming beliefs of July 2024.

The most important thing when working for another company is the culture, the management, and then the people. Most times in tech, problems and tech used would be interesting enough. But as soon as the culture turns to shit, then the management would follow and people will self select out.

I used to think it didn't matter that much. Oh boy, how naive I was...

By @assbuttbuttass - 3 months
I don't necessarily agree that testability is the same thing as modularity. In my experience, tests that focus on one module in isolation and try to fake/mock all dependencies, including other modules in the same system, tend to be rather unrealistic and not that useful. Bugs are far more often found in the interaction between modules, due to mismatched assumptions between them. For this reason I try to fake/mock as little as possible in tests, and try to follow the principle "tests should run as close to prod as possible."
By @from-nibly - 3 months
> HTTP status codes aren’t worth fussing over.

Nope. This article is great, but absolutely no on this one. Specifically even for their 401 vs 403 status code. There are VERY clear definitions for these codes. Please don't goof them up. If you do I will not be able to use your api effectively.

By @zelphirkalt - 3 months
> It matters who I build for. Humanity is in trouble. An incomplete list of problems: climate change; war; authoritarianism; genocide; poverty; inequality; surveillance. I shouldn’t waste my time building software for people who are hurting people. I shouldn’t waste my time building software to make the boss rich, even if I’m the boss. There are a lot of jobs where I can use my skills to help people…I should work there if I can!

This. Now, I only need to find a job at some ethically OK company, that is not business bro profit oriented, but mainly orients itself by looking at how it can help people, that also pays acceptable wage for my knowledge and skill level.

I think it is part of a chicken and egg problem. Since we often don't care, too many companies exist, where this is not the case. And since there are not so many companies that care, it is difficult to switch away from ones current job to one at such a company.

By @baggy_trough - 3 months
I forget where I saw this, but it helps me get going:

"Start with the simplest thing that could possibly work."

By @ChrisMarshallNY - 3 months
I have to agree with many of these, but a bit sad that they need to be stated (I feel they are "common sense," like "Try using the tools I already have before reaching for new ones.").

As for the documentation one, I'd sure like to see folks at least do more headerdoc-type stuff. In my context (Apple native development in Swift), DocC has given new impetus to at least headerdoc.

I wrote up my own post on how I do documentation: https://littlegreenviper.com/leaving-a-legacy/

By @rldjbpin - 3 months
my belief: if you think your team's workflow sucks, there is always a worse one in a company you think would do better. always strive to improve it but do not demonize your peers over it.