作者 : 申延刚
再过几个月就要高考了,恰好弟弟是今年的考生之一,而且弟弟有意成为众多程序员中的一员,所以笔者决定结合自身经历来探讨一下这个职业。由于笔者本人是一名低端程序员,没有高层次的教育背景和大厂工作经验,所以本文主要讨论低端程序员从业者的入门,找工作等实际问题。专业要自己选择,工作也要自己选择,笔者的这篇帖子意在于能够让弟弟这样的新手程序员对这个行业有个大致了解,具体到如何发展技能水平,如何处理人际关系等问题就需要他们自己在实践中摸索了。
鉴于弟弟的学业水平(没有丝毫鄙视,因为笔者学业水平也是如此),所以笔者写这篇入行指南给他参考。曾经有个上海朋友吐槽说,他不相信有人考不上二本,考二本非常简单,无论如何他都不相信。但是就笔者身边的教育环境来说,在笔者这边考上二本貌似和上海考上美国常青藤的难度相当,当然这都出于笔者的想象与推理,因为笔者对上海和常青藤除了名字之外,其他都一无所知。
什么是低端程序员
为了避免概念混淆,本文中所指的程序员与软件工程师,码农,开发者,意义相同,但技术总监,架构师之类头衔的职位不在本文讨论范围之内。
程序员就是软件的编写人员,软件的编写人员分好多种。一个只会使用 WORDPRESS 二次开发的工作人员是程序员,开发了编程语言 RUBY 的松本行弘也是程序员,但是这两种程序员是不太相同的,从他们所做的工作,工作的业务范围,工作所需要的技能都是不同的。
所以笔者在本文中,把经常使用各种 CMS 系统为客户搭建官方网站,定制主题模板,会编写简单增删改查,了解基本 HTTP 程序运行原理,能够看看懂常用开源系统的源代码,熟练修改至满足客户需求,并且能够编写登录注册,购物车等简单业务的程序员,称为低端程序员。
低端程序员入行门槛低,甚至不需要修完传统的计算机科学课程就可以胜任该类工作,基本上只需要懂得 if else 那几个英文单词和高中数学的逻辑能力就可以从事该类工作。
低端程序员与高端程序员的区别
这里用一个例子来回答这个问题,笔者大专毕业实习的时候,在一家满是清华的 10 人规模的公司里学习基本的软件开发技能,其中有一个程序需要生成一个比较大的列表,然后依次处理列表中的数据,最终收集处理结果并展示。笔者在编写该功能的时候,每一次都把所有数据读进内存,然后处理并展示。这在测试环境中是没有问题的,因为测试环境数据样本很小,而且在我的计算机上该程序运行效率良好,但当清华的同事来帮我 review 代码时告诉我不能够一次性的把所有的数据读入内存因为生产环境的数据量巨大,应该分批次读取处理。
因为当时的笔者刚刚大专毕业,对于 SELECT * FROM 的弊端完全不懂,而且由于没有学过计算机科学的相关课程,笔者完全不能理解上文中 “每一次都把数据读入内存” 这句话是什么意思,所以笔者最终没有完成任务。
仔细分析上面的案例就可以知道,笔者这次失败是由于不理解什么是内存(不是内存卡和手机内存),什么是数组,数组里能放多少东西以数组里数据很多为什么程序就会变慢。所以笔者是一个低端程序员。
在笔者的观念中,低端程序员,只懂得表面上的东西,比如说 PHP 里的数组,操作数组的 SORT 方法,他们只知道调用一下就可以排序,但是不知道具体的原理。所以在处理一些系统性比较强的问题时,他们无能为力。
中高端程序员则完全不同,他们至少拥有计算机科学或者数学的学士学位,高中或者大学从事过 ACM 等竞赛,思维清晰,逻辑能力极强。深谙数据结构与算法之道,可以清楚的知道数组的内存分配,知道程序瓶颈在何处,关键时刻可以修改 MYSQL 的源代码重新编译从而解决问题。他们对 LINUX 非常了解,懂得各个子系统的运作方式。
这就是笔者所理解的低端程序员与中高端程序员的不同之处。前者只有招式,后者则内力深厚。而且笔者十分感激清华的同事没有把我当傻子一样对待,他们人都很好,还请我吃东西,他们很多都去了硅谷,华尔街之类的地方,而我则回到了乡下。
低端程序员的从业状况
既然高端程序员如此之厉害,为什么世界上还有低端程序员这种生物呢?那是因为,每个职业都有高中低端,比方说李嘉诚和街边小摊都是生意人,但是他们的境界可想而知。所以并不是只有BAT 才需要程序员,才需要开发者的,也不是只有北京和硅谷才有 IT 产业。那些位于二三线城市的公司可能就需要建个官方网站,可能就需要二次开发一套 ECSHOP 来为自己的生意做库管,做订单。我想那些二三线的公司貌似应该不需要花几百万一年去请一个清华的博士来帮他们做二次开发吧。
总而言之,低端程序员入行门槛低,但是薪水中等,工作环境也中规中矩。笔者曾经和一屋子电话销售和客服坐一起开发,那些老板根本不懂写代码需要安静环境这样的问题,所以笔者趁早滚蛋了。
但是最重要的是,低端程序员可以让咱们这些不怎么优秀的乡下子弟有一份还算体面的办公室工作。这至少可以让咱们避免进入富士康,钢厂,铁厂,建筑工地从事体力劳动。
不过貌似销售的门槛是最低的,而且运气好薪水也很乐观。笔者一个大专同学在北京恒大卖楼,已经开上了京牌奥迪Q3,笔者这么写并不是想表达笔者对金钱多么浮夸的热爱,只是阐述一下这一现象。
低端程序员如何入门与脱颖
读大专学软件工程,其实都是学的招式,但是招式有时候也是很有用的好么!虽然徒有招式一拳打出去没有什么力量,但是至少好看,所以我们要听党指挥,表面工作必须做好。
大专的专业书籍要保证读懂读好,科技博客上的热门名词要顺手拈来,其次就是实践,把打游戏的时间用来写 CMS 吧,找工作时附上自己手写的 CMS 系统便可成功脱颖。其次是有条件上培训机构的,完全可以无脑去上,因为他们会把套路教给你,告诉你通常的业务该怎么做,简历该怎么写。
完成上面的工作只能让你成为一个普通的低端程序员。如果你要成为低端程序员中的高端程序员,就像笔者这样。那么你最好去读一些开源项目的代码,至少要知道这个软件是干什么的,是怎么完成任务的。然后把这个项目消化,最后换一门编程语言实现一遍,项目不用太多,3 - 5 个为好。这类工作可以让你对某款开源软件有个自己的理解,可以保证让你在面试时有话可说,运气好便可成功脱颖。
用不同的编程语言实现一款软件其实还是比较困难的,不过软件开发可没有假期可言。
后话
希望自己能够成为顶级开发者,因为如果你喜欢计算机的话,便会不自觉的深入学习,这是一个良性循环,如果你喜欢你从事的工作,那么你的运气一定不差。
网友评论