软件工程师分为两种: 一种充分理解了计算机科学,从而有能力应对充满挑战的创造性工作; 另一种仅仅凭着对一些高级工具的熟悉而勉强应付。 这两种人都自称软件工程师,都能在职业生涯早期挣到差不多的工资。 然而,随着时间流逝,第一种工程师不断成长,所做的事情将会越来越有意义且更为高薪, 不论是有价值的商业工作、突破性的开源项目、技术上的领导力或者高质量的个人贡献。