





软件开发复杂性是你的敌人。任何傻瓜都能让事情变得复杂。反之则很难。
这有利于拥有更易于理解和易于维护的系统。但并不是说应该以简单的名义抛弃功能,甚至是内部功能。当然,通常而言,更优雅往往意味着更简单。
简单是极的复杂,简单也并不意味着快速和肮脏。事实上,为了简化,我们经常需要大量思考和多次迭代工作。需求分析与概要设计企业软件开发应基本覆盖企业的主要任务,使管理人员和业务人员能及时准确地录入和获取相关单位和部门的运作状况信息,并据此有效地对其进行控制与管理。收获是更易于维护且不易出错的软件。这一直是我的一个座右铭——集中和简单。简单或许会比复杂更难;你必须花很多力气使自己的思维变得简单、有条理。
软件开发实施者要关注那些必须维护和扩展系统的代码。有的人可能需要调试你编写的代码,这使得他们成为你的代码用户。方便他们工作可以为你的系统增添价值。
寿命较长的系统具有更大的价值。在今天的计算环境中,当规格在刹那间发生变化并且硬件平台过几个月就变得过时时,软件寿命常常用月来衡量而不是用年。不同的部门之间相互角力,互不相让,弄不好也整个平安的打的事件。然而,真正的工业级软件系统必须能坚持更长时间。要做到这一点,系统必须能够适应这些改变。可以成功实现这些目标的系统都是从一开始就以这种方式而设计的。切勿在设计时自找麻烦。总是问“假使这样,那会怎么样”,并通过创建解决一般问题,而非仅仅是具体问题的系统来准备好所有可能的答案。这很可能促使整个系统的重用。
软件开发高手的一些经验之谈"
用户也是人。其实IT行业一向以能力为主,学历再好技能不过关那么也是白搭,在IT行业比较流行的就是“学历代表过去,能力代表未来”所以,学软件开发对学历的要求并不是很高,只要你对软件开发感兴趣,那么就可以来学软件开发。我们的产品和我们的失败都可能直接影响他们的生活,对你行为的后果要三思。人与人并不相同,人们的思维方式也不同:有时候我们认为困难的东西从商业人士角度看来可能很容易。这是我们必须解决而不是逃避的矛盾。勇于改变需要改变的,接受那些无法改变的,用智慧来分辨其中差异。
软件开发者不“只是写代码”,而是参与开发过程。所以如果公司在使用敏捷(Agile),你必须对其认真对待,起码也要对其保有尊重。代码评审(Code review)是软件开发过程的重要组成部分。对代码评审有所疏忽就不能成为好的软件开发人员。
作为软件开发者,我们对自己部署的代码要负责。我们也负有道德上的责任,不要做不道德的事。软件开发这个行业,新技术的更新换代比较的快,如果不是有很强的自学能力肯定是不能胜任开发的。有时候对开发人员来说不重要的事情却有极高的商业价值。商业是一个好的角度,不要逃避它。很少有公司关心你的个人成长。如果公司对你目前的水平不满意,他们一开始就不会聘用你。
对截止时间(deadline)负责。如果在截止时间前完成不了,你必须重新沟通新的截止时间。结果毕业跑到企业后一看,哪需要你干这些事,这些事老美已经帮我们干得差不多了。任务有两种复杂性:内部和外部复杂性。内部复杂性不可避免,因为这是任务本身;外部复杂性来自重新架构系统过程中异常决定的后果。要格外注意外部复杂性超过内部复杂性的情况。如果开发者在写代码或架构系统时选择容易而不是好的解决办法,他欠下的技术债迟早有一天是要还的。