继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

如何自学编程和提升背景?

侠客岛的含笑
关注TA
已关注
手记 133
粉丝 1.6万
获赞 1807

前提条件:

  • 足够的时间
  • 强的自控能力
  • 高中以上学历
  • 基本的物质保障
  • 刻意练习,一万小时定理,五年磨一剑

图片描述

大战略

  • 明确你的目的
  • 了解软件技术与编程这件事
  • 拟定自学路线,策略,计划和安排
  • 按计划进行自学

    侧重点

  • 考研
    • 深入学习计算机专业核心课程
    • 掌握初试,复试用到的编程语言(C,C++,Java),针对特定场景,自行设计并实现相应的数据结构和算法
  • 求职
    • 分析当下人才需求情况,预测未来发展趋势。
    • 依据人才需求情况,倒推出需要掌握的技术群与技能树。
    • 分析自己现有基础和现实条件
    • 制定一个技术学习路线,拟定具体学习策略
    • 项目为王:学习做项目再学习再做项目.....
  • 兴趣驱动(略)
  • 工作挑战
    • 信息技术的战场,并不全在IT行业,而分布于几乎所有的,正在被信息技术所改造和重塑的传统产业之中。
    • 收集信息,看看国内外领先的同行是如何应用信息技术的
    • 思索如何选择特定的技术将自己的日常工作自动化,提升效率
    • 在本职工作上做出出色的业绩,升职、提薪,寻找到新的发展机遇
  • 创造价值
    • 业界使用主流技术,技术是否可以革命?
    • 实现想法

技术提升

主流学习路线:学习编程语言->学习开发框架->做项目

  • 编程语言:主攻一门语言,最少熟悉三种类型语言(面向对象,面向过程,脚本语言,函数式编程),广泛涉猎实用技术
  • 数据结构:动手实践
  • 算法:动手实践
  • 基础(3-6个月) 提升(2-3个月) 实战
  • 推荐书籍
    • Python编程:从入门到时间
    • C Primer Plus
    • 代码大全

图片描述


写代码之前的问题定义

所有软件都需要处理数据,弄清楚数据本身的特性,是设计与开发软件的第一件事

  1. 分析程序要处理的数据所具有的特性
  2. 确定算法技术,所用的数据结构
  3. 系统设计阶段
  4. 将数据结构与废转换为类
    • 运算表达式
      • 表达式树
        1. 应用DIP原则使程序中可以动态地切换使用不同的算法
        2. 敏捷软件开发,设计模式,领域驱动设计
        3. 用户输入数据->预处理(检查数据合法性)->调用算法->输出结果
        4. 开发时必须进行单元测试(可将测试用例放进数据库,自动测试,也就是数据驱动的数据库)
    • 图片描述

程序员必备技能

  • 掌握常规代码重构方法

    • 组件化重构,可复用
    • 图片描述
  • 单元测试
  • 会用版本管理工具

软件知识与技术的层次性

图片描述

如何学习语言?

图片描述
图片描述

中美教育体系差异

  • 国内信息大类专业理论过重,国外比较重视实践
  • 就数据结构来说,会留几个比较贴近真实(实践)的问题,比如用哈希表来做一个字典检索,编译原理(做编译器)
  • 国内信息大类专业脱节社会比较严重(也就是技术更新慢)
  • 国外机会比较多,包括工作或者实习

背景提升

  • 专业相关的志愿者
  • 国际交流/交换项目(争取拿到牛教授的推荐信)
  • 夏令营,不是很推荐(时间太短,只能开阔眼界)
  • 自主开发项目
  • 参加比赛,比如ACM(时间的衡量,最少需要两年的编程基础),数学建模
  • 助理研究员
  • 业界实习,大二实习,大三实习很重要,不过Phd就要好好考虑一下,最少有一次,对读master有帮助,积累两到三个含金量高的项目,比如机器学习,书记挖掘,代码安全等等
  • 美国读硕士最少准备七十万

    PS/CV常见错误

  • 中式思维,一定要拼命赞扬自己
  • 缺乏故事性
  • 专业度体现不够
  • 缺少激情与兴趣
  • 猜中开头,也猜中了结尾
  • 不要用模板

EE CS HCI (确认好自己的专业)

转专业

刘老师经验:华科(GPA3.5,托福九十多,GRE中等,两个公司实习,发表过一些paper,参加建模比赛,做了很多项目)-> 西北(写了解释器.......编译器) -> google
特别的经验:减少公司投入的培养成本

创业

最大化量化自己的产出和价值

中国市场比较大

为什么要出国?

  • 美国教育
  • 硅谷的前沿技术(建设性)
  • 经历

本科期间如何发论文?

最好有一个比较出彩的项目做基础,研究问题,创新突破

如何深入计算机本质

计算机组成原理,计算机系统结构,计算机操作系统,然后做一些实际的项目

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP

热门评论

写的很好

查看全部评论