4 ms·
I used to be a "rock star" programmer. I could run rings around my coworkers. I wrote an embedded OS for running machine tools (I had help.) Back then, you read
by thoughtsimple 8y ago
I used to be a "rock star" programmer. I could run rings around my coworkers. I wrote an embedded OS for running machine tools (I had help.) Back then, you read books and memorized everything. I knew x86 assembly and could use a logic analyzer to debug my code. This was in the 80's.
Now the amount of knowledge required to do even mundane tasks is an order of magnitude more. No one can memorize all the APIs and frameworks needed to do their jobs programming. I couldn't work without search. I don't memorize anything anymore. I work on dozens of different technologies.
Basically, I've become a mediocre programmer at a large number of different programming tasks where once I was expert at a very few. I'm the same person but the meaning of what is a programmer has changed over time. I'm OK with that.
- allthenews 8y agoI don't think programming ability is measured by the number of APIs/libraries one has committed to memory.
- kazinator 8y agoHaving an accurate and large knowledge of relevant API's will help you program faster and more accurately, and make better design decisions earlier. (You avoid the "if I had known about these API's, I'd have done it differently" situation.) It's hard not to conclude that this is one axis in the multi-dimensional "ability" space.
- geezerjay 8y agoKnowing APIs cuts down the time you take to implement something, and also helps you understand what and how you can achieve a goal. Between a guy who needs to spend 5minutes googling for a class/module/function and someone who prompltly writes it down, there is no question who is a more capable programmer.
- allthenews 8y agoWhile I do not deny that memorization of APIs makes for more efficient programming, I would argue that, long term, readability, maintainability, and extensibility are far more useful time savers overall. Architecting a codebase which meets standards like these requires a different set of experience that comes with time and can't be trivially looked up online. If I were to measure a programmer's ability, I.e., what makes a "good programmer", perhaps in the context of am interview, I would therefore not test rote knowledge.
- bsamuels 8y agoif you have to spend 15-20 minutes pulling out books and looking up commands/registers every hour, you lose a lot of productivity. that was the reality of programming before the internet
- buvanshak 8y ago>you read books and memorized everything. Why did you have to memorize everything? I have also done x86 assembly. You remember what you can. You look up the rest. Same today.
- haskellandchill 8y agoYou move a lot faster by memory. I regularly switch between Ruby, JavaScript, Python, and Scala at work and it's quite insane, I spend way too much time realizing language Y doesn't have feature X I use in language Z and looking it up vs rare moments of flow when I've been using the same language for more than a week or two.
- kazinator 8y agoWhen you memorize all the details of an instruction set, there is a qualitative difference when you code in it. It's like the difference between being a stammering tourist in a foreign country who is constantly flipping through a dictionary to make elementary utterances, and a native speaker. I first realized this many years ago after writing an emulator for the Motorola MC68010. Unrelated to that project, I had the occasion to write some assembly code in the same instruction set. Just, wow ...! It was like, I .. know ... everything ! (cue sound of thunder, lightning effect.)
- thoughtsimple 8y agoIf you didn't develop in that timeframe you might not get the difference between then and today. It takes forever to look things up so you end up memorizing instead. And it isn't a big deal because the number of things needed to be a successful software developer wasn't that great. To be successful and finish projects more or less on time, memorization was needed. Edit: For example, for a different project I knew the hex codes for every 8051 instruction. This was necessary to be successful debugging using a logic analyzer. Looking up each op-code would be prohibitively slow.
- AnIdiotOnTheNet 8y agoIt's a caching problem. If memory access is slow you want to cache more, if not then you don't bother. Things you use a lot will spend more time in the cache, things you don't you'll have to keep retrieving from memory. We really aren't as different from computers as we sometimes like to believe.
- laythea 8y agoJust a side note: I did some debugging of STMicroelectronics ST10 assembler with an oscilloscope the other week and it was quite a refreshing experience making me appreciate all the debug loveliness that is normally provided for us on a plate with even C. The one thing that the loveliness cannot really help with, that the oscilloscope shines with, is proper timing of signals though. Its great.