To me it often happens that I find particular realms where I did not learn the really important things in several subjects. However, for my career as a software developer I feel that I had a quite good start. Later, when attending university I experienced more difference in what I was taught and what I found useful. That said, I must admit that I am a practically oriented person. I don't deal a lot with theories although I know that it can be useful sometimes.
However, I thought several times that there is a mismatch problem (see Malcolm Gladwell about the mismatch problem) in the whole software development branch.
Recently I followed two podcast episodes that confirm my doubts that in a lot of cases software development results do not fit customer needs or economical concerns. I found them on se-radio.net: "Episode 149: Difference between Software Engineering and Computer Science with Chuck Connell" and "Episode 150: Software Craftsmanship with Bob Martin".
I agree with most of the content - for instance about the fact that computer science is way different from software engineering - see also the article about Software Engineering <> Computer Science from the show notes of the podcast - or more articles about "Beautiful Software".
In my opinion (also):
- A lot of time is wasted later, when the software architecture is bad and the code is not kept clean.
- The developer needs to choose wisely and master his primary tools - the programming language(s) of choice and the IDE.
- Focus must be on the code and not on the usage of some tools or too many documents.
What I can see from all this is as a personal conclusion:
- It is extremely important to think well and communicate well with the customer before creating the architecture of the software.
- Don't forget about the importance of creating clean readable and well documented code (code comments are more important than other documentation that is created along with your implementation as that tends to be more outdated).
- Experience is an important factor. A well experienced developer is worth a lot!