软件开发经典书籍推荐(一)---软件开发的科学与艺术
[复制链接]
本帖最后由 tiankai001 于 2015-2-27 17:20 编辑
你在自己的学习工作中,能不能跟和你意见不一致的人一起工作,能不能保持一种宽容的心态。因为人与人的思维方式是不一样的,你在你的工作中肯定会遇到与你意见不一致的人,这一点是毫无疑问的。关键在于,当你和他人意见不一致时,能不能和他们坐在一起,心平气和的互相讨论,如果你只是坐在那里一味的抱怨别人,那是一点用都没有的。你要做有用的事情,做能够对目前的情况做出改观的事情。 华为的思路就是技术要以市场为导向。一项技术一定要有其应用的市场。没有市场的力量,任何技术都注定埋没。 在把一项技术转变为产品的过程中,找到早期接受者—一群很迫切需要这项技术的人,是最为关键的。如果只是很多人对这个技术比较感兴趣,那这项技术就只能停留在感兴趣的阶段。 先行者===早期接受者------早期消费群体----别人都这样做,我不这样做就不行了。这是井喷期,也是关键的盈利期。晚期消费群体—例如手机的普及,电力,石油等。看一个产业和一个产品一定要这么看。而且,做早期消费群体的阶段,盈利最高。 在这个链条中,费用占了特别重要的地位。当然,也受到外部配套环境的制约。所以一个产业或产品要成熟,必须在价格和外部环境两个方面都成熟。 间断技术即有质的飞跃的技术—即架构和本质发生了变换,使得一种技术替代另一种技术。 如果技术太复杂,无法让人接受,或者是技术本身有这个固有的复杂特性,就会形成鸿沟---阻碍了从早期接受者到早期消费群体的转变。 必须实现的两点:提供一套全面的解决方案或者说是对新技术的复杂性提供降低其复杂性的影响的手段。二是使客户感受到可靠。即能提供一套切实可行的解决方案。 化繁为简----要做大多数用户都适用的案例,不要求功能齐全性能先进-----争取使此技术成为工业或市场标准 不要沉溺于最先进的技术,而是沉溺于市场最需要解决的问题。我们要做服务提供商,也就是问题解决商。找对问题是第一步。 全局思考架构,但是从小处着手。当刚开始进行研究时,要着眼于解决一些非常小而却非常迫切的问题。要有长远眼光,触类旁通。这是解决问题的核心。 品牌必须具有深厚的基础功—人力、经验、数据、方案、软件等等。必须能够提供实际的价值。 人们在那些具有严格的时间和进度预算,而且允许他们自由的解决其内部工作上的问题的团队中最有效率。 权威仅仅来源于知识和事实,而非职务。 适合产品特点的权利分配和权责体系。 在做产品阶段回顾时,集中精力于产品的性能改进和功能提升。而不是挑任何人的过失。 要清楚的知道用户的需求,并给出详细的定义。 确保产品能给我们带来收益。任何产品还是以商业利润为最终目的的。 控制用户的期望值,使其不能太高。也就是我们在努力的按照您的要求在做,但不知道最终产品是否能满足您的要求。 开发团队的管理:一是文档非常健全,文档的规范很清楚。二是同一个小组内开发人员之间互相阅读源代码。第三点就是所有代码的清晰注释。 进度是第一位的,质量可以接受和最优之间进行控制,而功能只需要能够接受就可以了。根据这个,项目经理可以按照这个原则进行权衡。另外我们常常谈到说需求不要镀金,至于为什么不要镀金----其原因如上----因为商业利润是我们的最终目的,需求镀金的资源完全可以用在质量改进上。 项目管理是软件工程和软件开发管理的综合体,必须在项目管理的各个方面都尽可能的做到最优,当然也需要我们做出适当的取舍,只有把项目管理的各个方面作为整体的系统来看待,明白任何方面的短板都在最终影响着项目的最终结果,明白这个,才能真正做好项目管理。 设计—满足用户需求,便于用户使用--最好不需要使用说明书,开发技术简便---这是设计的艺术。 我们自己对软件的需求,只表达了用户需求的很少的一部分。 基于用户的需求,立足于目前的现实技术才是软件成功的基础。 软件的有用性和可用性一定要分的开。有用性是技术能实现的功能—可能太花哨,可能步骤太复杂,可能很少用到这个功能等等—也就是说它不是核心功能。可用性是基于核心功能的基础上,适合用户的易用性,常用性的功能需求。 基于用户心理行为的界面设计是设计师的重要技能。 设计当中的常见错误:技术至上,为我独尊,满足人的一切需要,功能至上。而解决这些个错误的一个好方法就是---用户场景模拟---至少3个具体的用户,至少3个具体的场景,至少3个具体的需求,至少1个具体的期望。 项目经理的权威只能通过努力工作,在实践中赢得同事的信任而建立起来的,项目经理的权威来自于或者说形成于他自己工作中表现出来的较高的领导力,洞察力和判断力,以及高素质的技术专长和出色的沟通协调能力等等。这种权威的形成是自发的和自觉式的,也唯有这样,权威才是更有效的和长久的。 项目的开发过程中,项目经理的领导能力是相当重要的,项目经理必须为项目组的高效率运作提供强大的推动力,比如项目进度会议的召开。项目经理经常需要在错综复杂的环境下,迅速洞察问题所在,并做出好的判断,为问题的解决提供切实可行的方案。项目经理还要真正具备技术上的专长,为项目组开发人员解决设计上的难题,能充分发挥和运用项目组各个项目干系人或项目组内部专家的专长。要让大家感觉到你能理解并尊重他们,以赢得他们的信任。当存在矛盾时,项目经理应该根据项目数据和事实合情合理的对最后的选择方案做出决定,而不是凭空臆测或刚愎自用的做出决定。一旦你在项目组中有广泛的信任和尊重,开发人员会经常与你主动讨论各种问题,测试人员也会尽最大努力来配合你的进度安排。 项目经理提出一个框架性的思路,与项目组内各人员一起探讨,充分发挥项目组各个成员的积极性,帮助大家总结出一个大家都信服的最总方案来。 项目经理要学会使用开发人员和测试人员共同的专业术语,融入到他们的工作中去。对各个项目干系人的语言习惯要了解,才能谈得上沟通,对各个干系人的业务真正了解,才能谈得上真正的沟通。 开发人员需要项目经理提供条件使他们集中精力于代码的编写工作,测试人员对测试的精度和广度要有全局和商业视野。 项目经理最重要的职能就是协调各项目干系人之间的关系和利益诉求,要保证项目组各干系人每天都在做正确的事情,所有的项目资源和项目进出口都在良好的运转。技术和关系两者都必须足够强才能做好项目经理。 项目经理的日常工作有三多-会议多,每天7、8个,电子邮件多-每天四五百封,需要处理的常常占一半,另一方面就是需要审阅和跟踪的程序错误多,因为他从全局决定这些错误的等级和对待这些错误的策略。 很多问题需要在几小时内做出决策,这使得项目经理的个人精力、经验、预见力,和技术能力提出很高的要求。 会议结束要做出行动列表—确定WBS和OBS,而不仅仅是会议纪要。 关系构建能力和写作能力也是项目经理的重要能力。 文件头,函数头和程序中重要的数据结构前都要做注释。
https://download.eeworld.com.cn/detail/lamaba/468583
|