陆陆续续看过很多大V写的“如何年薪百万”、“如何月入十万”、“我是如何复习三个月考上浙大的”,还有以前打工皇帝的《我的成功可以复制》,对于条件不具备或者自控力不足的人来说很多都没有可操作价值。我们需要做的,是克服自己的思维惰性。

对于普通程序员而言,突破高薪大概有三个因素:科班学历、机会(公司的进程)、持续学习能力。这里的学历对工作两年内的人比较重要,但是工作三四年之后,再次求职hr一般最关心你最近两年的工作经历。所以好的公司可以洗白你的学历。

我之前是从嵌入式项目入行的,理所当然是从C学起。不过那时候(包括现在)最热门其实是Java,入客户端可以搞Android,入服务端可以搞后台开发,就业面很广。但是凡事都有依赖路径,毕竟大一学过C语言,要一个25岁的人完全丢弃以前学习的知识开启一门全新的知识领域是很难的。再回到Java,现在做后台很吃香,但是Android端特别是iOS端开发已经开始衰退了(指薪酬/工作强度不再具备竞争力),入行的同学可以尽早布局。

机械工程师应该都熟悉的振动强度测试实验台

职业规划

对于从事技术的工程师(不只是程序员)晋级之路基本为:开发工程师->高级工程师->架构师/产品经理。

1、对于职场新人,最重要的就是完成本分工作后,追求自己工作职责之外的成绩。比如完成代码的基本功能后,多考虑健壮性、移植性、低耦合模块化这些,积极参与解决业务问题。

前面两年保持积极的心态,换句话说前两年“把公司当成家”,对个人成长是有好处的。

2、积极吸取现有代码中的工程思想

刚做嵌入式项目的时候,本人花了半年多把ucos、lwip源码消化理顺并且自己用开发板做了很多个人项目(工作中做的项目除外),很多小优化点比如任务优先级配置更快调度、以太驱动收包性能优化等等,只有自己理一遍源码才有可视化的感觉,之后再结合CSDN上的解读博客,可以知其然更知其所以然,你会发现很多理论知识转化为代码是有差别的。

3、可能很多有一点经验的程序员会认为架构师的工作内容就是写写PPT。事实上,就算是依葫芦画瓢,有的人画的瓢就是好用一些。同样的讲解业务功能,有些领导做出来的PPT就是通彻一些,这些需要自己去悟。实现业务,讲白了就是做事方法与流程,类似的,你程序架构出来了,模块流程相通了,代码怎么写都不会很烂。

对于工作一年左右的职员来说,一般会要求独立完成一个业务模块的设计和实现(阿里P6的基本要求),这是一个很好的练手机会,把具体业务场景转换成合适的架构并实现,里面的时序图、异常条件等等都可以让你与其他人拉开距离。

4、很多业界推荐的经典书籍,可以不用一开始就上手,工作中边做边看效果会更好。像那本《UNIX环境高级编程》,刚学完嵌入式操作系统的时候以为很简单,结果刚上手看不下去。后面辗转进入互联网公司,经历过大大小小的bug以后再次翻看,不仅看的懂,还能有效的指导工作。也许这就是“螺旋式的上升”吧。

题外话

最后本人在知乎上写过一篇回答:《作为 IT 行业的过来人,你有什么话想对后辈说的》得到了一些反馈,这里也放上来吧。

1、 一定要把基本的数据结构,经典的算法,Unix编程,程序编译链接及计算机原理等基础知识扎牢,这些会长远影响你的职业发展。

2、 推荐从C语言入门,不单是因为很多操作系统、网络协议栈开源代码由C/C++实现,更多是因为C语言自身的特性:作为高级语言用户无需关注底层细节,同时能直观的看到数据流向。而且C相对语法规则较为简单,可以短时间的上手应用。最重要的是,遵循C->C++/java->python的学习方式,比直接学习python更能清晰的知道自己程序的内存等性能状况。

3、 不要过于追求第一份工作的工资,甚至可以说不要过于看重前五年的工资(虽然我工作也没满五年),也不需要基于学习如何投资股票理财,身边很多三十多岁才开始理财的人同样实现了财富自由。而是要扎扎实实做几个完整的项目,学习好基础原理,同时琢磨业务流程。当然大厂会有很多流程性的杂事,如何尽快处理不要过于消耗自己的宝贵时间,这个就是另一门学问了。

4、 胆子要大,要多发出自己的声音。很多职场新人在项目讨论的时候会担心自己技术深度不足,提出的观点比较浅薄,这个是不对的。说得不好听,我们都是来打工的,赚钱才是王道,面子是最不重要的。只有多表达自己对业务的思考才能展现自己的价值,很多时候跟人探讨自己的想法能及快速的更新自己的知识储备。

5、 本人机械工程出身,再说说机械(包括电气)工程如何转行进入互联网公司。看情况,如果是本科,极力建议跨考电气工程,因为很多基础课程像数电模电、电工学、高等数学等重要课程两个学科都有学习,考研难度相对较小。如果是机械的硕士,那么建议先把算法与数据结构全部学习一遍。

不一定非要找创业互联网公司的实习,进去一两个月学不到完整的项目开发流程。尽量加入一个学校内部的团队完成一个项目,像华为每年都会在各大高校设置编程大赛等,这些可以让你全方位的了解进入软件行业必备哪些技能。对于已经工作的老铁,像我就是毕业入职后转行的,这里给一下我的学习过程仅供参考。尽快入门C语言,利用下班时间刷题把上面链接提供的算法与数据结构等书完整的自己敲一遍代码。然后选择热门的嵌入式操作系统如freertos熟读源码理清嵌入式系统内部任务调度、内存管理、任务通信机制等基本原理,动手移植一款热门芯片如stm32f429,把tick跑起来,任务调度起来就OK了。为什么选热门芯片,因为各种坑前任都踩过,论坛咨询问题相当容易。然后就可以上手UNIX环境高级编程这本圣经了。一般而言,学完嵌入式系统,再学linux系统的进程通信、虚拟化等,你会发现比直接学习Linux要容易上手很多。对unix系统调用有了基本了解之后进行Linux应用开发基本难度不大了,如果有公司业务结合练手那是最好的。接下来就看自己的发展方向了,如果想在物联网深入发展,可以移植一下A核,对中断处理会有更深刻的理解。如果想从事网络或者后台开发,可以多熟悉网络协议栈,这里推荐lwip入门,里面给出了TCP、UDP协议规范的完整代码实现,对理解tcp慢启动、拥塞控制、socket编程帮助相当大。

6、 不要急于挑选产品经理等管理类岗位,只有多跟几个大型项目,多玩几个迭代,才能对大厂的项目落地流程玩法了然如胸,才能跟各种老油条码农供应商扯皮。对需求理解不清,分分钟被老员工玩死。

7、 也是一句题外话,前面几年虽然工资不多,但是一定要养成存钱的良好习惯。当你身无分文来到深圳,住着900的农民房,吃着广东烧腊,再看看关外五六万的房价,你就知道深圳的生存有多么艰难。唯有努力才是解决社会问题的基础,如人饮水冷暖自知,很多事情只有自己经历了各中酸楚才知道。

振动测试

对于想学习嵌入式或者软件编程的同学,可以私信我,可以分享基本入门电子书(淘宝买开发板送的)。

如何成为一名合格的程序员相关推荐

  1. 如何成为一名合格的程序员?

    为何需要记录? 从C/C++转到自学Java,深知学习东西不能和啥都没学过的小白一样,在学习的过程中,更应该多关注技术的本质及其原理,而不是浮于表面简单的增删查改搬砖.以前学习C++系,深知理解技术本 ...

  2. 怎样才能学好一门编程语言?要怎样去学习才算成功?成为一名合格的程序员

    截止到目前为止,编程开发语言已经有很多种,而每个程序员根据自己的学习能力不同,掌握一到几种不同的语言. 学习目的 每个人学习一门编程语言,都是有自己的目的.比如有人想写一个App,有人想写一个小程序, ...

  3. 怎样成为一个合格的程序员

    成为程序员就意味着要开启程序生涯,开始敲代码,如果说做程序员仅仅为了高工资,那么就不必做了.一天天干坐着只为等工资那么奉劝你,另谋高就. 学编程应该在编程中感受到快乐,不然每天对着没有表情的字母,很是 ...

  4. 想要成为一名优秀的程序员,这十八招必看

    文章目录 第一招:速学能力 第二招:理解能力 第三招:编程能力 第四招:使用能力 第五招:编码能力 第六招:注释能力 第七招:思维能力 第八招:英语能力 第九招:学习能力 第十招:思考能力 第十一招: ...

  5. 一个合格的程序员除了编程语言还要学什么?

    软件开发的确是一个系统性的工作,需要很多方面的知识和技能.根据我的研究,一个合格的程序员,单单是专业能力,就需要从技术栈.工具链.程序设计.架构设计.工程化.软件环境.软件开发模型.业务.产品这9个方 ...

  6. 如果你是合格的程序员或者你认为自己是计算机科学家

    如果你认为自己应该是计算机科学家,那么,你应该做如下的事情: 1,你学的第一门语言应该是C++,第二门是汇编 2,你应该对数学的掌握不差于数学专业的比较差的学生,对于数论那些东西你也应该会 3,你应该 ...

  7. 一名新晋程序员的自述:我的编程自学之路

    我相信每个程序员都具备自学的能力,因为如果没有自身的努力,我们不会成为一名优秀的程序员. 大概交代一下故事背景 2016年,我被计算机科学专业录取.计算机科学家需要研究如何使用计算机解决广泛问题及其应 ...

  8. 如何招聘一个合格的程序员?

    如何招聘一个合格的程序员? 发表于2012-12-03 16:29| 11559次阅读| 来源TheNextWeb| 23 条评论| 作者张祺 招聘程序员 摘要:作者是ApeForest和Conten ...

  9. 如何成为一个优秀的程序员_如何成为一名优秀的程序员

    如何成为一个优秀的程序员 by Amy M Haddad 通过艾米·M·哈达德(Amy M Haddad) 如何成为一名优秀的程序员 (How to be a great programmer) Wh ...

最新文章

  1. 计算机相关的考试题目,计算机考试相关题目汇总.doc
  2. Google 全球员工围攻 Google!
  3. linux 故障注入_基于chaosblade的故障注入平台小试
  4. 锐浪报表 多条数据集合到一个二维码中_【小麦课堂】快速查询明细数据的操作...
  5. 阿里云mysql本地可以连接数据库_本地电脑连接阿里云服务器上搭建的MySQL数据库...
  6. 创建预编译头 Debug 正常 Release Link Error:预编译头已存在,使用第一个 PCH
  7. keras利用flow_from_directoryt自己构建数据集
  8. 多元统计分析最短距离法_多元统计分析-聚类分析
  9. GPS同步时钟(NTP时间服务器)网口物理隔离的好处
  10. How browsers work翻译
  11. markdown教程
  12. python 网络培训班费用具体是多少?
  13. 力扣每日一题(九——保持城市天际线)
  14. (79)FPGA减法器设计(半减法器)
  15. android无法安装ios应用程序,蒲公英 - 文档中心 - iOS 应用安装失败原因排查
  16. 解决方法数超65536(java.lang.IllegalArgumentException: method ID not in [0, 0xffff]: 65536)
  17. 我国各省市县的名称列表
  18. 【AAAI2021】Dual-Level Collaborative Transformer for Image Captioning
  19. h5,移动端预览pdf文件,使用pdfh5插件
  20. deal.II中文文档

热门文章

  1. Revit二次开发之俯视图缩放匹配
  2. 基于javaweb的电影院会员管理系统(java+springboot+vue+element-ui+mysql)
  3. 基本类型和包装类对象使用 == 和 equals进行比较的结果?
  4. uboot emmc启动,但是无法识别EMMC,无法烧写uboot和保存uboor信息
  5. 操作系统——进程调度 C语言版
  6. linux arp攻击教程,Linux下防御arp攻击的方法
  7. jQuery焦点图轮播特效插件bxslider,使用说明 及免费下载四川智汇蓝图整理带bxslider免费下载地址
  8. 率土之滨 服务器维护 派兵,《率土之滨》新赛季开启规则及奖励活动
  9. 【源码】剪力和弯矩图
  10. 音诺恒科技RK3566安卓主板智能自助终端主板方案集合