> Marco is very successful with Tumblr, Instapaper, and Overcast,
I don’t need to “see his code” to know whether he is good. He is able to produce software that people pay money to acquire without the sliminess. Software is a means to an end. Not an end onto itself.
You're conflating smart business choices with good programming. His code could be well marketed shit that just barely works under the covers, but he sells it well (Narrator's voice: "It isn't shit...")
Marco is an excellent indie developer because he selects markets he has a good understanding of, finds his niche, then simply outclasses his competition by being ahead on features. He also has a loyal following from his podcasts, and is an aspirational figure for a lot of devs hoping to make money (or break free of corp serfdom).
A well written program/app isn't a necessary requirement for success.
There are some segments from a few episodes that show that Marco is demonstrably not a super great programmer. I suspect some of his server side code is horrible. But he doesn't matter because he is super strong at other stuff super focussed on solving his own problems at gets it done. You don't need to be super great at programming you just need to be tenacious.
What’s the purpose of programming if it’s not “make the computer do stuff I need it to do to solve my problem”?
Yes I know all about clean code, automated testing, and “sound engineering practices”. But I’ve met a number of theoretical good coders who couldn’t ship a product that met the customer’s needs to save their lives. If I’m working to support my addiction to food and shelter, if I write code that doesn’t further that effort, I’m not being a “good programmer”.
Why do you insist on not understanding what it means to write high quality code? In some contexts, like my previous job, it's important. In others, like if you're making games or non-essential apps in your one man indie shop, much less so. Other qualities are much more important. But it doesn't matter if it's "important" or not, it's a concept that exists, and the only thing we are trying to discuss is that.
It's like if we were discussing the IQ of tech founders and you kept interrupting, saying "IQ is not all that matters", "You can't pay your bills with IQ points", "Steve Jobs might not have a genius IQ but he was a great entrepreneur and that is more important". It's all true, but irrelevant, since it's specifically IQ levels we are discussing.
My thesis is still code is meant to make the computer stuff. That “stuff” can be “Candy Crush” or “reliable code that doesn’t cause a plane to fall out of the sky”.
But writing the best “Enterprise FizzBuzz” that doesn’t solve a problem no matter how good the code is is meaningless. A great developer that writes code that no one uses is not a great developer.
In other words a great developer that can’t ship is worthless - the whole “smart and gets things done” metric.
You can think whatever you want, but we are still discussing the quality of the code that they write. Not which skill is more important, what life is like at Google, your inferiority complex about not passing the whiteboard test, or anything else.
FWIW, there are plenty of people who shipping great quality code everyday at Apple, Google etc. Not "FizzBuzz", but concise, human readable, robust, maintainable code. My only contention is that Marco probably wouldn't be able to write code to the standard required at some FAANGs. Casey definitely wouldn't. John quite likely. What do you think?
Keep in mind we are only discussing the code aspect. Not putting up with standups, corporate jargon, middle managers, 9-5 etc.
Well-written apps can meet a need, but it's like furniture. You can buy some cheap futon that gives you something to sleep on, but doesn't last long. Or you can buy a bespoke bed with handcrafted mortise and tenon joints, perfectly straight grained wood, and French polish finish. Both will give you a place to sleep, but one might last longer.
It's like my code. I have some super ugly python utils I've written that a "real" programmer would cringe when looking at the code. But it works 100% of the time when run (assuming the processes they call don't change their specs). The code is written for Python2, and breaks on Python3. It's not very clear how things work, despite extensive commenting. By your definition, these utilities would be "well written." To me, they're brittle, fragile eggs that I eventually will have to rewrite when Enterprise Security decides we can't have python2 binaries on our servers.
He's undoubtedly a world class indie developer, but we were discussing his abilities as a programmer, in the sense of writing good code. True, it's not necessarily important or valuable in life, but that is what we were talking about.
Most of the people I worked with at my FAANG job were excellent programmers, surely better than Marco, but none of them would have any chance of even coming up with a decent idea for an app, let alone carry it through and launch it. So they are absolutely useless as indie developers. It's just different skill sets.
Our definition of a “well written app” is different.
An app to me is well written if it is meets a need well enough to be successful. I would be much more impressed by an Indy developer who has a successful sustainable business without being slimy than a “FAANG” software engineer that got in because he can reverse a binary tree on the whiteboard while juggling two bowling balls and riding a unicycle on a tightrope.
I also know we are both talking hypothetically. If you listen to him about some of the low level audio processing he does, he’s definitely pretty good.
Before I get the expected replies, no I’m not “jealous of FAANG SWEs”. I work for BigTech myself after a very slight pivot from enterprise development.
The interview is the least demanding part, working as a software developer at an ambitious company has nothing to do with binary trees.
What does it matter which skill is more impressive? Obviously there are way fewer successful indie developers than top tier developers, and obviously life as a successful indie is way better. Yet, there is such a thing as writing high quality code, which is more or less orthogonal to being a successful indie. And that was what we are discussing.
It's a bit like being a fast runner and being a good football player. There's some connection, but it's not like the fastest runners are the best players, or the other way around. Different skills.
As to low level audio, I know what you're referring to, and it doesn't say that much really. My co-founder at my previous startup wrote a bunch of DSP code that worked, and was probably more complex than the pause removal, but he was still a pretty random developer. His code was sometimes surprisingly bad. Marco's strength is to not shy away from anything, even if it sounds scary or complex. DSP sounds complex, but it's not string theory.
You saw the part about I work at BigTech? Trust me, the code is not rocket science that the vast majority of what software engineers do at BigTech. Well at least the code that runs 2/3rds of the cloud infrastructure in existence.
Many of them could never handle the complexity of writing an entire app and maintaining the backend running on 20+ Linode VMs without the support of a trillion dollar corporation.
You really overestimate the skill and complexity of most code written by “FAANG” engineers.
FWIW, I’ve been coding for a long time (the 74 is a hint) and I started at 12 writing assembly language and spent a decade writing C including maintaining a proprietary compiler/VM for Windows CE devices.
> Trust me, the code is not rocket science that the vast majority of what software engineers do at BigTech.
Again, that is not the discussion. Nobody said that you have to write high quality code to make it in tech, or as an indie. You keep coming up with strawmen but all I am saying is that I don't believe Marco Arment writes very high quality code. That's it. No judgement, no conclusions or correlations, no nothing.
As to FAANG, I can only be certain about my own experience, and the dozen or so direct colleagues I had all wrote better code than every other colleague I've had over 10 years. Not saying they are better people, happier, richer or anything else. Just to be clear.
You know he is good because…
> Marco is very successful with Tumblr, Instapaper, and Overcast,
I don’t need to “see his code” to know whether he is good. He is able to produce software that people pay money to acquire without the sliminess. Software is a means to an end. Not an end onto itself.