And most of that misses the goal of why you write software for a business.
You write software for a company so someone will give them money for it or so the company can save money
Everything else takes a backseat to that core mission. The first goal when writing software is to efficiently get to a point where one of those goals can be met.
It makes no sense to polish software if you are going to run out of money before it gets released, management cuts funding or you can’t find product market fit to convince investors to give you money depending on what your goal is.
Code doesn’t always need to be long lasting, you can’t predict how the market will change, how the underlying platform will change, when a better funded competitor will come in and eat your lunch, etc.
Good design doesn’t need to be “innovative”. It needs to fit within the norms of the platform or ecosystem it is part of.
Good thing not all of us write software for a business.
I write little utilities for my parents, games for my son, a web shop for my wife. I write social spaces for myself and my friends. I write tools for myself.
I write software for strangers on the internet. I write software when I’m drunk, to test myself. Sometimes I write software simply for the joy of writing it, and it never runs again after that first “ah, finally!” moment. Aah, time well spent.
Equating “writing software” with “fulfilling business goals” is…quite depressing. Get outside! Feel the sunshine on your face! Write your own image-processing DSL, just for the sheer unbridled hell of it! Learn Nim! Why not?
As someone who learned Nim as my first "serious" programming language, I do recommend to learn Nim. It is a delight to write and read.
Before I found Nim I looked at C, C++, Python and all of them full of cruft - old bad decisions that they're stuck with and forced to keep in the language. And it makes them a nightmare to learn.
In C there seems to be hundreds of subtly different OS-dependent APIs for every simple thing.
C++ was designed by mad scientist and extended to the point where even c++ developers have no idea what part of the language you should use.
Python is the messiest mess of OOP with non-existent documentation that is actually readable. Just to find how to do anything in Python I need to look at sites like stackoverflow and find outdated solutions for Python 2, deprecated functions and giant third party libraries. Yeah you don't learn Python nowadays, you forced to learn Python + NumPy + Pandas + Python Package Distribution (hell).
I feel like that’s the curse of most programming languages that end up mainstream and survive for a decade or two - some amount of legacy cruft or bad decisions that end up more or less set in stone is inevitable.
> Just to find how to do anything in Python I need to look at sites like stackoverflow
Huh? Surely you don’t expect docs to answer generic questions like, “how do I flatten a nested list?”
Pandas (and Polars!) is an excellent library that serves specific needs. One of those is not doing basic file parsing. I’ve seen comments advocating its usage for tasks as simple as “read a CSV file in and get the Nth column.” The same goes for NumPy – powerful library that’s ridiculously over-used for things that are trivially solvable by stdlib.
You realize “writing code on a computer” is just the opposite of “getting outside”? Getting outside for me is getting outside.
My wife is out of town this weekend at a conference. I woke up, fixed breakfast, went outside and swam a few laps in the pool enjoying this 80 degree weather (the joys of living in Florida), hung out at the bar downstairs, came back upstairs and took a shower and I am heading back downstairs to hang out at one of the other bars downstairs and just shoot the shit with the bartender who is a friend of mine and whoever else shows up while drinking soda (I go down to hang out not always to drink) and listening to bad kaorake.
When my wife comes back tomorrow, we will hang out during the day and go back downstairs to the bar tomorrow to watch the Super Bowl.
We have 8 vacations planned this year not including 5-6 trips to fly up to our home town in Atlanta (where we lived all of our adult lives until two years ago) for things going on in our friends lives and to fly to my child hood home to see my parents and family.
Not bragging, most of our vacations aren’t anything exotic or expensive and I play the credit card point/sign up bonus/churnimg game to offset some of the costs.
My focuses on how to add business value was what allowed me to find strategic consulting jobs where most jobs are still fully remote.
You must have realized that by, “going outside,” the parent meant “doing something that makes you happy,” and not necessarily literally being outdoors. They find joy writing code. You realized that, and still chose to demean them with this reply.
> And most of that misses the goal of why you write software for a business. You write software for a company so someone will give them money for it or so the company can save money
Hmm. I run a solo-founder SaaS business. I write software for my customers so that they can improve their workflows: essentially, work faster, with fewer mistakes, and make work easier. My customer pay me money if my software improves their lives and workflows. If it doesn't live up to the promise, they stop paying me money.
Most of Dieter Rams's design rules very much do apply to software that I write. I can't always afford to follow all of these rules, but I'm aiming to.
And while I don't always agree with antirez, his post resonated with me. Many good points there.
Incidentally, many of the aberrations he mentioned are side-effects of work-for-hire: if you work for a company and get a monthly salary, you are not directly connected to customers, do not know where the money comes from, and you are not constrained by time and money. In contrast to that, if you are the sole person in a business, you really care about what is the priority. You don't spend time on useless rewrites, you are super careful with dependencies (because they end up costing so much maintenance in the future), you comment your code because you do so much that you forget everything quickly, and you minimize complexity, because simpler things are easier to build, debug and maintain.
> Hmm. I run a solo-founder SaaS business. I write software for my customers so that they can improve their workflows: essentially, work faster, with fewer mistakes, and make work easier. My customer pay me money if my software improves their lives and workflows
So your goal is to write software so that customers will give you money because they see that your software is valuable to them. How does that conflict with what I said? That’s the goal of every legitimate company.
I work in consulting. I work with sales, I am the first technical person a customer talks to on a new engagement and when they sign the contract, I lead the implementation and work with the customer. I know exactly where the money comes from and what the customer wants.
If a developer is not close to the customer and doesn’t have as their focus the needs of the business, they are going to find themselves easily replaced and it’s going to be hard to stand out from the crowd when looking for a job
You write software for a company so someone will give them money for it or so the company can save money
Everything else takes a backseat to that core mission. The first goal when writing software is to efficiently get to a point where one of those goals can be met.
It makes no sense to polish software if you are going to run out of money before it gets released, management cuts funding or you can’t find product market fit to convince investors to give you money depending on what your goal is.
Code doesn’t always need to be long lasting, you can’t predict how the market will change, how the underlying platform will change, when a better funded competitor will come in and eat your lunch, etc.
Good design doesn’t need to be “innovative”. It needs to fit within the norms of the platform or ecosystem it is part of.