Computer Science is Not Software Engineering
If you're concerned about my cross-posting, read my note at the bottom of this entry.
Nowadays, people who want to become programmers take computer science courses thinking it will make them "good programmers."
The courses then proceeds to drill students with useless and outdated programming language exercise and algorithm trivia which they will never ever use in practice.
Being a programmer myself I must say that I have never ever, invented any algorithm faster than the ones on the programming language I use. When performance is an issue I usually look for inefficient language semantics, this is because I implement my methods as simple as possible.
I have yet to encounter a computer science course that advocates simplicity, maybe it's a regional or case-to-case thing. But I suspect simplicity will never really be a hit among hard-core computer scientists. Software engineers on the other hand, values simplicity in code because they know that maintainable code is better than super efficient code.
Computer science students should realize that they're not studying to be a practicing programmer, but rather as an academic computer scientist. What a computer scientist is responsible for is inventing super efficient algorithms. Whether or not those algorithms will ever be used in the real world is uncertain.
On the other hand there are the Software Engineers. Like the engineers on other engineering counterparts, they are armed with the practical side of creating software. They know about all the stages in creating software. They know about planning, program design at the macro level, software construction, testing, and maintenance. In other words, these are the people who really make money.
The Software Engineers benefit from the discoveries made by the Computer Scientists. As in all endeavors, the scientists are the pioneers their success in their field is not measured in how much they work but rather in how well their inventions work. You can probably discern that it's not worth it to be a Computer Scientist unless you have the ability to invent a lot of Algorithms to make you famous enough to write volumes of books about them.
If you are currently taking Computer Science, don't lose heart. What you will learn from your courses may not all be useful but some of them will be. If what you want to be is a Software Engineer rather than a Computer Scientist, then you should study various aspects of software development in order to arm yourself with useful skills after you get your diploma. The following books are good sources of practical knowledge in software engineering: Pragmatic Programmer, Code Complete, and Rapid Development.
Note:
I couldn't decide which community I would like to post this under so I decided to cross-post to give the communities this insight.
Nowadays, people who want to become programmers take computer science courses thinking it will make them "good programmers."
The courses then proceeds to drill students with useless and outdated programming language exercise and algorithm trivia which they will never ever use in practice.
Being a programmer myself I must say that I have never ever, invented any algorithm faster than the ones on the programming language I use. When performance is an issue I usually look for inefficient language semantics, this is because I implement my methods as simple as possible.
I have yet to encounter a computer science course that advocates simplicity, maybe it's a regional or case-to-case thing. But I suspect simplicity will never really be a hit among hard-core computer scientists. Software engineers on the other hand, values simplicity in code because they know that maintainable code is better than super efficient code.
Computer science students should realize that they're not studying to be a practicing programmer, but rather as an academic computer scientist. What a computer scientist is responsible for is inventing super efficient algorithms. Whether or not those algorithms will ever be used in the real world is uncertain.
On the other hand there are the Software Engineers. Like the engineers on other engineering counterparts, they are armed with the practical side of creating software. They know about all the stages in creating software. They know about planning, program design at the macro level, software construction, testing, and maintenance. In other words, these are the people who really make money.
The Software Engineers benefit from the discoveries made by the Computer Scientists. As in all endeavors, the scientists are the pioneers their success in their field is not measured in how much they work but rather in how well their inventions work. You can probably discern that it's not worth it to be a Computer Scientist unless you have the ability to invent a lot of Algorithms to make you famous enough to write volumes of books about them.
If you are currently taking Computer Science, don't lose heart. What you will learn from your courses may not all be useful but some of them will be. If what you want to be is a Software Engineer rather than a Computer Scientist, then you should study various aspects of software development in order to arm yourself with useful skills after you get your diploma. The following books are good sources of practical knowledge in software engineering: Pragmatic Programmer, Code Complete, and Rapid Development.
Note:
I couldn't decide which community I would like to post this under so I decided to cross-post to give the communities this insight.
