I also founded, grew, but have not yet sold a boutique software services co.
I see on your profile you sold to a client. We have had that option before but the multiple on our earnings was too low to actually consider it. Curious what your revenue/earnings multiple was on the acquisition. Also curious about the handcuff terms. Giving up autonomy over my daily life is hard to swallow without 8 figures.
What's trippy is whatever workflow you have is probably molded around tools and biases that you take for granted. In modern times, there is no workflow that exists independent of technology. I can't imagine a way to isolate a "workflow" from a toolchain. And at that rate, you might as well just sample different tools until you find harmony.
The attention point is strong. However, I believe that it becomes a non issue if the concerns are well separated into the black boxes that they would be if drawn on a whiteboard. Fully disagree that whitespace is dangerous. It is only useless when misused.
Definitely agree with commenting deviations. Although I also advocate comments for each "operation". No problem if 5 lines of the same operation go uncommented, but if you have 5 lines of map().reduce().filter(), save your friends time and just pop in a
// Find the top 3 posts by comment count
Suffering comments you already understand > running a VM in your head when you forgot
Definitely agree on too-many-files. Documenting architecture is a whole 'nother art that's overlooked.
We diverge on locating errant code though, big time.
You'd trip at my code in the payments example because whatever is 3000 for you would easily be 5000 for me. Not only do I write comments before each line of verbose syntax, but I also add blank lines after braces and between logical "blocks" of operations.
However, that structure also gives me a mostly searchable index of every logical block of my code. That gives me a very straightforward way to bisect down to the problem, no matter how far away that code is linearly. It feels like lots of little sandwiches instead of a giant sandwich, and I'm looking for one bad slice of meat. I at least can quickly scan and jump to sandwiches containing meat when they are so explicitly separated and annotated.
I'd also argue that since good comments (written before syntax) can be read as their own document, I also have full coverage documentation by default. If I wanted to produce a crazy deep documentation page, I could actually just pull every line starting with // or /* (but really I just use Docstrings/JSDoc/etc on top of my inline comments).
I believe I've arrived on this out of practicality. I maintain 10+ codebases of differing platforms at any one time, and my most frequent problem in life is arriving at a codebase and thinking "Okay, what was going on here?". My approach now is just "read the green" (I color my comments slightly green gray) and within minutes, I can understand the entire functionality of that code and search for patterns I know will exist. I don't believe that's possible in equivalent time by executing the program line by line in your head.
I see that it could displace VC somewhat in dollar amount, but there are some serious bottlenecks around filing with the SEC and getting listed to where it'd be prohibitive for a large number of companies to start that way. It's definitely a lot harder, more all-or-nothing, and more time consuming than getting a million-dollar SAFE and building a prototype. And SPACs are also dependent on consuming those "traditional" companies to fulfill their empty promise. What feels most intuitive though is the propagation/decline of SPACs will simply be based on the successes/failures of the SPACs we're watching now. Tech and finance seem to have few mechanisms outside of pattern matching what got their predecessors rich.
Glad you can defend the totally opposing view well. Respect on the 'knowledgable about the domain' point.
I would argue that there is no more abundant resource than whitespace on computers. Useless comments (usually written after the syntax is written) definitely suck. But in a file with well written comments, you can actually just read the comments alone and understand the code as fast as you could read news headlines.
Another point, the only purpose of code as we know it is to serve as a human-readable translation of machine instruction. To me, the best achievement of that is a document that reads like natural language. After all, wouldn't it be better if we could just describe intentions in common speak and have the computer figure out the details? To me, well thought verbosity in code is a step towards that.
They also have a poor reputation, and for what seems like a good reason. It's a risky proposal that generally attracts a get-rich-quick kind of community. Examine the Nikola company and tell me how comfortable you'd be investing a sizeable chunk of your net worth in that.
I can't predict the future, but I can bet $10k I will die before SPACs get to even half of VC funding. Side pot of $1k that 50% of them fail their investors, and another side pot that one in the next decade will be a historically spectacular failure.
I see on your profile you sold to a client. We have had that option before but the multiple on our earnings was too low to actually consider it. Curious what your revenue/earnings multiple was on the acquisition. Also curious about the handcuff terms. Giving up autonomy over my daily life is hard to swallow without 8 figures.