有很多人迷失在从Coder到Software Engineer转变的路上,最大的问题不是在学习和技术上,现在各种方法、理论、总结都有很多,我认为影响这个转变过程的在于能否做到对技术有热情。
“码农”和“程序员”,从称呼的角度来看确实不会对人产生影响,但是折射出来的是一个IT人对自身的定位和对职业是否有足够的热情。
有热情的IT人不一定会发展得很好,但没有热情的IT人基本都发展不好。
如果你的潜意识中认为自己处于低级职业、低级能力,对自身技术的追求得过且过,不主动学习新兴技术,那又怎么能有更好的职业规划、更高的收入呢?
慢慢地,他们开始变成了没有感情的cv机器,他们认为敲代码没有前途没有出路并拒绝和他人沟通,技术和业务能力停滞不前,对于他们来说码农真的就是吃青春饭的程序员。
02
为什么要做程序员而不是做码农?
举3个不太成熟的例子:
求2的32次方:
程序员:
System.out.println(1L<<32);
码农:
System.out.println(2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2...)
类属性定义:
码农:
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颜色这种不合理需求说不。所以产品经理和老板会感觉他们在挑战权威,有点叛逆。