码农这个词很早就有了,但我以为这只是程序员偶尔自黑的幽默,直到论坛、博客上越来越多人正儿八经地自称“码农”、“码畜”、“搬砖的”…
有人认为“码农”、“程序员”、“工程师”等等这些称谓大可不必过于在意,名称和真实情况是两回事。
不过我也比较介意别人叫我码农,可能本身并无恶意,但是感觉这个称呼实在配不上自己的工作创意与工作程度,就像我可以说自己是屌丝,但别人这么叫自己肯定不舒服。
举个对比的例子:
设计师VS美工
艺人VS唱歌的
心理咨询师VS路边算卦
财务计算VS收银
新媒体运营VS小编
…
程序员不是码农,码农也不是真正的程序员。不自称"码农"(或者其他乱七八糟的称呼),是希望大家对编程工作的价值有明确的定位和认知,对自己的工作更加审慎、严格。
在学习编程的初级阶段,可以偶尔调侃一下,但是总不能一直如此,这是对自己的尊重也是对编程的尊重。
在英文中,“程序员”这个词有三个对应的单词:Coder、Programmer、Software Engineer。
Coder:运用自己熟练的语言在已有的编程环境写代码,按照既定的设计完成编码即可。
Programmer:精通算法、编码技巧和设计模式;精通几种编程语言、开发框架和开发库。能够独立编码,解决现实问题。
Software Engineer:了解业务知识,知道为什么这样子可以实现需求,能考虑框架的实现、开发成本、与产品经理沟通后顺利完成业务。
我知道要成为专业的程序员必须付出大量的时间和精力,我也知道现实世界是很残酷的,有很多人一开始就是做着“增、查、改、删”的工作,没有什么技术含量更别提高薪或者自己当初的理想与情怀了。
有很多人迷失在从Coder到Software Engineer转变的路上,最大的问题不是在学习和技术上,现在各种方法、理论、总结都有很多,我认为影响这个转变过程的在于能否做到对技术有热情。
“码农”和“程序员”,从称呼的角度来看确实不会对人产生影响,但是折射出来的是一个IT人对自身的定位和对职业是否有足够的热情。
有热情的IT人不一定会发展得很好,但没有热情的IT人基本都发展不好。
如果你的潜意识中认为自己处于低级职业、低级能力,对自身技术的追求得过且过,不主动学习新兴技术,那又怎么能有更好的职业规划、更高的收入呢?
慢慢地,他们开始变成了没有感情的cv机器,他们认为敲代码没有前途没有出路并拒绝和他人沟通,技术和业务能力停滞不前,对于他们来说码农真的就是吃青春饭的程序员。
举3个不太成熟的例子:
求2的32次方:
程序员:
System.out.println(1L<<32);
码农:
System.out.println(222222222222222222222222222…)
类属性定义:
码农:
public static int TYPE = 1;
程序员:
/**
此策略下消息类型为全局类型,用以通知所有符合B05协议要求的处理者
…… ……
*/
public static int TYPE = MsgTypes.TYPE_GLOBAL;
交换两个数:
码农:
void swap(int &a,int &b)
{
int temp;
temp=a;
a=b;
b=temp;
}
程序员:
void swap(int &a,int &b)
{
a=a^b;
b=a^b;
a=a^b;
}
大多数码农就是软件的主体实现者。同千千万万农民工一样,他们只是软件大厦的缔造者。
也许他们熟悉或者精通几门语言,但是在商业上面并不熟练。
程序员则会希望把自己的创意、技术和业务相结合,创造出更容易被大众所接受的东西,对他们来说,利用技术所创造出来的产品才是重点,技术本身不是重点。
他们渴望把现有的产品做到行业领先,甚至创造新的产品从而改变市场规则。
程序员更注重深度挖掘
和被迫996不同,真正的程序员愿意为了把一个产品研发到最好的效果,心甘情愿地投入大量的精力和时间到公司的产品上面。
他们很乐意接触核心代码,并参与项目结构的设计,由于经验丰富所以具有技术前瞻性,能够未雨绸缪,对市场的变化与业界技术的更新及时做出反应。
他们经常在思索如何能够解耦,用灵动的设计应对突然到来的变更,当掌握某种代码的写法,他们看到的往往是背后深层次的问题,并向专业水准看齐。
程序员更无太多功利性
程序员的工作生涯中存在一个重要的节点,就是不再傻傻地问:“学习什么语言有前景?”、“我适合什么语言?”、“这个语言以后能赚钱吗?”
而是发散思维,从大局着手,开始考虑什么语言更加适合这个项目。
我知道生活高于理想,但是程序员们,我们需要知道当技术只为你的金钱、利益服务的时候,它就已经不再是技术了,而是一个谋生的工具罢了。
过于功利性地学习一门技术,渐渐地就会失去好奇心与兴趣,所追求的高薪和岗位只会越来越远。
一个真正的程序员并不需要什么语言都精通,但是他一定愿意从技术的角度与他人讨论一门语言、一个系统,当他保持学习技术的初衷甚至带一些自得其乐的精神,反而更容易得到别人所难以企及的东西。
程序员更加“叛逆”
一个“叛逆”的程序员,他愿意聆听你的想法但绝不会盲从,他会询问What和Why,而不仅仅只停留在How上面。
当程序员知道你的想法,他或许会开始和团队成员讨论,或许提出另一种不同的解决方案,从本质上节省公司的时间和资源。
Programmer能更快更高效地完成任务,他们抵制自己像流水线工人一样仅仅为了加班而加班,并能常常坚持自己的意见,对根据手机壳颜色改变app颜色这种不合理需求说不。所以产品经理和老板会感觉他们在挑战权威,有点叛逆。
软件的构建者是Programmer而不是Coder。如果你是一匹狼,而你有感受不到团队的认同感,那你不妨换一换环境,狼只有在狼群中才能得到自身的认同感,可能没有令他人羡慕的安稳,但是却拥有强大的自信、力量、尊严。
1.不去不重视开发的公司
有一句话“选择比努力更重要”。每个公司的情况都不一样,有的公司不重视开发团队,或者要求开发者按照已有的既定模式工作,程序员们不需要什么创新点也不需要解决难题,跟着框架走就可以把项目完成。
在这种团队氛围中我们很难再强迫自己保持学习的驱动力,所以尽量避免去不重视开发团队的公司。
2.和热爱技术的人一起混
正所谓“近朱者赤近墨者黑”,如果你身边的人都是仅仅满足于工作内容,把奋斗挂在嘴边却又不作出任何实际行动的,不仅他们很难在这个行业中走远,而且你也会被带偏从而原地踏步。
所以切记和热爱技术的人一起混,通过关注他们来获取新技术,并通过他们激励自己。
3.主动承担一些大项目
如果你有机会在工作中参与一些大型项目自然是好的,没有比工作经验更宝贵的东西了。然而不是每个人都有资格去参与,所以如果你有时间的话一定要试着去开源社区参与大型项目,你甚至都不需要把它整个做完。只是在其中解决一些接口、编译器的问题就能让你学会很多东西了。
开源社区网站放在这里了,大家有空可以上去看看:
http://www.gitee.com
http://www.gitee.com
4.关注行业动态
抓住行业动态是很重要的,对于70后来说,房地产是一个风口。那个年代的房价便宜,而中国的房地产发展突飞猛进,只要是进入房地产公司,或者说和房地产生意沾上边的,现在都富得流油。
对于80后来说,炒股是一个风口。1990年至1991年间,上海证券交易所和深圳证券交易所先后成立,上证A股从96点攀升至现在的2800点…其中的利润不言而喻。
对90后来说,最火的风口莫过于电商与编程,未来几年中,大数据、算法、AI都在向你招手,当你的技术已经成熟,做风口上的猪有何不可?
简言之,码农写的是代码,程序员写的是系统。工具正在替代人类的体力活,而“大脑思考”是最难被替代的“体力活”,一个好的程序员,不光只考虑怎么用代码实现功能,而要考虑整体、模块之间关系以及效率等问题。
只有通过这样逐步地积累经验和长时间锤炼,知识体系才能构建完备和丰富,才能避免沦落为码农,从而更好地做时代的弄潮儿。
从Coder到Programmer再到Software Engineer,这不仅仅是三个单词,更是做编程的三种阶段。
在这个过程中我们要经历枯燥、挫折、迷茫,正是因为如此,所以我们才需要更多的创新与创意来与之抗衡。
无论我们正在经历哪一个阶段,请一定记住我们曾怀着好奇、尊重、热情,敲下的第一个程序:“Hello,World!”
那是所有程序员的初心:改变世界。