Yakov Fain initiated a new discussion about developer skills which covers also some topics from my "Motivation Over Experience" and "Nothing is Transparent" entry.
Brief description: Yakov interviewed a framework developer, who was only a able to work with an abstract, high level, framework. The developer didn't understand the principles and backgrounds and wasn't able to answer what happens behind the scenes. The description caused an interesting discussion thread.
- nowadays it is dangerous for a developer only to be interesting in abstractions. (Such kind of work can be easily outsourced)
- abstractions aren't perfect. Current environment is too complicated (clustering, caching, distribution, incompatibilities, latency) etc, so it cannot be completely abstracted.
- I cannot understand developers, who are only interested in coding business logic and are not curious to know about the technology, and how things really work. Such kind of work cannot be interesting.
- I do not understand the arguments like: JEE/Java, .NET, distributed computing etc. is too complicated. There are some common principles which are complicated, but these principles are very important. These principles are an important precondition to be able to develop working distributed apps. I know JEE developers, who do not understand transactions, isolation levels, clustering priniples. They are still searching for new frameworks, which are easier to understand. But in real world we have no miracles: so also in a new framework will have to deal with the same problems which cannot be completely hidden and encapsulated. An additional layer of abstraction do not always solve all problems.
- Many stakeholders expect developers to be "stupid" coding monkeys. Frameworks are created, so that the developer only have to understand a small subset of technology. BUT: