从知乎整理的如何转行称为程序员的一些要点
- 成为程序员之前
- 多种方案实现一个功能,不要停在原地
- 敏捷开发流程
- 编码规范
- 不局限于一种语言
- 好程序员是好产品经理
- 不断重构
- 好开源框架是最好的老师
- 保持行业敏感度
- 算法、数据结构、计算机组成原理、一致性哈希、垃圾回收算法很重要
- 重复的事情变自动
- 不熬夜
- 提前想好三年内的目标
- 学会定位错误
- 想办法薪水过2w
- 保持谦逊,不必羡慕,做好自己该做的
- 喜欢上自己写的程序,喜欢上自己的产品
- 造轮子,标准库、os、编译器、网络库
- 自己是否适合做程序员
- 专注眼下:逻辑、谨慎、细心
- 思考力和推动力:定位复杂条件下的核心问题、分析问题潜在原因、排除干扰还原最小可验证场景、抓住关键数据验证猜测与实验、思考力比经验更重要;【任务卡住了】,可以检查试验别的任务,排除自身代码原因、web UI检查异常、排查主机日志或者删除缓存、提高任务id和控制台日志。好程序员不会等事情前进,而是用尽一切方法让事情前进。
- Nerver say no:不给自己滋生暮气的机会,不合理需求可以给出时间成本,曲线救国方案
- 投资未来:给未来趋势投入时间
- 善用工具:
- 搜索引擎:善用google,获取最新知识最新技术
- 不相信重复:DRY,简洁和规范,维护成本低
- 代码片段:把灵光闪现的代码、脚本、配置和经验短片段保存
- 自动化 - 管理时间:高度脑力工作集中4-5个小时来应对就足够,需要安排时间学习,留点放空和放送时间,往前想往后想
- 自学成开发
- 哈佛大学公开课:计算机科学cs50;
- 麻省理工公开课:计算机科学和 Python 编程导论;
- 斯坦福大学公开课:编程范式;
- 麻省理工学院公开课:算法导论;(1-4都可以在网易公开课找到)
- 结合SICP 解题集阅读了《计算机程序的构造和解释》;(只看了前三章)结合The Hardware/Software Interface公开课阅读《深入理解计算机系统》(时间不够,没做习题)CSAPP偏硬件角度,学习操作系统看的是《现代操作系统》;
- 结合算法公开课学习了《算法导论》;(学得很吃力)
- 学习《算法》红宝书,书上的数据结构与算法代码都手动敲了一遍,结合VisuAlgo,效果拔群;
- 在语言层面上,学习了《C语言编程》,《C++Prime》,《笨方法学Python》;(只是阅读书籍,没有去做题实践,学习效果很不理想)
- 学习《Flask web开发》动物书,利用PyCharm一步一步搭建网站;
- 在慕课网上完成了“Linux运维工程师”系列课程学习,自己装了个虚拟机熟悉Linux的常用操作与命令;
- 学习《计算机网络自顶向下方法》,《TCP/IP》核心卷一,熟悉计算机网络基础
- 学习《SQL必知必会》,《高性能MySQL》(由于水平不够,没太看懂);
- 开始用git管理自己的代码,学习github上的优秀源代码;
- 学习markdown,用hexo搭建个人博客,记录自己的学习过程;
- 结合《深入理解Nginx》学习Nginx源码;
- 深入学习Java:阅读《Thinking in java》(太厚没看完),熟悉SSM框架,阅读《深入理解Java虚拟机》;
- 牛客网上的专项练习:Java、计算机基础、Linux等1000多道选择题都刷了一遍,记录错题与答案,导入到印象笔记,每天复习;
- 在线编程中的:《程序员面试金典》、leetcode(easy/medium)都刷了一遍,《剑指offer》书看了一遍,题刷了两遍;
- 各大互联网公司的历年真题都做了一遍;
- 针对各个公司的面经进行准备;