1)商业应用程序闹剧:
我认为整个“企业”框架都是烟雾和镜子。J2EE、。net、大多数Apache框架和大多数用于管理这类事情的抽象所产生的复杂性远远大于它们所解决的问题。
以任何常规的Java或。net ORM,或任何所谓的现代MVC框架为例,它们都能“神奇”地解决乏味而简单的任务。您最终会编写大量难看的XML样板文件,难以快速验证和编写。你有大量的api,其中一半只是为了集成其他api的工作,不可能回收的接口,以及只需要克服Java和c#的灵活性的抽象类。我们根本不需要那么多。
那些拥有自己的描述符语法、过于复杂的数据库和群件产品的不同应用程序服务器呢?
这里的重点不是复杂性==坏,而是不必要的复杂性==坏。我曾经在大型企业安装中工作过,其中一些是必要的,但即使在大多数情况下,一些自制脚本和一个简单的web前端也足以解决大多数用例。
我会尝试用简单的web框架、开源数据库和简单的编程结构来取代所有这些企业级应用。
2) n年工作经验要求:
Unless you need a consultant or a technician to handle a specific issue related to an application, API or framework, then you don't really need someone with 5 years of experience in that application. What you need is a developer/admin who can read documentation, who has domain knowledge in whatever it is you're doing, and who can learn quickly. If you need to develop in some kind of language, a decent developer will pick it up in less than 2 months. If you need an administrator for X web server, in two days he should have read the man pages and newsgroups and be up to speed. Anything less and that person is not worth what he is paid.
3)常见的“计算机科学”学位课程:
The majority of computer science and software engineering degrees are bull. If your first programming language is Java or C#, then you're doing something wrong. If you don't get several courses full of algebra and math, it's wrong. If you don't delve into functional programming, it's incomplete. If you can't apply loop invariants to a trivial for loop, you're not worth your salt as a supposed computer scientist. If you come out with experience in x and y languages and object orientation, it's full of s***. A real computer scientist sees a language in terms of the concepts and syntaxes it uses, and sees programming methodologies as one among many, and has such a good understanding of the underlying philosophies of both that picking new languages, design methods, or specification languages should be trivial.