Oh man… I remember reading this years ago and aspiring to be the Fantastic Programmer.
This did NOT age well. Seriously consider some of the traits that this article is describing and play the game “Are We Describing a Programmer or a Zuckerburgian Psychopath?”
- A tendency to suggest wacky and unrealistic solutions in meetings
- Routinely applies for an extension to file taxes
- Antagonistic when asked to maintain code for
backwards-compatability - Dropped out of high-school, university, law or medical school because they didn’t see the point anymore
- Disinterested by the outcome of elections
- Cashes-in their 401k to fund their next venture
- Has tried every pick-up line there is and has the slap-marks on his cheeks to prove it
- Owns swag from Enron
- They suddenly pause and stare into space in the middle of a conversation, then abandon you to hurry back to their terminal with no explanation
- A destructive pursuit of perfection
- Contempt for delivery dates
- Substantial refactoring on the eve of a deadline
A cubicle or desk populated with toys that came from ThinkGeek
What year is it?
checks git blame
Oh… 2014. That checks out.
Man, I used to really like browsing the stuff at ThinkGeek. Even bought a few things. Now that it’s owned by… I wanna say GameStop?.. it’s ceased to be interesting to me. I liked things like the laundry basket that looked like a radioactive barrel, the shower gel that looks like a blood bag… that kind of light-hearted novelty stuff. But the new owner just gutted all the interesting content, and it’s just all IP collectables now.
It’s been long enough I forgot bout ThinkGeek. Damn. Wish something like it were still around.
I still use my Bag of Holding, haven’t found a messenger bag that comes close. Mid 2000’s ThinkGeek was the best. I still mourn the loss of them.
This reads very much like a tech bro wrote it
The writer assumes the reader is a man also. They use he and they to refer to programmers, but never she. The only time she is used in this entire document is referring to a woman delivering your code:
The outcome you should be thinking of is a lady who’s going to get fired if she doesn’t deliver the output of your program at 4:59pm sharp.
Back in 2014, “he” was still considered by many to double up as a gender neutral singular pronoun (which was the standard in English for at least a century). The rehabilitation of “they” as a gender neutral singular is very, very recent. I had to be actively taught not to use it that way back in the late '80s.
This, of course, was the proscriptivist position. Kids who “don’t know any better” have always used a gender neutral singular “they” until their teachers told them not to.
Very much sounds like a tech bro wrote it. A lot of these are simply in the wrong place. I feel being “eager to fix what isn’t broken” is a terrible trait on most projects that need to ship. Or at least, terrible if you go forward with trying to fix something that isn’t broken without looping in production first. You have a schedule to keep so if it works, continue forward. The whole article reeks of perfection being the end goal rather than good enough. Every usable technology out there is built off of good enough being the goal. I’ve yet to see a piece of software that shipped with perfection being the goal and actually hitting that goal. More so when you lose that sight of good enough you stop making adjustments to fix things quickly. “Well this button doesn’t work the third time you click it really fast” “Well that’s because our button interface has a specific pop back-up animation delay and we’ll need to rewrite the whole button system interface to become clickable again only after the button pops back up. So let’s put that as the only answer on Jira, slate it will take 3 months, and ignore you could just clear the delay if the button is clicked again as a workaround.”
I’m surely the worst programmer ❤️
Second worst, after me
I’m a naughty programmer. What are the signs of that?
@upstream using a mixture of tabs and spaces
getting arrested by the python police
On the same line 😈
Damm I think I might do some bulldozing sometimes, but is fair game when splitting into a different file for organization?
Yeah I don’t agree with “bulldozer code” bit. Splitting a long function into smaller parts doesn’t have to be about reuse. It’s useful to do it for clarity. As a single function grows, the number of local variable often grows as well and eventually you end up juggling tons of variables and the slightest change ripples three hundred lines further down. Break it down into a handful of steps with a number of arguments you can count on your fingers and it suddenly becomes so simple. Same about deep nesting of loops/conditions.
Rule of thumb is a function needs to fit in my head - so if I stick my face on the screen and the function’s code can still be partly seen, it’s time to break it down.
The main thing I encourage here is: If you’re breaking up longer functions into more smaller ones that are really only used in this context, don’t mix them into the same file as functions that are general use. It makes code super confusing to navigate. Speaking from experience on an open source project I contribute to.
This is definitely wrong because according to it, I’m a fantastic programmer and destined for more.
I think I’m an decent programmer as measured by these values. Having no real training/education, I often doubt my abilities.
On the flip side I work with people who have been doing it for 20+ years and are “bad” programmers.
My problem is I’ve never yet really seen a project through, or contributed to FOSS to experience that, though I really want to. I feel like I’d get overwhelmed, and can’t possibly contribute anything of value, and would just get in the way. I know it’s not true, there are endless projects of varying complexity, and I could certainly learn an existing codebase if I found the confidence to try.
Some (larger) projects sometimes have a form of mentoring and “good first issue” to get started.
Another good way to get involved is to report any issues you face with open source projects you use (obviously search for similar reports first). This way you can help debug bugs or suggest improvements and get some feedback.