《软件开发者职业生涯指南》读感笔记

如果你有一个梦想,你可以穷尽一生的时间去研究、去策划、去着手准备,然后,实际上你最应该做的却是脚踏实地地马上开始。

                                                                                                                ————安德鲁豪斯顿

如何起步?

秘诀是,你需要亦步亦趋、循序渐进。

反复阅读与付诸实践

如果你不将我在这里写的内容付出实践,那么这本书其实对你并没有多大用处。

强迫自己每天都要应用学过的东西。

反复阅读

如果你真的想改变自己的行为,把那些优良原则和最佳实践应用在自己的生活当中,最好的一种方法就是让你的大脑包裹与萦绕在你想要融入生活的思想与观念之中。

做到这点的最好方法之一就是反复阅读。这是一种低压力的吸收和应用信息的方式。

我非常鼓励你不断重复阅读这本书,特别是那些与你现实情况关联度最大的内容。

付出实践。

第二章 跬步千里: 如何入行。

千里之行,始于足下。

学习编码与学习“如何开启软件开发的职业生涯”是截然不同的两件事情。

软件开发不仅仅是编程。编程是其中的一个重要部分,但是如果只知道如何编程,你不会走得很远,尤其是当你想在这个领域中脱颖而出的话。

在自动化某一个过程之前,你必须知道手动完成这件事的全过程。

软件开发的过程往往都是从对问题的透彻理解开始的。也就是,你需要自动化些什么?

设计

在着手开始编码之前,你需要做出某种程度的设计。

写代码

写代码本身是一门学问。推荐两本必读的关于编写代码的经典名著。Steve McConnell 《代码大全》 Robert Martin 《代码整洁之道》

《敏捷软件开发:原则、模式与实践》

《设计模式》

《计算机软件测试》

《算法导论》

《企业应用架构模式》
《重构:改善既有代码的设计》

《修改代码的艺术》

《重构与模式》

《程序员修炼之道:从小工到专家》
《我编程,我快乐:程序员职业规划之道》

《如何赢得朋友及影响他人》
《编码的奥秘》

《计算机程序的构造和解释》

《程序员面试金典》

《计算机程序设计艺术》
《编译原理》

不只是写代码

千万不要忘记调试。软件开发远不止写代码那么简单。

做好计划

制定计划

制定计划的最好方式就是以终为始——从想要达成的目标开始一步一步倒着排。你必须要制定一个具体的目标——你想成为哪种软件开发者,而不是像“学习编程”或者“成为一名软件开发者”这样的泛泛的说法。

安生立命的本领

一门编程语言

我建议你潜心钻研一门编程语言的来龙去脉,这样你才可以胸有成竹地宣称:我具备用这门语言编写代码的能力。

如何结构化代码

在学习一门编程语言之后,甚至是正在学习这门编程语言的过程当中,你就需要了解如何正确地结构化你的代码。这是我的坚定信仰。

结构化代码: 编写优质的、整洁的、不需要太多注释就能理解的通俗易懂的代码,因为代码本身是用于沟通的。

面向对象设计

算法和数据结构

算法是解决各种计算机科学/编程问题的常用方法。

常用的数据结构:

  • 数组或向量
  • 链表
  • 队列
  • 散列表
  • 集合

开发平台及其相关技术(OS)

框架或者栈

框架就是一系列用于在特定平台上或跨多个平台上编写的库。通常,框架可以使在该平台上的一般性编程任务变得更加容易。

栈稍有所不同。栈是用于创建一个完整的应用程序所必备的一系列相关技术,通常包括一个框架。

MEAN栈。 MongoDB、Express.js 、AngularJS和Node.js 四种技术的合称。

MongoDB是数据库技术,Express.js是基于Node.js的用于创建Web应用程序的框架,AngularJS是用于创建Web应用程序用户界面的前端JavaScript框架,Node.js是开发Web应用程序中的JavaScript运行环境。

学会了某个栈时非常有价值的,因为这意味着你拥有开发完整应用程序所需的全部技能。许多公司都是使用某一个特定的栈来开发应用程序的,所以他们都在竭力网罗搜寻熟悉该栈的开发者,希望自己能够在竞争中借此旗开得胜。

数据库基础知识

关系型数据库和文档型数据库

数据库如何运行

如何执行基本的查询语句以获取数据。

如何插入、更新与删除数据。

如何连接数据集。

源代码控制

构建与部署

测试:

  • 白盒测试
  • 黑盒测试
  • 单元测试
  • 边界条件
  • 测试自动化
  • 验收测试

调试

方法论

 格物致知:如何拓展技术技能

学习如何快速学习

《软技能:代码之外的生存指南》中的十步学习法

十步学习法:

1、首先你要先确认你想要学习什么,即明确学习的范围。

2、针对你确定的学习主题,你需要获取足够多的信息以纵览全局。

3、然后,把主题聚焦到一个足够小的范围之内,这样你才能专心致志地钻研,心无旁骛地去研修。

4、然后,你需要确定学习目标,即你需要明确你想要学什么以及为什么要学,更为重要地,你将用哪些指标来确认自己确实已经学会了这些内容。人们都喜欢学习新东西,但是太多太多人并没有合理的办法来衡量自己到底是学会了还是没学会。

5、在确定学习目标之后,你就可以着手搜集学习资源了。

建议:不要总是从头到尾阅读一本书,相反,你需要收集多种资源,其中可以说包含书、博客、杂志、视频课程和教程。专家专栏。然后你利用其中的一部分资源创建一个切实可行的学习计划。你可以利用收集到的资源,创建一个系统而又尽然有序的学习计划来研修你想要学习的东西。

6、然后,你就可以沉浸其中了。根据你的学习计划,开始学习关于你的主题的每一个模块。而对于每一个模块,你可以采用“学-做-学”的顺序来学习。——学习一点内容,保证学到的内容足够完成一些实践任务,然后开始做一些实践。然后再回到内容当中,继续深入学习以便能够解决你在实践中遇到的任何问题。基本上,“做中学”的时候我们都会很专注。

学-做-学的关键在于:开始的时候学习的东西不要贪多。相反,你要在自己演练的时候利用自然的好奇心来驱动你的学习。然后,带着你在实践中积累的经验和遇到的问题,再回到书本上,仔细研读这些学习资料。这样的学习方法自然而然地引导你去寻找真正重要的东西。

7、最后,把你学到的东西教给别人。重要的是,你以某种方式重组你脑袋中的知识,形成了自己的思想,并且拿出来与外界交流。

做中学

从实践中学到的东西才是最好的东西,而且,当学习技术技能时,在实践中学习也是第一要务。

每一件事都需要书本知识以外的更多实践,才能够获得真正的能力。

如何做中学

无论何时,当你尝试要学习一项技术技能时,首先要明确的就是用它将帮助你做什么。

如果拥有真正的应用诉求,你就会如饥似渴地学习,就像你在驾机飞上蓝天之前一定要学会跳伞一样。

我是怎样教别人技术技能的

当我教一项技术技能时,我主要尝试教会别人三件事。

  • 总体格局:你能用这项技术做什么。
  • 如何开始
  • 你需要知道的只有20%是最有效的。

总体格局:你能用这项技术做什么。

如何开始

阅读专家写的东西: 热衷于阅读哪些这项技术技能的专家所撰写的文章。

去研究专家是如何把你想要学的技术能力灵活地运用到现实世界中的,去阅读专家对一项复杂的技术技能的观点和评论,会加深你自己的理解和认知。

重要的事情说三遍:实践、实践、实践。

铭记于心:通过实践来学习某项技术能力是至关重要的。你还应该非常清楚,你需要一个切实可行的学习计划和一个定义明确的目标——“我到底想学什么”

实践。拓展任何技术技能都需要时间。为了能对某项技能能了然于胸,你必须要多多实践。

试着不要为了学习某项技能的漫漫长路而感到沮丧,尤其是当你觉得自己没有取得任何进展的时候。 只要你有明确的目标,肯投入时间切实执行自己指定的计划,结果一定是技能傍身。

坚持下去,相信“精诚所至,金石为开”。

无问西东:到底应该学哪门编程语言

编程语言其实没那么重要

学习第一门语言总是最艰难的,一旦你学会了一门编程语言,学习第二门语言就容易多了。

了解一门编程语言并精通它很重要,但牢固掌握则不是一项有价值的技能。你只需要确保自己学会一门语言,并且持之以恒坚持下去。

蹒跚学步:如何学好第一门编程语言

从查看一款实用的应用程序开始

最好的起点是查看真实应用程序的源代码,并尽可能多地了解正在发生的事情。

选择一个开源应用程序,最好是一个设计很棒的、得到广泛应用的程序,然后开始查看它的源代码。Github上有。

寻找好的资源或书并浏览它们。

学习基本结构并用实际问题检验学习效果。

大多数编程语言应该包含一些基本构造如下:

  • 在屏幕上写上输出的能力
  • 基本的数学运算能力
  • 将信息以变量的形式存储
  • 将代码组织为函数、方法或模块
  • 调用函数的方法
  • 执行布尔逻辑求值。
  • 分支条件语句(if/else)
  • 循环语句

通过理解每一行代码来检查现有代码和工作

●Gayle Laakmann McDowell的著作《程序员面试金典》;

●John Bentley的著作《编程珠玑》;

●Project Euler网站;

●Codility网站;

●Interview Cake系列在线课程;

●TopCoder(查看其中的算法竞赛部分)。

巍巍学府:通过上大学深造成为软件开发者

有学位会让你比没有学位的人拥有更多的工作机会。

好的计算机科学概念的基础知识

每个软件开发者都应该学习操作系统、数据结构、算法、谓词逻辑、计算机体系结构以及位列大多数计算机科学学位课程体系的许多课程。

把学习当作是自己的责任

躬行实践:通过参加编程训练营成为软件开发者

自学成才:通过自学成为软件开发者

自我教育是你能学到的最有价值的技能之一

可以深入研究任何你感兴趣的主题

找到一份工作

有终生之乐,无一日之忧  ——孔子

如果你没有经验,你不得不设法获得经验。不要轻言放弃,持之以恒,脚踏实地地做好你正在做的事情,成功终将临在你身上。

练习在白板上解决编程问题

做模拟面试练习。只是为了练习。把自己的练习过程录制下来,观看回放。亲身实践任何你需要的练习。

练习,练习,再练习。

练习,我怎么强调都不为过。

把你所学到的东西付诸行动。知识不付诸行动,就毫无价值,不要只看书,要照着书中的内容去实践。想一想如何将你所学的东西运用到你自己的生活当中。

我鼓励你去做的事情就是——采取行动。

知道要做什么与知道怎样付出实践之间,还存在着巨大的鸿沟。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值