3 ms·
Here's my take: - You need to think a certain way. You need to be able to see how to translate a problem into something a machine can execute. You need to be
by YZF 10y ago
Here's my take:
- You need to think a certain way. You need to be able to see how to translate a problem into something a machine can execute. You need to be able to switch from the macro to the micro smoothly.
- You need a certain level of proficiency with the tools you're using. Those can be programming languages/OSes/libraries/other software.
- You need experience. Having seen different approaches to solving various problems. Which ones worked. Which didn't. Having tried a few different approaches, different languages.
- You need domain knowledge. If you're working in a certain field you need to know the state of the art. You need to be able to read papers in the field. You need to be able to apply whatever techniques are required for the domain.
- You need to be a problem solver.
These are sort of basic table stakes for being a good "programmer".
In most real world settings you need to have some more on top of that:
- You'll need to be a good communicator. You will need to interact effectively with many different people, e.g. your boss, a product manager, junior developers. It's a team effort.
- You need to understand users/customers. You need to be able to gather requirements, ask the right questions, and deliver something useful.
- You need to understand the life-cycle of software. How long will it be in use? What sort of maintenance work will it need. How will it evolve?
- You need to have some business understanding. Is what you're doing creating business value?
- You need to appreciate the right trade-offs. Sometimes a crappy solution sooner wins over a perfect solution too late. And sometimes you should wait and have a perfect solution. That's just one example of a trade-off but our job is full of them.
- You need perseverance. Sometimes things take longer than you think. Some bugs take a lot of work to chase down.
- tomcam 10y agoAlgorithm knowledge too
- collyw 10y agoRarely, assuming you can read the docs enough to understand what pre-built library to use.
- douche 10y agoAnd assuming that A) the docs for the libraries do exist, and B) that, if the docs do exist, they don't look like the output of a million coked-up monkeys, that was then run through an automatic javadoc generator. It's just staggering how shitty a lot of documentation is. I can forgive a one-person github repo for skimping on it, but I get a little irate when I'm using APIs from Fortune 500s and have to resort to decompiling because their docs are missing, incomplete, incorrect, or otherwise hot garbage.
- collyw 10y agoSwitch to Perl or Python if that stuff bother you. I find the libraries there are generally of a decent quality. JavaScript not so much.
- YZF 10y agoFor the most part I was including this under domain knowledge. You mostly are concerned with algorithms that apply to the domain you're working in.