Math
Systems thinking
Machining
Oil-painting
11–20 of 20 posts
Math
Systems thinking
Machining
Oil-painting
Optimization: not everyone has a super fast computer and a super fast internet connection. Too much is wasted there.
The thing that makes me a good programmer is my ability to consume a bunch of code, model the program in my head, and analyze likely faulting paths. The code is secondary. Your job as a programmer is to solve problems. Code is just the tool we use to implement the solution.
Instead of bashing your head into the keyboard until the bug goes away, take your time to actually understand the bug. Make an effort to grok as much of the program as you can. Draw flow charts and diagrams if you can't keep the model in your head.
A related point: understand what the machine is doing and how your code interacts with it. If you're aware of the physicality of the machine, you'll tend towards better and more optimal code.
Really you want to learn programming, and not code. Tinker with as many different languages as you can, but don't overly concern youself with advanced features. Learn how to walk into a codebase in an unfamiliar language and immediately start hacking. You'll eventually learn to see the program behind the code. To a good programmer, code is code is code, no matter the language. Really think deeply about the distinction between a program and the code. Again, code is just the tool we use to create a program.
Other than that, the single most useful thing you can learn is shell scripting. It cannot be overstated how important and useful bash and powershell scripts are. They are everywhere and most programmers have written countless shell scripts.
To sum up: learn the theory and philosophy of programming and computing. You have to build a deep understanding of programming in the abstract before you can apply code. You want to cultivate a talent for programming. Skills come after that, and you pick them up along the way. We are all constantly learning new skills, it's part of the job.
A painter does not master the art by studying brushes. A master understands art, composition, colors and can apply that understanding with a brush, pencil, pastel or any other tool. She does, of course, specialize in and deeply understands a small subset of those tools, but she can still produce masterworks with unfamiliar tools.
Learn the art, not the tool.
Learn to get better at technical documentation. Learn how to really understand it even if it's not written all that well. And learn to write it well.
Optimization: not everyone has a super fast computer and a super fast internet connection. Too much is wasted there.
To do it prematurely is the biggest sin, to give no thought is the second, and to not be able to do profile code is fatal.
The worse is to not give it a thought IMO (usually people justify that by saying "premature optimization is the root of all evil", where actually they just couldn't be bothered to think). Writing bad code and justifying it by "I'm optimizing" is also pretty bad.
Developers should have common sense, not dogma.
* Recursive file system management tools. Most developers cannot navigate a tree model and cower in great fear * performance analysis/monitoring tools. Most developers are astoundingly bad at performance and then lie about it with weird unfounded guesses * markdown to html parser or the opposite. Most developers have no idea the actual cost of involvement required for basic string parsing and wrongly believe it’s fre…
As an aside I think where I have seen bad performance it has been mostly architectural choices over O(N) stuff. These take a lot of organizational will power to fix properly as it costs money, time and egos.
* Recursive file system management tools. Most developers cannot navigate a tree model and cower in great fear * performance analysis/monitoring tools. Most developers are astoundingly bad at performance and then lie about it with weird unfounded guesses * markdown to html parser or the opposite. Most developers have no idea the actual cost of involvement required for basic string parsing and wrongly believe it’s fre…
I got a job ... true devops culture ... where I use Splunk etc. as much as I use git, I finally grok P99 and aggegrations and I don't hate it. It has been a mind opener and it is great to be data driven. As an aside I think where I have seen bad performance it has been mostly architectural choices over O(N) stuff. These take a lot of organizational will power to fix properly as it costs money, time and egos.
Core problem solving skills. Debugging, triaging, fault-finding. The thing that makes me a good programmer is my ability to consume a bunch of code, model the program in my head, and analyze likely faulting paths. The code is secondary. Your job as a programmer is to solve problems. Code is just the tool we use to implement the solution. Instead of bashing your head into the keyboard until the bug goes away, take you…