If you look at the Computer Science curriculum at Universities, fundamental courses like Operating Systems, Programming Languages, Networking, Databases, Software Engineering that were taught in 1990s are still the core offerings now at school.
My main point of this discussion is it is always important for us working in the software industry to have a solid understanding of the fundamentals. They are like a good foundation of building a nice house. It is also good to know that most of our knowledge has a very long shelf life if you believe that software technologies are mostly evolutions. We always learn new technologies to add to our solid foundations.
Nowadays, to improve productivity, there are a lot of high level tools, languages, frameworks that help shield all the glory details. This works perfectly most of the time for day to day tasks. But the fundamentals are always critical when you try to address some specific and difficult problems. I will spend more time in subsequent posts for some important examples in my mind.
Revolutions
- Internet. By internet, I mean HTTP and HTML. Even with all the latest Web 2.0 advances, we are not replacing HTTP and HTML.
- Smart Phones/Wireless. They are really highly portable "computers". Who would have imagined 20 years ago of what we can do nowadays on a "portable telephone"?
Evolutions
- Operating Systems. Think about UNIX, from System V at AT&T to open source Linux now. How much fundamental changes are in the Kernel design, and the Shell?
- Programming Languages. C#, Ruby, Java, are they all similar to C++ by using object oriented concepts.
- Networking. TCP/IP, ethernet. They are still used for in networking.
- Databases. Relational technology, how different it is now than past decade?
Hardware is getting so much cheaper and more powerful that it enables all these revolutions and evolutions to happen. In my mind, if microprocessors power remains constant, the software industry will sure need more "revolutions" to make all the progress that we made in past 2 decades. However, this trend is changing in my mind, so concurrency will become much more important in the future to leverage the multi-core processors power. Another future topic.
All of these tie back to my philosophy, using the right technology to innovate a business or solve a problem. Next week, I will touch on some examples on the other 2 areas, business knowledge and management.
I am glad to hear your different viewpoints. Have a good weekend!
No comments:
Post a Comment