5 ms·
My personal observation (and view of course) is that most people simply cannot code. And I am not talking about that reverse-a-binary-tree or traverse-a-linked-
by W0lf 7y ago
My personal observation (and view of course) is that most people simply cannot code. And I am not talking about that reverse-a-binary-tree or traverse-a-linked-list type of coding, but more profoundly they just cannot wrap their head around a problem and are able to create a sufficient solution with respect to the context of the code and its environment at the same time. Good software development is strongly connected with ones ability to think clearly about any given problem and the ability to logically deconstruct it in smaller, more digestible thoughts. If there's confusion in the mind, there probably will be confusion in the code as well.
Also, it just seems as if many are unable to step back and look at the broader side of things when coding. Asking questions like: Are we using the right concepts here? Did we develop sufficient abstractions?
Case in point: I was just refactoring a code base for a client where the code was paved with a `MemoryHolder` type, where simply `Buffer` would have been the better name for the same concept.
- giantDinosaur 7y agoAlthough somewhat amusing, I'm assuming there's more to 'MemoryHolder' than just an inappropriate name. What was wrong about it at the type level that illustrates your point? Or do you mean to say that it's (somehow) illustrative of a lack of conceptual understanding?
- kqr 7y agoI'm curious about the same thing. With my Ada background, I see a completely sensible interpretation of MemoryHolder: A Holder type is a managed (RAII/garbage collected) wrapper that has a reference to some unmanaged/primitive object. If that primitive object is some notion of a contiguous region of memory, then MemoryHolder is a perfectly good name for it. A name like "Buffer" might not automatically tell the users that the type is managed, or that it wraps some underlying primitive type. That may or may not be relevant to the user, but it's not obviously always irrelevant, at least.
- W0lf 7y agoThank you for this insight. I wasn't aware that this was a reasonable name when coming from Ada.
- z3t4 7y agoPeople think differently and the higher up in the abstraction level, the more diverse it will get. Like for example some people think in shapes and will get crazy if you do not format the code in the same shapes. Others think in words and writes the code as like they where talking to a human. Others have images in their head and doesn't really care how the code looks. Some people annotate their code so that it looks like LLVM. Others think of real world items like containers, ships, streams, etc.
- dillonmckay 7y agoI have a coworker that names variables after Marvel and Disney characters.
- mrslave 7y agoDo we have an analog to Occam's razor for can't/won't? It sounds like your colleague has an obscure sense of humor or has simply checked out.
- z3t4 7y agoAfter being tasked to do the same repetitive job over and over I became very bored, and to make it fun I changed the variable name in one of the repos. The funny name stayed there as some sort of artifact and probably still haunts the poor people tasked to maintain it. And it has become a war story about that time when one of my colleges was tasked to make a routine change, but for the life could not figure out was was wrong, only to find out that repo had a different variable name... So your college probably need some more challenge. Put him on binary (assembly) optimization or something, where he doesn't have to come up with variable names. That said, naming things is probably one of the most difficult tasks in programming.
- abiogenesis 7y agoI'm not proud of this but I once temporarily named an exception class after a cartoon character and it kept popping up in server logs for years.
- appleflaxen 7y agoI don't think this is the right mental model of coding. It seems a bit too similar to the idea that "most people simply cannot read". We all accept that nobody can read without instruction, practice, and feedback. Why is coding somehow different? If anything, I think reading is more foreign/difficult, because coding is explicit thinking, and we all think. Whereas reading is a completely synthetic act that starts with arbitrary symbols that must be memorized by rote before you can even take the next step of using them. None of us start out life being literate, but few people lack the ability to become literate. Why is coding different?
- username90 7y ago> It seems a bit too similar to the idea that "most people simply cannot read". Most people can read in that they can translate text into sounds. However most people cannot read if require that they can accurately comprehend what the text says, just look at the results of reading comprehension tests, a majority scores horribly on them. > Why is coding different? You can get by just fine in life without accurately understanding text, but you can't get by just fine as a programmer without accurately understanding what code does.
- chii 7y agoI think the more apt analogy would be that most people can follow a recipe, but not many people can invent new recipes from scratch (let alone achieve a specific food effect with said recipe). Most people can modify a recipe, if the modification is natural or easily comprehended. For example, adding extra ingredients to flavour a food. But to invent one from scratch would be akin to creating a new type of food, or new way to cook, or a new way to combine cooking methods.
- iateanapple 7y ago> It seems a bit too similar to the idea that "most people simply cannot read". Remember that most people require extensive schooling for the better part of a decade in order to learn how to read.
- W0lf 7y ago
- henrikschroder 7y agoThe Fizzbuzz test sounds like a joke when you first hear about it, but it's incredibly effective at weeding out these people.
- inertiatic 7y agoI don't think the parent is complaining about that sort of thing, they just have a higher standard. You will disagree with a lot of naming decisions from people you work with, and they all pass Fizzbuzz.
- lmilcin 7y agoDepends on the definition of "can" I think, most people have potential to be able to code. By "can" I mean if they applied themselves to learning. The problem is there's just no easy way to somehow transfer the knowledge and experience of what it means to actually code. The Doening-Kruger effect is in full force because you can't tell if you can code until you can. Moreover, almost every technology today must cater to complete beginners so it is easy to write a Hello World but then there is no way to tell you how to put your solution together. There is nuggets of wisdom but you need to have some prerequisite knowledge and experience to make use of them. It is easy to see that I can't sight-read music. I mean I am amateur flautist but for some reason I just can't "get it" (but I also did not try hard). I know you can sight read because there are a lot people that can just take a printout and start playing it without previously studying it. The same is not true with programming. It is not easy to see people do programming -- you only see results that you do not understand until you actually can code. You can appreciate the music but you can't appreciate the code until you actually can code. It does not help that the whole industry is crazy right now. There is very small proportion of people with actual experience because of exponential growth of number of developers. The salaries are inflated and newcomers are getting paid as if they were experts in other industries. If you are getting paid a lot it means you must be valuable, no?
- commandlinefan 7y ago> If you are getting paid a lot it means you must be valuable, no? And if you actually are experienced and try to offer a newcomer some guidance in writing code that they won't regret having written a year from now, they'll accuse you of being a "perfectionist" who's wasting time trying to obtain some theoretical optimization.
- pythonaut_16 7y agoUnfortunately that mentality isn't limited only to newcomers. There are plenty of developers with many years of experience who still practice that same short sightedness.
- ng12 7y ago> I think, most people have potential to be able to code. By "can" I mean if they applied themselves to learning. My time spent teaching makes me think otherwise. I saw so many smart, motivated young people who simply could not get their homework done. This was especially discouraging since my alma matter has a very strong focus on pedagogical programming. There's something about programming that "clicks" for some people. They can look a the little pieces and immediately understand how to put them together. If you don't have that spark it's going to be an extremely challenging journey.
- gibbonsrcool 7y agoI think we should strive to make more ways for people that "can't code" to be able to contribute. It's hard. I've been thinking recently that there might be an additional lesson behind Conway's Law; that the interface and character of a system mirrors its creator(s). This means if you hire super smart people to build something, it's going to require super smart people to interact with, operate, and maintain.
- Nevermark 7y agoI have noticed that adept software developer's can be more patient with tools that require fiddling, especially if the fiddling feels like challenging but rewarding puzzle solving in a sea of powerful options. Unproductivity that feels viscerally very productive. Alternatively, command line tools tend to be created and increase the productivity of the more technically inclined, but are opaque to the less technical. Which effect is the GibbonsRCool's Law? Or both? GibbonsRCool's Laws of Skill Drag and Acceleration?