野生程序员如何保持技术精进?

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

首先什么样的程序员才是野生程序员?没有经过科班系统学习的程序员其实都是野生的,大学工科可能仅仅接触了个C语言,最后从事了算法、软件开发等工作,这都属于野生程序员的范畴。

为什么野生程序员应该转正?不转正就编写不出高质量的代码,我见过很多命名随意,无意义的对象判空代码片段,函数不注重按照功能划分,大片段代码装在一个函数中,代码不符合软件设计模式六大原则,诸如此类种种太多了…
在这里插入图片描述
我从毕业至今已经七个年头,毕业于一所中部地区的211大学,刚毕业的时候并没有从事程序相关工作,而是在电厂工作了一年。最后不惜赔偿东家 1W 选择了离职转入软件开发行业。

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

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

第一、对于想要从事的软件行业细分领域,要有相应的作品展示,比如做 App 开发,至少要写过一款还算复杂的 App;
第二、软件行业发展趋势很重要,把握住需求旺盛的机会,很容易入行,比如 13 年左右 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 应用》

还在持续保持阅读中,我喜欢每天早上晨读一小时,几乎雷打不动。

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

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

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

tyyj90 CSDN认证博客专家 安卓全栈开发
Android高级开发工程师,熟悉App开发,熟悉Framework定制开发,略了解Linux内核。开发使用的语言涉及Java、Kotlin、C/C++、Python和汇编NEON指令集。
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 像素格子 设计师:CSDN官方博客 返回首页
实付 9.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值