即使别人是码农,你却不该是

好几天前,在微信里,有个童鞋给我留了这么一段话:

「程序君,昨日知乎日报上出现的那篇《为啥中国的程序员都被称为码农》(以下简称「码农」),看完实在心酸,作为一名还在大学校园即将走向“码农”大军的愣头青,想请教您,你对那篇文章有啥看法?上面的说法属实吗?中国程序员的现状大体是怎样?麻烦指点」

我大概看了一下那篇文章,说的有些道理。但程序君认为:别人是不是码农与你无关,你不该成为那篇文章作者眼中的码农。作者说码农一词强调程序员「地位低下、枯燥和劳累」。作为一个程序员,我也来随便说说。

收入和地位

一般而言,程序员的收入水平不低。我没有具体的数据,但在一线城市,程序员的平均收入应该都能达到该市的中上水平 —— 我猜top 30%左右。2012年,我们在校园招聘的时候,很多面试后非常心仪的同学(清华,北大,中科院等)最终都拿着十几到二十万的薪资去了B,T等公司,有一个我们特别中意的iOS工程师,被我们追了很久,但后来最终还是被某著名游戏公司招安,拿了二十好几万的薪水 —— 这可是程序君工作了好几年后才能拿到的package啊。

所以你说程序员的收入低么?为什么你的收入会低?为什么你怕你未来的收入会低?

程序君有个朋友,也是途客圈的前员工,本科来实习前已经有很多独立的项目经验,掌握了python/django和iOS的开发能力。他聪明好学,上手能力非常快,稍加指点就能从事重要功能的开发,勤奋程度又不输于程序君,所以进步神速。后来途客圈的很多核心功能都交由他来负责,某些功能程序君都自认为无法做得比他好。一年半后他从途客圈「毕业」时,已经是各大公司争相想招致麾下的「面霸」,同时拿到了好几份offer,最终去了某搜索公司,现在前途一片光明。

我想这是一个很有借鉴意义的例子,尤其对于在校学生。就像之前的『软件开发升级打怪之路』所讲的那样,我们身边有那么多很有意思的问题可以通过软件来解决,你愿意放弃一部分打dota的时间和精力去解决么?你愿意在解决的过程中排除万难,啃下一个个硬骨头么?

如果你在学生时代就有很多拿得出手的项目,那么在现在互联网热火朝天,人才缺口很大的时代,找一份薪水不低的工作还是难事么?

程序员可能是世界上唯一一份不用太靠学历,不用太靠爹娘,甚至都不用太靠熬日子出头的工种。有人杜撰了这么个故事:

说Python之父Guido van Rossum有天跑去google面试,说了三个词:”I wrote python”,就被录用了。

当然像Guido这样的大牛犯不着主动去找工作的,就像球场上的超级明星,给猎头打个电话,说我想挪个窝了,工作机会就会像雪片一样飞来。这个故事虽为杜撰,但不失一个很好的例子说明程序员「不靠天,不靠地,就靠自己一双手」的本质。你的薪水取决于你能做出什么来。

至于地位,我觉得除了权贵阶层,其他人的地位都差不多。如果不做公务员,没事别老琢磨地位,那玩意说来就来,说走就走。我倒觉得程序员应该多提高自己的品味 —— 至少多学学打扮自己,别拿着中产的收入过得像无产阶级。

另外,建议妹子们也多关注关注程序员这个群体 —— 毕竟能够改变世界的几类人中,程序员算是最好接近,在比较年轻的时候就能看出潜力,也最好玩弄于股掌中的。^_^

工作枯燥

工作枯燥这事真心和你自己的感受有关。首先不是所有人都适合做程序员的,如果你换了不少团队或公司,做什么都觉得枯燥,自己又没兴趣做pet project,那你要好好考虑下自己是否适合这条路。否则走下去,就真成了「码农」一文中的码农了。

有人曾经给我留言说自己不想做业务相关的事,没意思,想做「真正的程序员」做的事情。拜托,我们做的是产品,哪个产品不是和业务相关的呢?脱离了业务的软件,要么是纯粹个人爱好,要么只能在象牙塔里生存。

有人说工作特么没劲,每天干的都是琐碎边缘的活儿,枯燥死了。好吧,你以为程序君做得总是高大上的事情么?程序君最近两周干的活也琐碎得要命,其中一个任务类似于「从linux kernel的源代码里,把所有.c引用的.h文件摘一摘,只留下真正有用的(但系统还能正常编译运行)」。

工作中这样的活不少,枯燥是有点枯燥,遇到了与其怨天尤人,不如想办法快点将它完成。程序君花了大半天时间,在走了很多弯路写了两个程序后,终于找到一个巧妙的办法,仅仅写了五十多行python代码就将其完成。效果从最初的方案减少了25%的.h文件一直到减少了95%的.h文件。

我比较不理解有程序员说自己总不得不做重复劳动,所以感觉工作异常枯燥。想想「程序员」这顶帽子带在头上意味着什么?它意味着全世界任何群体都有理由说自己的劳动是重复劳动,唯独程序员这个群体不能。为何?程序员坚守的信条是DRY(Don’t Repeat Yourself),一件事当你发现你需要重复第二次时,就要考虑将其自动化。做不到这一点的请努力,因为这决定了你的效率和效能。

还举我自己的例子吧。前些日子我要测试几个开发环境,流程大概是下载代码,编译,运行UT。因为开发环境有点问题,所以在下载完代码后我需要对代码打个patch。这活第一遍我是手工做的,为了验证整个流程的正确性,调整patch等等。第二遍以后我就写了个脚本将其自动化。虽然在我写这个脚本的时间里,我完全可以对所有的开发环境都一一验证,但脚本化的好处是,我可以让别人用这个脚本也进行独立验证,我也可以在今后几天的工作中反复使用。

枯燥是你看待任务的主观情绪。很多看起来外表光鲜的互联网公司或者软件公司,真正分到你手上的任务就不见得光鲜靓丽。大数据?那是对外美好的商业表述。你真正做的事情也许是对海量日志进行或手动或半自动分析,枯燥不?操作系统?好吧,你去了以后发现主要做的是本地化,枯燥不?虚拟化?好吧,那里很大的团队在做驱动开发,枯燥不?

没那么多枯燥。软件就是一个个实现起来非常枯燥的功能有机地组合在一起,为用户(客户)提供价值。无法认清这一点,总认为自己干的就是最枯燥的,那你只能继续枯燥下去,也只能成为「码农」作者眼中的码农。

辛苦劳累

辛苦劳累倒是真的。不过要看你怎么个辛苦法。

如果你在一家各种限制你自由发挥,还以你工作时长为工作态度和工作能力的评定标准,那么,除非你有其它想法,否则应该选择离开。记得我毕业后工作的第一家公司,有天晚上吃饭,老板问我对team里两个女孩有什么评价,我说她们工作得挺好,合作愉快啊(潜台词是男女搭配,干活不累^_^)。老板努了努嘴,说:可她们一下班就回家,工作态度不积极啊。我听着不是滋味,心里就萌生了离开的念头。

程序员的工作绝对不应该用工作时间,是否加班来衡量。如果你的老板给你的评定是「该员工工作积极努力,主动加班,blablabla」,你还愿意这么呆着,那你就别抱怨辛苦劳累。

不过现状的确是是很多程序员都在加班,包括我在内。

有些人加班是真忙。但其实有很多行业比程序员忙得多,比如四大所在的会计(审计)行业,比如投行,咨询。

也有些人加班是刷存在感。

但更多的人加班是为了有一个清静的环境,能做点什么。

要说辛苦劳累,我觉得一个很重要的原因是:这个工种需要你不断更新夯实自己的技能。

如果被迫接受,那身心俱疲;如果主动出击,身体累了点,心灵上的成就感还是不小的。

http://blog.sae.sina.com.cn/archives/3548

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
应用背景为变电站电力巡检,基于YOLO v4算法模型对常见电力巡检目标进行检测,并充分利用Ascend310提供的DVPP等硬件支持能力来完成流媒体的传输、处理等任务,并对系统性能做出一定的优化。.zip深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值