程序员和码农有什么不同?从这三个单词就看得出来

码农这个词很早就有了,但我以为这只是程序员偶尔自黑的幽默,直到论坛、博客上越来越多人正儿八经地自称“码农”、“码畜”、“搬砖的”…

有人认为“码农”、“程序员”、“工程师”等等这些称谓大可不必过于在意,名称和真实情况是两回事。

在这里插入图片描述
不过我也比较介意别人叫我码农,可能本身并无恶意,但是感觉这个称呼实在配不上自己的工作创意与工作程度,就像我可以说自己是屌丝,但别人这么叫自己肯定不舒服。

举个对比的例子:
设计师VS美工
艺人VS唱歌的
心理咨询师VS路边算卦
财务计算VS收银
新媒体运营VS小编

程序员不是码农,码农也不是真正的程序员。不自称"码农"(或者其他乱七八糟的称呼),是希望大家对编程工作的价值有明确的定位和认知,对自己的工作更加审慎、严格。

在学习编程的初级阶段,可以偶尔调侃一下,但是总不能一直如此,这是对自己的尊重也是对编程的尊重。
程序员和码农有什么不同?从这三个单词就看得出来_第1张图片

01 三个单词看码农与程序员的区别

在英文中,“程序员”这个词有三个对应的单词:Coder、Programmer、Software Engineer。

Coder:运用自己熟练的语言在已有的编程环境写代码,按照既定的设计完成编码即可。

Programmer:精通算法、编码技巧和设计模式;精通几种编程语言、开发框架和开发库。能够独立编码,解决现实问题。

Software Engineer:了解业务知识,知道为什么这样子可以实现需求,能考虑框架的实现、开发成本、与产品经理沟通后顺利完成业务。

我知道要成为专业的程序员必须付出大量的时间和精力,我也知道现实世界是很残酷的,有很多人一开始就是做着“增、查、改、删”的工作,没有什么技术含量更别提高薪或者自己当初的理想与情怀了。

程序员和码农有什么不同?从这三个单词就看得出来_第2张图片
有很多人迷失在从Coder到Software Engineer转变的路上,最大的问题不是在学习和技术上,现在各种方法、理论、总结都有很多,我认为影响这个转变过程的在于能否做到对技术有热情。

“码农”和“程序员”,从称呼的角度来看确实不会对人产生影响,但是折射出来的是一个IT人对自身的定位和对职业是否有足够的热情。

有热情的IT人不一定会发展得很好,但没有热情的IT人基本都发展不好。

如果你的潜意识中认为自己处于低级职业、低级能力,对自身技术的追求得过且过,不主动学习新兴技术,那又怎么能有更好的职业规划、更高的收入呢?

慢慢地,他们开始变成了没有感情的cv机器,他们认为敲代码没有前途没有出路并拒绝和他人沟通,技术和业务能力停滞不前,对于他们来说码农真的就是吃青春饭的程序员。

程序员和码农有什么不同?从这三个单词就看得出来_第3张图片

02 为什么要做程序员而不是做码农?

举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;

}

程序员和码农有什么不同?从这三个单词就看得出来_第4张图片
程序员更想把技术和业务融合

大多数码农就是软件的主体实现者。同千千万万农民工一样,他们只是软件大厦的缔造者。

也许他们熟悉或者精通几门语言,但是在商业上面并不熟练。

程序员则会希望把自己的创意、技术和业务相结合,创造出更容易被大众所接受的东西,对他们来说,利用技术所创造出来的产品才是重点,技术本身不是重点。

他们渴望把现有的产品做到行业领先,甚至创造新的产品从而改变市场规则。

程序员更注重深度挖掘

和被迫996不同,真正的程序员愿意为了把一个产品研发到最好的效果,心甘情愿地投入大量的精力和时间到公司的产品上面。

他们很乐意接触核心代码,并参与项目结构的设计,由于经验丰富所以具有技术前瞻性,能够未雨绸缪,对市场的变化与业界技术的更新及时做出反应。

他们经常在思索如何能够解耦,用灵动的设计应对突然到来的变更,当掌握某种代码的写法,他们看到的往往是背后深层次的问题,并向专业水准看齐。
在这里插入图片描述

程序员更无太多功利性

程序员的工作生涯中存在一个重要的节点,就是不再傻傻地问:“学习什么语言有前景?”、“我适合什么语言?”、“这个语言以后能赚钱吗?”

而是发散思维,从大局着手,开始考虑什么语言更加适合这个项目。

我知道生活高于理想,但是程序员们,我们需要知道当技术只为你的金钱、利益服务的时候,它就已经不再是技术了,而是一个谋生的工具罢了。

过于功利性地学习一门技术,渐渐地就会失去好奇心与兴趣,所追求的高薪和岗位只会越来越远。

一个真正的程序员并不需要什么语言都精通,但是他一定愿意从技术的角度与他人讨论一门语言、一个系统,当他保持学习技术的初衷甚至带一些自得其乐的精神,反而更容易得到别人所难以企及的东西。

程序员更加“叛逆”

一个“叛逆”的程序员,他愿意聆听你的想法但绝不会盲从,他会询问What和Why,而不仅仅只停留在How上面。

当程序员知道你的想法,他或许会开始和团队成员讨论,或许提出另一种不同的解决方案,从本质上节省公司的时间和资源。

Programmer能更快更高效地完成任务,他们抵制自己像流水线工人一样仅仅为了加班而加班,并能常常坚持自己的意见,对根据手机壳颜色改变app颜色这种不合理需求说不。所以产品经理和老板会感觉他们在挑战权威,有点叛逆。
程序员和码农有什么不同?从这三个单词就看得出来_第5张图片

软件的构建者是Programmer而不是Coder。如果你是一匹狼,而你有感受不到团队的认同感,那你不妨换一换环境,狼只有在狼群中才能得到自身的认同感,可能没有令他人羡慕的安稳,但是却拥有强大的自信、力量、尊严。

03 如何避免成为一个低级的码农?

1.不去不重视开发的公司

有一句话“选择比努力更重要”。每个公司的情况都不一样,有的公司不重视开发团队,或者要求开发者按照已有的既定模式工作,程序员们不需要什么创新点也不需要解决难题,跟着框架走就可以把项目完成。
程序员和码农有什么不同?从这三个单词就看得出来_第6张图片

在这种团队氛围中我们很难再强迫自己保持学习的驱动力,所以尽量避免去不重视开发团队的公司。

2.和热爱技术的人一起混

正所谓“近朱者赤近墨者黑”,如果你身边的人都是仅仅满足于工作内容,把奋斗挂在嘴边却又不作出任何实际行动的,不仅他们很难在这个行业中走远,而且你也会被带偏从而原地踏步。

所以切记和热爱技术的人一起混,通过关注他们来获取新技术,并通过他们激励自己。

3.主动承担一些大项目

如果你有机会在工作中参与一些大型项目自然是好的,没有比工作经验更宝贵的东西了。然而不是每个人都有资格去参与,所以如果你有时间的话一定要试着去开源社区参与大型项目,你甚至都不需要把它整个做完。只是在其中解决一些接口、编译器的问题就能让你学会很多东西了。

加油,奥利给!
程序员和码农有什么不同?从这三个单词就看得出来_第7张图片

开源社区网站放在这里了,大家有空可以上去看看:

http://www.gitee.com

http://www.gitee.com

4.关注行业动态

抓住行业动态是很重要的,对于70后来说,房地产是一个风口。那个年代的房价便宜,而中国的房地产发展突飞猛进,只要是进入房地产公司,或者说和房地产生意沾上边的,现在都富得流油。

对于80后来说,炒股是一个风口。1990年至1991年间,上海证券交易所和深圳证券交易所先后成立,上证A股从96点攀升至现在的2800点…其中的利润不言而喻。

对90后来说,最火的风口莫过于电商与编程,未来几年中,大数据、算法、AI都在向你招手,当你的技术已经成熟,做风口上的猪有何不可?
程序员和码农有什么不同?从这三个单词就看得出来_第8张图片

简言之,码农写的是代码,程序员写的是系统。工具正在替代人类的体力活,而“大脑思考”是最难被替代的“体力活”,一个好的程序员,不光只考虑怎么用代码实现功能,而要考虑整体、模块之间关系以及效率等问题。

只有通过这样逐步地积累经验和长时间锤炼,知识体系才能构建完备和丰富,才能避免沦落为码农,从而更好地做时代的弄潮儿。

最后

从Coder到Programmer再到Software Engineer,这不仅仅是三个单词,更是做编程的三种阶段。

在这个过程中我们要经历枯燥、挫折、迷茫,正是因为如此,所以我们才需要更多的创新与创意来与之抗衡。

无论我们正在经历哪一个阶段,请一定记住我们曾怀着好奇、尊重、热情,敲下的第一个程序:“Hello,World!”

那是所有程序员的初心:改变世界。

你可能感兴趣的:(杂集)