I read this book years ago when I was just out of college. I found it to be a very good read and an insightful on the life of Microsoft engineers.
Here is the amazon link:
http://www.amazon.com/exec/obidos/tg/detail/-/0029 356717/102-2673393-2852914?vi=glance
There seems to be an ever-widening gap in the developer community between those that had to write their own data structures, and those that use someone elses data structures.
The direction of most modern programming languages is to hide the details and abstract the developer from the underlying data, hardware. Who writes ANY assembly code anymore? Not too many people. Computer Science, Software Engineering, whatever you call it, is the science (art?) of managing compromises. There is a tradeoff in each and every decision made in the development process.
The abstraction of programming languages is simply trading speed, memory usage, bloat, etc for a major boost in the development time.
Take Win32 programming. Would you rather your app in VB or in native Win32 calls. Both do the same. One is smaller, leaner, but took 10 times as long to write and is prone to 100 times the amount of bugs and ends up costing the company 1000 times the dollars to maintain.
In the end, the choice of programming language, methodology, is going to depend on your circumstances.
In my opinion, software engineers need to understand everything about a computer and how it works, not just how to make the web page or java applet show up. The fundamentals of Computer Science (Data Structures, file stuctures, operating system design, compiler design, assembly language programming, database design) is the most important part of any education.
Knowing the newest, latest, and greatest JavaC++ASP language is not. If you know how languages are developed, how they work, the logic behind it, and most importantly, how it can benefit your life, there will never be a programming language that you can't pick up with a bit of work.
I read this book years ago when I was just out of college. I found it to be a very good read and an insightful on the life of Microsoft engineers. Here is the amazon link: http://www.amazon.com/exec/obidos/tg/detail/-/0029 356717/102-2673393-2852914?vi=glance
Only because that is the zip code that you happened to enter...
The direction of most modern programming languages is to hide the details and abstract the developer from the underlying data, hardware. Who writes ANY assembly code anymore? Not too many people.
Computer Science, Software Engineering, whatever you call it, is the science (art?) of managing compromises. There is a tradeoff in each and every decision made in the development process.
The abstraction of programming languages is simply trading speed, memory usage, bloat, etc for a major boost in the development time.
Take Win32 programming. Would you rather your app in VB or in native Win32 calls. Both do the same. One is smaller, leaner, but took 10 times as long to write and is prone to 100 times the amount of bugs and ends up costing the company 1000 times the dollars to maintain.
In the end, the choice of programming language, methodology, is going to depend on your circumstances.
In my opinion, software engineers need to understand everything about a computer and how it works, not just how to make the web page or java applet show up. The fundamentals of Computer Science (Data Structures, file stuctures, operating system design, compiler design, assembly language programming, database design) is the most important part of any education.
Knowing the newest, latest, and greatest JavaC++ASP language is not. If you know how languages are developed, how they work, the logic behind it, and most importantly, how it can benefit your life, there will never be a programming language that you can't pick up with a bit of work.