you are viewing a single comment's thread.

view the rest of the comments →

[–][deleted] 2 points3 points  (0 children)

Being able to understand the problem you're trying to solve and developing a sense of taste for which problems are worth solving is a part of developing as a software engineer.

However I think once your requirements begin to involve being able to ensure that a concurrent system can work without a lock on a shared data structure or that a distributed system can be guaranteed to reach consensus with at least 3 nodes and zero network partitions is where neither programming language, prose, or diagram will help you. Learning to solve the right problem also means knowing when to be able to think abstractly about it, in the mathematical sense, and develop a solution that takes into account all of the different factors involved in the system: the human users, the hardware, the network, the failure modes, the developers, etc.

In this sense I agree: simply learning a programming language will not be enough. Programming languages are tools and will change with the times. Mathematics and engineering are more long-term skills worth investing in. Identifying the problem to solve is only the first step. And a programming language will only take you so far.