这周推荐了这就是软件工程师,这本书通过整合多个正在工作又或者有声望的工程师的总结向我们展示了一个程序员的不同阶段和职业素养。
软件工程师的四大阶段
1.新手阶段:执行力,上级交待的任务和工作认真完成
2.进阶阶段:设计能力,提出和实现新的需求
3.高手阶段:融汇贯通 架构师能够站在整体去审视一个项目
4.大神:沉淀方法,产生方法论,带领一个领域的前进
目前我们大部分都处在第一个阶段——新手阶段,需要保证自己的代码量和基础内容的学习
程序员的特点:普世低调的创新精神、理想主义的工匠精神
公司的核心成员
1.创始人/合伙人:团队中的顶梁柱。做出贡献,带动团队,创新优化,拥有前瞻能力,能够抓重点
2.贡献者 做事有热情,推进工作的进行。 探路能力、贡献方法、解决难题、提高标准
3.行家:手足力量 做事有经验,有判断和决策能力。降低成本、提升效率、防火能力(发现并解决问题)
这三类人是需要在工作中根据个人性格特点选择朝哪一个方向转变。持续学习是程序员的刚性需求,新技术层出不穷,需要我们掌握和学习
软件工程师的工种:
1.交互
2.系统
3.算法
4.数据分析
5.测试
6.运维
未来软件行业可能会消失,因为现在少年儿童编程的普及——要有忧患意识,很多小孩就可以写出优质的代码和掌握基础的编程技巧了
入行的准备
1.选择平台上:
主要考虑公司做的事情是否能适应未来,该公司是否是技术驱动的以技术为主导的。这样能够让我们保持学习和了解新技术,做更有挑战的工作,以防被市场淘汰
2.知识学习:
知识都是死的,只要想学习,投入足够的时间和精力总有一天会懂的
3.代码规范:
按照团队规定的规范进行编码
编程原则:
1.避免重复性原则:用一种方式解决多种问题 DRY原则
2.单一职责原则:组件化,各司其职
3.高内聚低耦合:各个组件联系减少(解耦)
4.开闭原则
进阶阶段
关键能力:设计能力
需求分析的要点:1.明确问题的边界条件 2.关注不可预期案例
设计需要抽象能力:从众多案例、实例中归纳总结出通用的方法和规则,即不断对信息进行过滤,分离出本质
这个阶段基本上对各个业务逻辑都比较熟悉,能够独当一面去解决问题了,更多的是完成一个框架后,细节部分交给团队去完成。并且能够精准的发现潜在问题和迅速提出解决方案
学习技巧:
1.用知识树学习。知识多且杂,构建知识树能够很好的构建知识点之间了联系,复习,回顾也很方便
2.探索知识缘由。挖底层源码、原理
3.掌握方法套路。授人以鱼不如授人以渔,不要为了写案例而写案例
行业清单
推荐书籍:《程序员修炼之道》——如何成为一名高级软件设计师
《隐匿在计算机软硬件背后的语言》——了解计算机工作原因
《算法图解》
.