为什么很多程序员,成为不了技术大牛?

举报
实力程序员 发表于 2021/05/27 09:22:00 2021/05/27
【摘要】 为什么很多程序员,成为不了技术大牛?这个话题,有点敏感,可能会让很多程序员心里非常不舒服。但现实世界中,技术平庸的程序员比比皆是,水平精湛的程序员少之又少。尽管每年有大量的学生毕业后成为程序员,但从企业招聘的角度却一直难于招到高水平的程序员。也就是说,低水平的程序员过剩,高水平的程序员严重不足,这种两级分化的情况非常严重。我本人,从事产品研发和技术管理已经超过20年,我也面试过非常多的程序员...

为什么很多程序员,成为不了技术大牛?

这个话题,有点敏感,可能会让很多程序员心里非常不舒服。但现实世界中,技术平庸的程序员比比皆是,水平精湛的程序员少之又少
尽管每年有大量的学生毕业后成为程序员,但从企业招聘的角度却一直难于招到高水平的程序员
也就是说,低水平的程序员过剩,高水平的程序员严重不足,这种两级分化的情况非常严重。

我本人,从事产品研发和技术管理已经超过20年,我也面试过非常多的程序员。很多5年甚至10年以上的程序员,做过很多项目,但却连内存分配、字符串查找替换这些基本的题目都答不上来。

就像一个人,习武多年,就只学会了花拳绣腿,内功几乎为零。这种方式,你就是再练10年,也是注定无法成为高手的。
更要命的是,有些人还没有自知之明,还觉得自己水平挺高的......

也有一些程序员,能够认识到自己多年没有技术提升,一直停滞在一个比较低的层次上,但苦于不知道问题出在哪里,不知道如何能提升到更高的层次,因此非常迷茫。

我自己工作了这么多年,亲身经历过这样的迷茫期。因此,作为过来人,我准备写一些相关的文章,把我自己的体会和经验总结出来,送给在迷茫中挣扎的朋友们,希望能够帮助大家形成正确的认知,快速提升底层硬核技术能力,实现技术跃升

首先讲讲,如何学习。

如何学习,让自己能快速成长,这个“学习”本身,也是要经过学习的,也是有相应的方法和技巧的

通常,一个程序员进入一个公司,就被分配到某个项目组,项目经理给你分配了一个模块,让你来开发。这个任务不是很难,你做了不到1个月就完成了。然后项目经理又给你分配了一个新的任务,然后你又开始干。就这样,转眼过了几年,你在公司做了多个项目,每个项目都是做应用开发,技术挑战不大,因此你也觉得没什么技术长进。觉得是这个公司技术层次不高,让自己没学到太多技术,因此决定跳槽。

由于自己水平进步不大,因此高技术含量的工作岗位自己不能胜任,面试时被虐得体无完肤,只能找初级或中级程序员的职位。
到了新的公司,上述做项目的过程又开始上演,又干了几年,还是没觉得自己有多大的技术提升。

以上,就是一些程序员的常见职业经历。自己技术水平没有得到提高,是公司的问题,还是自己的问题?到底问题出在哪?如何解决呢?

首先,你需要重新思考一下,你的主管分配一个工作任务给你,你是如何看待这件事情的?
就只是为了完成这个工作目标,领一份薪水报酬吗?
不,绝不是!这个工作任务,只是给了你一个机会,让你能够对这个任务相关的技术领域进行学习和探索,通过完成这个任务,来提升你的技能,让你自己成长。
因此,完成工作目标,只是一个副产品,只是你能力提升这个主产品的附带结果而已

不要为了完成任务而完成任务!

更通俗地讲,主管给你分配了一个任务,是公司给了你一个练手的机会,让你用公司的客户、项目、团队、设备等来做试验,让你可以接触到相关的技术,尝试不同的实现方式,思考和评估不同方案的优劣,在编码、设计、需求、沟通和协作等方面全方面锻炼你自己,不断磨砺你的技能

因此,从这个新的认知出发,你就会发现工作开启了另外一扇门,通往了一个全新的学习世界

可能有些程序员,思路还没反应过来:这个工作任务就是没有技术含量啊,我做这个任务怎么能提高我自己?

这个任务,只是一个契机,让你能接触到几个技术点,可能你稍微花点时间,查查资料就学会了。但切记:你的目标不是只是为了完成任务,不是只学了这几个技术点就结束了。如果你从这几个技术点出发,向外延展技术领域,从点扩展到线,从线再扩展到面,不断扩展下去,那你就能够学到更多的技术了。

举个例子:
初级程序员小张,完成某个工作任务时,学会了用 printf 函数向屏幕上格式化打印输出文本。他发现,用man 3 printf 查阅函数原型时,man的帮助信息中提供了一系列相关的函数,如fprintf,snprintf, vprintf, vsprintf...., 这些函数都是干什么用的?另外,我已经学会了format参数中用%d格式化整数,%s格式化字符串,还有别的格式化控制符吗?man帮助信息的最后有个SEE ALSO,如下:

SEE ALSO
       printf(1), asprintf(3), dprintf(3), scanf(3), setlocale(3), wcrtomb(3), wprintf(3), locale(5)

这些函数自己都不知道啊!比如,asprintf,dprintf, setlocale, 顺着这些点找下去,这些点又会带出更多的技术点出来,这样你还会学不到技术吗?

当你有了这个思维认知后,你的学习才真正开始!


对于查阅api这件事,强烈推荐大家使用man,而不是baidu或者是其它中文搜索引擎!!!

作为深入学习者,必须要学习官方的原版英文材料,而且要全文一字不落地阅读,因为这是最权威的技术教材!无论你英文是多么弱,都得强迫自己去阅读英文api,因为只有这样,你才能真正全面而深入地掌握这个api。注意,全面而深入!


我的微信号是 实力程序员,欢迎大家关注我的后续文章。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。