5 ms·
Hm. I feel like there's a correlation between knowledge of a language and being able to design well with the language. I've noticed my design skills go up dra
by nickthemagicman 8y ago
Hm. I feel like there's a correlation between knowledge of a language and being able to design well with the language.
I've noticed my design skills go up drastically the more I learn about a language.
For example in most PHP frameworks there's a service container you bind your services into. In RoR that does not exist.
Using asyc/await vs promises makes very different design decisions in js and if you know only one you may not design something optimally.
I could go on. But my point is that lang expertise gives you the knowledge to design things better, and reduces your chances of putting out a quick hack because you know how to do things properly and rapidly due to you expertise.
- solipsism 8y agoUsing asyc/await vs promises makes very different design decisions in js and if you know only one you may not design something optimally Optimally? How would you even define that? Good developers make good use of the tools that are laid out before them, and sure the available tools differ in each language. But: 1. These languages tend to have more in common than they do different. 2. These concepts aren't magic. They're relatively easily understood, and you can make good use of them long before you can call yourself an expert in the language. 3. A good design doesn't necessarily make use of any specific language feature. e.g. a Go library might be well designed and make use of mutex (a very generic and ubiquitous concept). It's not a "quick hack" just because the author didn't choose to use channels.
- nickthemagicman 8y agoI agree you can "get things done" in any language if you know the concepts. But an expert at a language gets things done in the most optimal way, most rapidly, with minimal tech debt. That's all I'm saying and it may be anecdotal but it's been my experience in the industry.
- squirrelicus 8y agoAn optimal design is one that addresses the most problem complexity while introducing the least incidental complexity. It's objective, but difficult to measure. If you use cron to implement a hello world program, the design is not an optimal one, for example.