你是“野生”的吗?野生程序员如何保持技术精进?

B站影视 港台电影 2025-03-31 00:59 1

摘要:首先什么样的程序员才是野生程序员?我认为没有经过科班系统学习的程序员其实都是野生的,大学工科可能仅仅接触了个C语言,最后从事了算法、软件开发等工作,这都属于野生程序员的范畴。野生程序员如果一直不转正,越到职业生涯后期越乏力,解决问题也无法得心应手。

野生程序员一大抓,野生程序员想要“转正”,却要付出加倍努力。我和很多程序员小伙伴一样,来自于野外!

首先什么样的程序员才是野生程序员?我认为没有经过科班系统学习的程序员其实都是野生的,大学工科可能仅仅接触了个C语言,最后从事了算法、软件开发等工作,这都属于野生程序员的范畴。野生程序员如果一直不转正,越到职业生涯后期越乏力,解决问题也无法得心应手。

确切地说,不转正就编写不出高质量的代码,我见过很多命名随意,无意义的对象判空代码片段,函数不注重按照功能划分,大片段代码装在一个函数中,代码不符合软件设计模式六大原则,诸如此类种种太多了......

我从毕业至今已经十多个年头了,毕业于一所中部地区的211大学。刚毕业的时候并没有从事程序相关工作,而是在火力发电厂工作了一年,最后不惜赔偿东家 1W 选择了离职转入软件开发行业。从以前初出茅庐的青涩,到现在已然成为油腻的中年大叔,岁月是把杀猪刀。但和前辈们一样,总觉得在敲代码这个行业留下一点自己的印记,就不枉敲了这么多年代码。当然也有自己好为人师的属性,可能我走过的路,对即将踏上程序员行当的新手小白具有借鉴的意义,同时对已经入行好几年的程序员可能也值得参考。

我也做过外包,当过“小卡拉米”,啥也不会,整天打杂。后面也逐渐成为主程序员,做过不少项目。目前作为一名移动端软件主管,管理了十人左右的队伍,搞定人远比搞定程序要难太多。学而优则仕,在公司敲代码敲的还行同样也会升任管理岗,我就是这样走马上任了基层管理岗位(当然不能忘了领导的栽培和信任)。同样我也是 CSDN 博客专家(TYYJ-洪伟,粉丝数 1.7W),分享的文章累计 200+ 篇。当然我也是一名全能 APP 战士,之前开发了至少 10 多款个人(非公司产品)安卓手机 APP(需求分析、UI 设计和编码一气呵成),这些 APP 也帮我赚了点小钱。但我一直认为程序员保持技术精进是必要的,另外对于计算机基础知识的理解和掌握是必须的,我也面试过很多程序员,能让我眼前一亮的程序员,都是那些基础扎实的人。

我当年为什么要走上软件开发这条路?还是得从兴趣说起,人们都说兴趣是最好的老师,的确没错,我在上大学的时候,当年的智能手机还是时髦货,上大学的时候还有不少同学在用山寨功能机(就是那种深圳华强北出品),当年上大学手机已是标配品,花了老爹的钱买了一部诺基亚 N72,这款手机搭载 Symbian V2 操作系统,接着就和塞班论坛结缘了,乐此不疲的发帖、回帖帮“机油”(机友)们解决使用中的问题,当然最后都当上了 N72 的版主(这个板块讨论的老大)。但慢慢的就觉得只是收集整理一些别人的软件,修改一些皮肤这类事情并不过瘾,如果自己写软件安装到手机里运行,这多牛逼啊!在此期间接触了 Python 语言,终于写成了一个小工具运行到了手机上,那种喜悦的心情简直不言而喻。这奠定了我学习 Android 开发的基础,诺基亚手机逐渐没落,塞班论坛诺基亚手机板块已经冷清了很多,这个时候作为常年混迹手机论坛的我,自然关注了 Android 系统,Android 系统解决了塞班系统的一些顽疾,出于强烈的好奇心我拿出大学期间做兼职赚的一部分钱(那可是暑假发传单之类的辛苦钱),买了摩托罗拉 Defy,下定决心要在 Defy 上运行自己的软件,开启了漫长的 Android 学习生涯,暑假没回家在宿舍起早贪黑没日没夜的看 Android 资料,饿了就吃炒饭度日,终于通过抄代码的方式写了个简易日记本,里面的代码很多都不能理解,仅限于死记硬背。虽然大学学了一点 C 语言,但对于构建一款真正的软件完全没有概念。不理解代码这个“拦路虎”不踢开不行啊,于是买了一本《疯狂 Java 讲义》去刷。后面又刷了《疯狂 Android 讲义》,这个时候就可以开发一些 Android 程序了,但远不至于游刃有余,实际上还差十万八七里。因为学习 Android 早,外加 2013 年左右 Android 程序员需求量大增,2014 年辞职找一份 Android 工作还是很容易的。

所以对于转行敲代码,我想说两点。

第一、对于想要从事的软件行业细分领域,要有相应的作品展示,比如做 App 开发,至少要写过一款还算复杂的 App;

第二、软件行业发展趋势很重要,把握住需求旺盛的机会,很容易入行,比如 2013 年左右 App 开发需求旺盛,同等条件下入行就容易许多。

找到了工作并不代表你的技术就达标过关了,这最多属于一个 CRUD 工程师。真正的摆脱野生程序员的标签,需要付出巨大的努力,你要系统的学习计算机基础知识,只有掌握了大量的基础计算机知识,才能把开发工作做的游刃有余,解决 bug 不是靠搜索引擎,而是靠一波脑力分析,最后找到问题根结所在,从原理上解释修改的正确性。比如补码,虽然非常基础,但如果不能熟悉这个知识点,在 Java 通过 JNI 接口使用 C/C++ 函数的时候,如果使用了整型数组,在 Native 层强转为无符号数组,然后做一些数组元素累加后除法求平均,得到的结果可能并不是你所期望的,负数本质上在计算机中以补码的方式存放,强转为无符号数并不会改变底层二进制的表示。

如果你是一个野生程序员,那你必须付出巨大努力才能转正。我来提几个问题如果答不上来就需要继续修炼,一旦你认识到了自己的差距,相信假以时日,经过努力一定会转正。

1.使用你擅长的程序语言做开发,具体新建线程非常容易,那么在操作系统层面做了什么?

2.Float 数据在计算机中如何存放?

3.快速排序和红黑树你了解吗?

4.堆内存和栈内存的区别是什么?

5.计算机如何组成?

6.TCP 协议位于网络协议哪一层?

如果这些问题你还不知道如何回答,说明你的基础知识可能有点匮乏。这需要你系统学习计算机组成原理、操作系统、算法和计算机网络,甚至编译原理。

分享这些年我工作以后刷过的书单:

1.《深入理解计算机操作系统》

2.《现代操作系统》

3.《计算机组成原理》

4.《算法》橙皮书

5.《编译原理》

6.《计算机网络自顶向下方法》

7.《深入理解 Android Java 虚拟机 ART》

8.《揭秘Java虚拟机》

9.《深入理解Java虚拟机 JVM高级特性与最佳实践》

10.《深入理解 LINUX 内核》

11.《深入 Linux 内核架构》

12.《LINUX 设备驱动程序》

13.《Linux 内核设计与实现》

14.《深入理解 Android 卷一》

15.《Android 系统源代码情景分析》

16.《Java 并发编程的艺术》

17.《图解密码技术》

18.《设计模式之禅》

19.《Effective Java 中文版》

20.《Android 应用性能优化》

21.《Kotlin 实战》

22.《轻量级Java EE企业级应用实战 Struts 2 + Springs 3 + Hibernate 整合开发》

23.《疯狂 HTML 5/CSS 3/JavaScript 讲义》

24.《C++ Primer Plus 中文版》

25.《打造高质量 Android 应用》

野生程序员想要转正,要耐得住寂寞,把上班中刷手机的间隙,还有下班和周末的时间利用起来,才能取得大的进步。比起来从各种博客、公众号学习知识,我更推荐看书,因为书上的知识是系统化的,博客之类的学习只能作为补充。

写在最后,兴趣是最好的老师,计算机知识的积累,一颗雄性,远远比不上好奇心!每个问题都想追根究底,才能不断进步,哪里不会补哪里,逐渐将自己的知识体系构建起来。野生程序员共勉,望早日转正。

之所以写这篇文章,就是为了激励广大野生程序员,你加倍的努力,一定会在将来有所收获的!

来源:科技迅

相关推荐