4 ms·
What shifted my career was actually an almost opposite revelation. I'm a self-taught programmer who never went to college, and bounced around in entry level so
by empath75 7y ago
What shifted my career was actually an almost opposite revelation. I'm a self-taught programmer who never went to college, and bounced around in entry level sort of "IT jobs" like support for close to a decade -- and I assumed that "real" software engineers and sysadmins were geniuses who did understand everything their systems were doing on a deep level and just typed out perfect code off the top of their head.
Then I went to a large tech company, and got some attention for hacking away at a few bash scripts to automate things, got promoted to a sys admin job, and realized that hardly anyone understood systems, or anything at all on a deep level, and that everyone was just hacking away like I was.
What I've eventually realized is that while, yes, everything in a complex system in principle can be understood, that human beings have limited bandwidth and memory and that it will absolutely paralyze you if you wait until you understand something thoroughly before diving into do work on it. I jumped into AWS without understanding it, Chef without understanding it, Jenkins without understanding it, and Kubernetes without understanding of it, and every time I did that, my salary went up by 20-50%, to the point where i'm making something like 3-4 times now than what I was making 5 years ago.
There are two reasons to spend the time to learn something on the job:
1) You need to learn it to do the task that you're working on right now. Whether it's troubleshooting a problem or trying to install a new system. If you're trying to get a kubernetes cluster running, you absolutely do not need to know all the details of how docker containers work. While it's interesting, and it will probably be necessarily to learn it eventually, it would be a waste of time to do that before just getting started deploying kubernetes.
2) Satisfying your own personal curiosity -- sometimes things are just inherently interesting to you, and it's usually worth chasing those things down, I've found. It may not be immediately applicable, but usually I'll figure out how to apply it somewhere.
- jcranmer 7y ago> 2) Satisfying your own personal curiosity -- sometimes things are just inherently interesting to you, and it's usually worth chasing those things down, I've found. It may not be immediately applicable, but usually I'll figure out how to apply it somewhere. A few months ago, while searching for a personal project, I stumbled across a mention that the performance events on Linux can be used to set hardware watchpoints. Literally the very next day at work, we had a problem where we needed a watchpoint but gdb was too intrusive to timing to let the bug happen, so I was able to fall back on perf to confirm the stack trace of the site corrupting memory. Debugging is ultimately about hypothesizing which part of the system is failing and why, so understanding more of how your system works is likely to be beneficial towards future debugging sessions.
- ujjain 7y agoHaha yes, I think even presidents and CEOs are basically just trying to make the most of it. They just can't admit it, because of their reputation. People love to believe in a strong man that knows it all.