前提条件:
- 足够的时间
- 强的自控能力
- 高中以上学历
- 基本的物质保障
- 刻意练习,一万小时定理,五年磨一剑
大战略
- 明确你的目的
- 了解软件技术与编程这件事
- 拟定自学路线,策略,计划和安排
-
按计划进行自学
侧重点
- 考研
- 深入学习计算机专业核心课程
- 掌握初试,复试用到的编程语言(C,C++,Java),针对特定场景,自行设计并实现相应的数据结构和算法
- 求职
- 分析当下人才需求情况,预测未来发展趋势。
- 依据人才需求情况,倒推出需要掌握的技术群与技能树。
- 分析自己现有基础和现实条件
- 制定一个技术学习路线,拟定具体学习策略
- 项目为王:学习做项目再学习再做项目.....
- 兴趣驱动(略)
- 工作挑战
- 信息技术的战场,并不全在IT行业,而分布于几乎所有的,正在被信息技术所改造和重塑的传统产业之中。
- 收集信息,看看国内外领先的同行是如何应用信息技术的
- 思索如何选择特定的技术将自己的日常工作自动化,提升效率
- 在本职工作上做出出色的业绩,升职、提薪,寻找到新的发展机遇
- 创造价值
- 业界使用主流技术,技术是否可以革命?
- 实现想法
技术提升
主流学习路线:学习编程语言->学习开发框架->做项目
- 编程语言:主攻一门语言,最少熟悉三种类型语言(面向对象,面向过程,脚本语言,函数式编程),广泛涉猎实用技术
- 数据结构:动手实践
- 算法:动手实践
- 基础(3-6个月) 提升(2-3个月) 实战
- 推荐书籍
- Python编程:从入门到时间
- C Primer Plus
- 代码大全
写代码之前的问题定义
所有软件都需要处理数据,弄清楚数据本身的特性,是设计与开发软件的第一件事
- 分析程序要处理的数据所具有的特性
- 确定算法技术,所用的数据结构
- 系统设计阶段
- 将数据结构与废转换为类
- 运算表达式
- 表达式树
- 应用DIP原则使程序中可以动态地切换使用不同的算法
- 敏捷软件开发,设计模式,领域驱动设计
- 用户输入数据->预处理(检查数据合法性)->调用算法->输出结果
- 开发时必须进行单元测试(可将测试用例放进数据库,自动测试,也就是数据驱动的数据库)
- 表达式树
- 运算表达式
程序员必备技能
-
掌握常规代码重构方法
- 组件化重构,可复用
- 单元测试
- 会用版本管理工具
软件知识与技术的层次性
如何学习语言?
中美教育体系差异
- 国内信息大类专业理论过重,国外比较重视实践
- 就数据结构来说,会留几个比较贴近真实(实践)的问题,比如用哈希表来做一个字典检索,编译原理(做编译器)
- 国内信息大类专业脱节社会比较严重(也就是技术更新慢)
- 国外机会比较多,包括工作或者实习
背景提升
- 专业相关的志愿者
- 国际交流/交换项目(争取拿到牛教授的推荐信)
- 夏令营,不是很推荐(时间太短,只能开阔眼界)
- 自主开发项目
- 参加比赛,比如ACM(时间的衡量,最少需要两年的编程基础),数学建模
- 助理研究员
- 业界实习,大二实习,大三实习很重要,不过Phd就要好好考虑一下,最少有一次,对读master有帮助,积累两到三个含金量高的项目,比如机器学习,书记挖掘,代码安全等等
- 美国读硕士最少准备七十万
PS/CV常见错误
- 中式思维,一定要拼命赞扬自己
- 缺乏故事性
- 专业度体现不够
- 缺少激情与兴趣
- 猜中开头,也猜中了结尾
- 不要用模板
EE CS HCI (确认好自己的专业)
转专业
刘老师经验:华科(GPA3.5,托福九十多,GRE中等,两个公司实习,发表过一些paper,参加建模比赛,做了很多项目)-> 西北(写了解释器.......编译器) -> google
特别的经验:减少公司投入的培养成本
创业
最大化量化自己的产出和价值
中国市场比较大
为什么要出国?
- 美国教育
- 硅谷的前沿技术(建设性)
- 经历
本科期间如何发论文?
最好有一个比较出彩的项目做基础,研究问题,创新突破
如何深入计算机本质
计算机组成原理,计算机系统结构,计算机操作系统,然后做一些实际的项目
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦