是这样的,一片灰暗,超级灰暗,伸手不见五指,抬头不见苍天的那种。

但是,这里的程序员是指那些随便学了一两个月技术,项目都没做过一个就想来拿高薪的人,结果拿着跟学之前差不多的工资,每天敲写老代码上网搬轮子然后坐着等加薪等升职,等提车买房,最后没有如愿于是上知乎吐槽。

为了与他们区分开,其他那些认认真真学习技术,打磨了四五年的人他们不叫程序员,随便叫什么,工程师,技术人,技术专家,技术经理都行,反正和上面那部分人分开。他们的前景一片光明,自由女神像的光辉照亮了他们,让他们做一个月兼职的收入都比程序员高,阿门。

不然知乎三天两头就来这样的问题,一惊一乍的,搞得我觉得自己再怎么学技术、再怎么紧跟技术前线都升职加薪无望;搞得后来的大学生们还没入行就被劝退了一大批,公司还有这么多岗位缺人怎么办?

什么样的前景能叫做一片灰暗?

当你捧着计算机科学与技术专业的硕士学位证书,工资却比不上其他专业本科毕业生,而且还比别人工作累,难升职少加薪的时候,这前景就真的是一片灰暗了。

然而实际上,2019年,IT行业薪酬水平稳居榜首,年平均工资为161352元;排在第二的是科学技术,为133459元;排在第三的是金融,为131405元。

再看看下面这张图,更直观了,有70%的程序员薪酬在十万以上。

这都前景灰暗,那其他行业岂不是…

我已经想不出词语来形容那种惨状了。

如何做一个前景光明的程序员?

学技术、学技术、学技术,还是学技术。

程序员这个行业是不是吃青春饭我不确定,但一定是靠技术吃饭的。很多人带着劳动密集型的思维来做技术密集型的事情。

体力劳动的附加价值能有多高?

而且程序员这个行业的出现真的拯救了很多不擅长混职场、不愿意与人打交道的人,只要你能解决问题,哪怕你不说话,你的老板也照样给你加薪。

因为他怕你「不小心」写了一堆bug,怕你跳槽。

但这一切都是建立在你的「无可替代性」上的,如果你只会敲敲基础代码,搬搬轮子,百度一下,那你就很容易被替代,你没有底气没有筹码谈待遇,因为这些工作是体力活而不是脑力活,而程序员应该是建筑师而不是搬运工。

如何提升自己?
有两个大方向:

1. 提升广度
2. 钻研深度

如果你选择第一个方向,那就可以尝试做一名全栈工程师,而所谓全栈工程师是指掌握多种技能,胜任前端与后端,能利用多种技能独立完成产品的人。

朝这个方向发展,不需要你每个方向的技术都学得多么深入,每一种语言掌握80%左右即可。你可能解决不了很多高深的技术难题,但你可以一个人解决前后端大部分的问题。而且因为对开发工作全局的了解都很熟悉,是离项目经理最近的开发人员。

而如果你选择第二个方向,就要求你将某个技术领域的某一门或两门编程语言学习透彻,要做到这个技术领域上的所有问题到你这里都能得到解决。而常见的技术领域包括前端、后端、移动端、iOS开发等传统领域,还有近几年兴起的人工智能、大数据分析、物联网等。

讲完了方向再来说说方法,包含以下两个方面:

1. 学什么
2. 怎么学

学什么?

学适合你所选方向的编程语言。受限于篇幅,我将对2020年最热门的十大编程语言的优劣及适用领域分析,放在了下面这篇文章里,有需要的朋友可以点开看看。

作为初学者哪种编程语言比较适合学习?

怎么学?

这里给大家分享一下我自己的学习思路:

1. 学习基础知识
2. 巩固基础知识

其中学习基础知识,又有两点要注意的:找对方向、用对方法。说的更直白一点就是学什么以及怎么学。

学习内容
首先要将基础打牢固,最基本的算法和数据结构一定要滚瓜烂熟,我当时是要求自己拿起来就能用。

比如下面这些个算法和数据结构类型我是硬逼着自己啃下来的,很多兼职的时候没用上,但是后来回归工作的时候用上了。

**10个算法:**递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法。

**10个数据结构:**数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie 树;

不要小瞧了这小小二十组词,展开了去学,怎么都得花你个一年半载,例如单单排序算法就又可以分为以下十种:

然后,当将这些基础知识吃透了之后,注意是吃透,我给自己定的要求是用到的时候就能直接用而不是回去再翻书。做到这一点之后,我就接着去学习一些更深入的内容:

比如:

- 编程框架是如何运转起来并输出“Hello World”的?
- 如何让自己更正规,更有章法地使用Mysql呢?
- Key、List、Hash、Set、ScoreSet各自的使用场景有何不同?
- 主流的编程框架都和设计模式相关,那他们有没有共通性?

当我把这些问题想清楚了的时候,我发现之前的很多问题都难不倒我了。

学习方法
每个人的学习方法都不一样,有的人喜欢边做项目边学习,有的人则喜欢学一段时间做一个项目,有的人喜欢看书学,有的人喜欢看视频学,这些都不是问题,重要的是找到适合你自己的。

但下面这几点,最好还是不要去做了,因为这些坑这些痛我都已经经历过了,头发也掉过了,结果事倍功半惨不忍睹。

1.一味的对着别人的代码去敲。

刚开始不会做只有跟着别人敲,这没有关系。但是跟着别人敲了之后一定要自己理解自己记忆把它变成自己的东西。照着别人代码敲一遍两遍哪怕三遍,除了让我看得仔细点,练了打字外没有其它任何帮助。哦,对了,还多掉了几根头发。

所以要记住模仿复现不是关键,思考才是关键。要能做到思考学习别人思路后,脱离书本和博客,完全自己实现功能。当我做到这点之后,我发现我的学习才是有效的。

2. 想着一口气吃成个胖子

我刚刚说过了,自己是因为项目做不出来才回过头来学习的,所以刚开始急于求成,学习只学个大概只求个会用,没有做到知其然还知其所以然。

**但是技术这玩意儿,不是看了个大概能照着做就会了,一口气真的吃不成个胖子,必须得扎扎实实地把事情做好。**所以不要试图一次性解决所有问题,这里给个亲测有效的建议:可以将每天的学习过程拆分成小块,分阶段学习,这样的效率会更高些。

说完了第一点如何学习基础知识,接下来再说说说说第二点如何巩固基础知识。方法千千万,我也试过不少,但最有效的我认为还是刷题,有方法的刷题。

下面这个刷题方法很普通但也很实用,推荐给你:

第一遍:可以先思考,之后看参考答案刷,结合其他人的题解刷。思考、总结并掌握本题的类型,思考方式,最优题解。

第二遍:先思考,回忆最优解法,并与之前自己写过的解答作比对,总结问题和方法。

第三遍:提升刷题速度,拿出一个题,就能够知道其考察重点,解题方法,在短时间内写出解答。

然后给大家推荐我当时看的两本书还有一些学习网站,能够让大家学得更轻松些。

书:

《代码大全》激发你的思维并帮助您构建高品质的代码。
《程序员修炼之道》全面阐释了软件开发的许多不同方面的最佳实践和重大陷阱。

网站:

  1. GitHub — 开发者最最最重要的网站:https://github.com,能学习但不只是学习。
  2. W3school —最适合新手的网站:https://www.w3school.com.cn/:免费而且全面。
  3. 实验楼 — 一个在线编程学习网站:
    https://www.shiyanlou.com/courses/,很方便实用。
  4. Code School —一个英文学习网站:https://www.pluralsight.com/codeschool,支持分阶段挑战。

最后一步肯定还是要落在实操的,我的方法是接兼职项目、一个接着一个,因为要供着自己旅行。但其实还有两种方法也能提升自己:

1.做一些实操性强的个人项目,自己练练手

田纳西大学助理教授奥斯汀·亨利结合自身经验,给出了一份“程序员都应该尝试的挑战性项目”清单,包含下面六个项目,我在那之后做了一遍觉得还不错,推荐给大家:

文本编辑器

  • 2D游戏-太空侵略者
  • 编译器-Tiny
  • BASIC
  • 迷你操作系统
  • 电子表格
  • 电子游戏机模拟器

每一个项目都存在不同的挑战,比如文本编辑器就要求在不使用GUI框架中内置的文本框组件的情况下,搭建支持光标移动、选择、插入和删除操作的文本框并将文本文档存储在内存中。

如果你能解决掉这些项目中的这些问题,然后把项目独立完整的做出来并且运行成功,你的能力肯定能再上一个台阶。

2.写技术文章

大家想必都知道费曼技巧,这也是其中的一种应用了,把你自己弄懂的东西教给别人,让别人也能看懂,在这个过程中你肯定还是要把一个完整的项目给做出来的,一整套下来,你会将自己理解的东西掌握的更透彻更深入。

也算是一种不错的实操方式了,能让你的基础更加牢固。

只是要记住,在这个不断做不断输出的过程中,做到下面这三点很重要:

1. 让编程成为一种习惯。
2. 学练结合,从做项目中找知识漏洞。
3. 思考更深层次,更底端的东西。

最后,如果你也想通过兼职来让自己的编程能力突飞猛进,下面这篇文章推荐给你,因为做兼职太容易被坑了。里面有我总结的兼职三接四不接,也就是说哪些兼职不会被坑,而哪些兼职要格外注意。还有一些国内外的兼职平台以及他们的一些特点,希望能对你有所帮助:

十个接私活赚外快的平台,你有技术就有钱

没错,中国程序员前景一片黑暗相关推荐

  1. 2017年中国程序员调查分析:大数据就业前景广阔

    在互联网行业,程序员一直是很受关注的人群.特别对准备步入社会的大学生们来说,从事哪方面的职业是一个很重要的问题,而程序员就是一个比较热门的选择.大讲台老师根据2017年中国程序员调查的数据,给同学们好 ...

  2. 中国程序员开发的远程桌面火了!Mac 可用,只有 9MB,支持自建中继器

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 月石一 发自 凹非寺 量子位 报道 | 公众号 QbitAI 对很多 ...

  3. 程序员的认知-中国程序员为什么跳槽

    2019独角兽企业重金招聘Python工程师标准>>> 一些人总是发出一些错误的声音,形成了劣胜优汰可怕的现象.他们在误导着中国,把我们的后继军训练成软件蓝领?D?D?D?D胸无大志 ...

  4. 中国程序员开发的远程桌面火了!Mac可用,只有9MB,支持自建中继器

    月石一 发自 凹非寺 量子位 报道 | 公众号 QbitAI 对很多Mac用户来说,想用远程控制请教下大佬,太难了. 在Windows上一个QQ就能搞定的事,而Mac用户几乎只能依赖Teamviewe ...

  5. 在中国程序员能不能干一辈子?

    链接:https://www.zhihu.com/question/429461563 编辑:深度学习与计算机视觉 声明:仅做学术分享,侵删 作者:pansz https://www.zhihu.co ...

  6. Apipost,更懂中国程序员的接口调试神器

    Hello,大家好,我是灰小猿!一个超会写bug的程序猿! 作为一名Java后端程序猿,对接口调试简直是家常便饭,尤其是在进行接口联调的时候,往往因为和前端对接口的理解程度不同,于是乎就出现了.... ...

  7. 微软,您的.net为中国程序员带来了什么?

    往事如烟:2003年,那时我还在念大三,像中国大多数学生一样,为到底是投诚Java还是效忠.net日夜争论,上下求索,迷茫中特别渴望有一盏明灯照亮我辈学子的前程,当时,各大媒体的报道是市场中.net和 ...

  8. 神操作!美国程序员把工作外包给中国程序员,上班摸鱼吸猫年入 20 万美元

    作者 | 英国那些事儿 来源 | 转自英国那些事儿 话说,今天在 Reddit 上看到一个无比骚的操作... 这事发生在 2012 年,事情是这样的- 主人公是个叫 Bob 的美国程序员. 他 40 ...

  9. Python 之父:救救中国程序员

    https://www.toutiao.com/i6677542632480047623/ 996.ICU 事件进一步发酵,继上个月在推特上评论 996 制度「违反人性」后,「Python 之父」Gu ...

  10. 中国程序员超 5000 万?北上广等一线城市 IT 岗位已开始饱和过剩?

    作者 | 纯洁的微笑 来源 | 纯洁的微笑(ID:keeppuresmile) 中国程序员数量有多少,一直是一个谜. 中国有多少程序员? 这两天在知乎上闲逛,看到这样一个问题比较感兴趣,我们来一起研究 ...

最新文章

  1. 安全领域多位世界级权威的智慧结晶——《黑客新型攻击防范:深入剖析犯罪软件》
  2. java 文件crc校验_JavaCRC校验原理
  3. usb打印机命令_打印机脱机怎么办 打印机脱机解决方法【详解】
  4. git本地ben远程分支_Git本地分支和远程分支关联
  5. 程序员自救指南:一不小心删库删表怎么办?
  6. 7-4 特殊数字 (10 分)
  7. JZOJ 3517. 空间航行
  8. 用树莓派3B+实现智能语音识别
  9. UnitedPlugins发布终极Bass效果器:QuickBass
  10. WordPress站点上传文件插件WordPress File Upload
  11. 华东师范大学夏令营复习计划总结
  12. 2023年江苏专转本志愿填报辅导(22上岸南工程学长辅导手册)
  13. 信息与计算机科学就业如何,信息与计算科学专业就业情况怎么样
  14. 基于安卓/微信小程序的个人健康打卡系统
  15. xor指令加解密(笔记)
  16. Excel系列教程(1):如何自动填充单元格
  17. java -cp 的使用
  18. js和java导出txt文件怎么打开文件_JS本地文件操作,JS读写txt文件
  19. 复合函数求导法则及其应用
  20. 云服务器对比网站,云主机与普通服务器对比

热门文章

  1. 中国石油燃气蓄能器市场深度研究分析报告(2021)
  2. 以空间换时间经典算法
  3. 异数OS 开放式闭源继承人协议
  4. 一些常见html5语义化标签
  5. c语言中空格的转义字符是什么意思,转义字符-转义字符是什么意思? 爱问知识人...
  6. 解决谷歌浏览器 Google Chrome不能拖拽安装离线插件的办法
  7. Navicat远程连接服务器mysql,先后报错10060,10061
  8. 计算机程序设计流程图循环,流程图无限循环怎么画流程图循环结构怎么画
  9. 什么是卡诺图,如何用卡诺图表示逻辑函数,如何用卡诺图化简逻辑函数
  10. CAD绘制固定矩形批注(网页版)