8 ms·
I'm a Programmer and I'm Stupid
- frank_bb 3y ago[dead]
- repelsteeltje 3y agoDupe: - https://news.ycombinator.com/item?id=39613326 https://news.ycombinator.com/item?id=39613326 - https://news.ycombinator.com/item?id=39620507 https://news.ycombinator.com/item?id=39620507
- deleted 3y ago[deleted]
- yungporko 3y agothis is objectively the correct way to write software anyway, everything else is dumb
- squarefoot 3y agoThis post resonates a lot with me, but being a good "code writer" is just a small part of being a programmer. I couldn't (and still can't) recall the simplest algorithms without opening a book, but that wouldn't stop me from solving problems because that is the real gist: identifying a problem and the right path to the information you need to solve it. Also being a sort of jack of all trades helps a lot more than excelling in just one task, or at least it worked a lot with me. I was probably a sub par mere "code writer", but I knew how to read a data sheet and use a solder iron, I had basic networking knowledge and a history of writing database software, although not SQL, and knew how to talk with people. I was average at best at any of those skills, but having many of them helped me to become a valuable asset in every company I worked at, because I knew how things were progressing in various groups so that colleagues with a technical problem could ask me who or where to head to find information, help, solutions etc. In the end I had many pay raises, but never left the technical side to become a PM or get a different job because I always wanted to remain a tech guy. So, the author is definitely not stupid; he probably has some other skills he didn't identify yet.
- andrewstuart 3y agoThe author describes the way clever programmers operate. Simplicity above all.
- lproven 3y agoExactly!
- hyperhello 3y agoI’m going through a Software Engineering textbook right now. A real one used to teach. And I can’t see anything in here as legitimate. It’s the most irrelevant pile of nonsense about bug metrics and project diagramming you could think of. The author isn’t even taking it seriously. It’s like computer psychology: unreplicable ivory tower memorabilia. Not knowing stuff like that is a steering function to me.
- joshstrange 3y ago> And I can’t see anything in here as legitimate. Does “here” refer to the book or the blog post?
- TechyLuddite 3y agoI've noticed quite often very competent junior devs are very often guilty of writing far to complex code. I think there's often a disconnect between the ideal of what software should be and what best solves the problem. Since taking the mindset of been required to solve a problem as opposed to trying to write the 'best' and 'cleanest' software I've found my productivity jump substantially while ending up with easier to maintain code.
- wutwutwat 3y ago> junior devs write far too complex code … > I think there's often a disconnect Maybe you were already saying this, but learning how to write just enough of the least complex code is a skill acquired through experience, which naturally junior developers don’t yet have. It’s the pain of maintaining over engineering and needlessly complex code and attacking tech debt that develops the skills to avoid such things in the future. No better teacher for those things :)
- joshstrange 3y agoOne of the most frustrating things I’ve dealt with is a junior developer (who, based on years in the industry, thought they were a senior) who would write clever/complex code just for the sake of it. That and touching 10+ things in their commits that were outside the scope of the ticket (“cleaning up other code”). I’ll fully admit I used to be that person but some people never seem to grow out of it. They see what they perceive as “gross” code, repetitive code, or verbose code and make it their mission to DRY it out or rewrite it in a shorter, more clever way. Cleverness in code should be avoided at almost all costs, code golfing might be a fun exercise but has no business in real codebases, and trying to abstract and centralize logic with only 1-2 implementations is foolhardy at best. I’ll take verbose, understandable code every day over code that I have to stop and think about for any amount of time.
- pavel_lishin 3y ago> That and touching 10+ things in their commits that were outside the scope of the ticket (“cleaning up other code”). The smartest thing I do every day when I touch old code is turn off auto-formatting in my editor, studiously avoid doing minor clean-ups ("why the FUCK is this line 300 characters long"), and touch only what I'm working on. Instead, I'll make a note to come back and clean up the other stuff later, if I have time, in a whole separate branch/commit/ticket. And then that note probably gets deleted, because this code is 8 years old, and is slated to be rewritten, almost certainly before I would get around to doing the minor chore clean-up. It's not like the kitchen - there's no reason to quickly wipe up the stove during the 2 minutes that the microwave is doing its thing. It won't rot and stink up the place any more than it is now.
- ninetyninenine 3y agoOne thing I noticed anecdotally is that coding aesthetics and style matters much more for stupider people and smarter people actually have a correlation with writing sloppy code. I think the reason comes from something similar to the article. Smarter people don't "need" perfectly pristine aesthetic code because they have the brain power to easily read messier code. It's not universal. Some smart people are obsessed with neatness but because neatness just isn't required you see this correlation with sloppier code and smarter people. I have found that it is nearly universal that stupider people need to obsess over neat code because they literally have to have it or things get too hard for them. Also yes, it's not universal but I have also noticed less smart programmers tend to like golang. There is definitely a correlation. I know this can come off as a bit offensive for people who like golang or really obsess over neat code. I just want to say my statements are general, anecdotal and I have definitely seen examples to the contrary so I may not be referring to you personally! I'm referring to a general tendency I see.
- conor- 3y agoI'd probably fall more in the spectrum of dumb programmer vs smart one, but I like clean code/consistently enforced patterns because it reduces the amount of mental overhead required to get code state into your brain. I'd rather focus on actually solving the problem at hand vs wrangling with messy, overly clever code. That's one of the reason I like Go so much. The language is simple and easy to read with common, idiomatic patterns to the point it just gets out of your way and you can actually focus on what you're trying to do instead of spinning your wheels with a million clever ways to write the same code.
- alpaca128 3y agoFor me it's a bit of both: experimental code or one-off scripts can be a total mess while at the same time I care a lot about readability in other projects. For one it's still helpful when I'm tired, but also while I may be able to read my own sloppy code a few days after writing it that won't be true forever. Another reason is that I have trouble with very abstract code/concepts, the more I can reason about what's actually happening with data and memory the easier and quicker I understand the code. That's why I'm terrible with Haskell etc, it requires a kind of thinking that feels like a mental foreign language.
- ruslan 3y agoI even more stupid than Anton, I use C instead of Go and Perl instead of Python. I do not use Docker. I distrubute my code with Makefiles. I do not use CMake.
- nalgeon 3y agoYou are literally living the dream!
- ninetyninenine 3y agoOh come on. C is harder than go and perl harder than python.
- ruslan 3y agoWell, I tried to learn some Python, but I failed. As for Go, perhaps you are right. A good friend of mine, some elder hacker, switched to Go and suggests it to me, but I just have no time for learning one more language to get same job done. I think I'm getting old and concervative. I feel my brain is no longer as sharp and productive as it used to be some 20 or 30 years ago. It takes me much more time to comprehend new ideas and practices. Also, when I code in C, I experience warm nostalgic feeling of my youth, I feel invisible strings of ties with all those great minds like Ritchie, Thompson and Kernigan. ;)
- never_inline 3y ago> Well, I tried to learn some Python, but I failed. Brother, unless you tried to start with class metaprogramming or something, there's no way someone proficient with C to have struggles with basic python. Probably you didn't find a good resource. There are always resources like "X for Y programmer", this is what a quick Google search finds: https://engineering.purdue.edu/~milind/datascience/2018spring/notes/lecture-2.pdf https://engineering.purdue.edu/~milind/datascience/2018sprin... Or you learned the basics, held yourself to high standards, and got bored by all the dynamism / OOP details of python. Then let me tell you - 70% of python programmer don't use anything beyond basic OOP.
- 3y ago
- subjectsigma 3y agoProgramming is the only profession I know of where people do these ritual put downs of themselves and their work. “Programming isn’t hard” “Anyone can learn to code” “Programming is modern day plumbing” “I’m really stupid and a professional programmer, it must be a dumb profession” This post feels especially jaded and anti-intellectual. Writing simple code isn’t stupid, why be so harsh on yourself?
- nalgeon 3y agoI never said anything like that in the post. And I never said that writing simple code is stupid.
- lproven 3y agoI thought it was a superb and very important essay. I really liked it and I have shared it widely. I find it very sad that so many people, including the majority of the comments here, did not understand what you were saying, and either totally misinterpret the whole thing, or pick on minor unimportant details and misunderstand them. Thank you for writing it.
- subjectsigma 3y agoWhat am I supposed to take away from this then? > I haven't been diagnosed with any specific medical condition, but my mental capacity is very limited. … So what do I do about it? I use the simplest mainstream language available (Go) and very basic Python.
- ninetyninenine 3y agoI think and I don't speak for him, but he's saying he writes simple code because he's stupid, which is different from saying simple code is stupid, because smart people can also choose to write simple code. Op may be too harsh on himself but it's an open possibility that he may also be honest and accurate in his own self assessment.
- 3y ago
- hardkorebob 3y ago[dead]
- erik_seaberg 3y agoWhen code is as concise as possible, everything still there is there for a clear reason. Repetitive, verbose code is where our ape brains get bored or confused and miss bugs.