糟糕程序员or优秀程序员 ,我们如何来区分?

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

软件蚕食一切,未来属于程序员。所以人人都想当程序员。但是并不是每个人都能当好程序员。在你做出决定前还是先看看自己能不能当好程序员吧。

要记住的是,编程不是什么精英才能干的事情。

这个行业永远都缺人。所以除非你一点都不喜欢编程,或者也没有准备好看在钱的份上忍住这种不喜欢,否则都可以来编程。

如果纯以编码能力来看,可分为五类:

1. 拷贝型

拷贝型选手就是传说中的“代码拷贝员”了,他们对实现功能几乎没有思路,所作的事情就是从网上或是之前其他团队成员写的代码中拷贝出片段,然后放到项目中,如果运行项目出现了期望结果,则表示任务完成。这类人只会改代码,却不会写代码。他们大多对编程毫无兴趣,只是希望以此糊口而已。

2. 新手型

当产品有功能需求时,由于经验有限,程序员并不完全知道要如何实现这个功能,需要通过学习、寻找资料等方式来解决问题。这种情况下的编码过程,程序员的主要目标是“完成功能”,那么很难有多余的心思去考虑边界条件、性能、可读性、可扩展性、编码规范等问题,因此代码bug可能较多,稳定性不高,常常会发生开发花费1个月,改bug却要改上好几个月的事情。

3. 学习型

这类程序员对所在领域的语言已经比较了解,对于一般功能可以有较为清晰的实现思路,给出需求时可以通过自己的思路来实现,并且会一定程度上考虑边界条件和性能问题。但仅此而已,他们对可读性和可扩展性考虑很少,也没有项目级别的考虑,主要是希望通过实现代码来练手或是学习。

4. 实现型

这类程序员一般有较为丰富的经验,由于写得太多,因此不再追求“创造代码”来进行学习,同时对所在领域可能涉及的很多第三方框架或是工具都比较熟悉,当接受到产品需求时,对功能实现方案已经了然于胸,因此他们可以快速的实现需求,并且对边界、性能都有一定程度的考虑。

优秀程序员的几个表现:

1、先进行实验是他们的本能反应

编译器和运行环境通常能比人更快地解释一个问题。一个优秀的程序猿在拿着问题去向别人寻求帮助之前,会自己试试看并判断方法是否有用,而不是直接找一个高级程序员问“我这么做有用吗?”。

2、对待代码和设计不要情绪化

代码就像纸巾:它有用你就用,没用了就扔掉。几乎我们所有人都认为代码复用( code-reuse )很重要,尽管确实如此,但是这也不意味着要像养孩子那样去对待代码。代码没有感觉也不会在乎,它们会像法兰克斯坦( Frankenstein )怪物那样攻击你。代码只是一堆字节,是一种责任( liability )。

3、对编程有激情

很多程序员干这一行只是为了挣钱,如果有更好的职业,他们会毫不犹豫的辞掉程序员的工作。而优秀的程序员热爱编程,喜欢钻研代码中的问题,他们感到能指挥电脑来帮助人们和自己解决现实生活中的问题是一种神奇的能力。当遇到问题无法解决时,他们会茶不思、饭不想,无法入睡。

4、君子善假于物

优秀的程序员知道如何能更高效的完成任务,如何更能有效的解决问题。当遇到问题时,不钻牛角尖,善于利用外部工具解决自己的问题,特别是能熟练应用搜索引擎。初级的程序员只会使用百度和百度知道搜索问题,而高级的程序员/优秀程序员使用谷歌和Stack Overflow或者MSDN forums这类网站寻找更优秀的答案。

5、不断学习

我们生活在一个有趣的时代。随着软件开发逐渐遍布全球各地,你会发现有很多人都可以干你的工作。所以你需要不断学习以保持竞争力。否则,你就会落伍,停滞不前,直到有一天,这份工作不再需要你,或外包给一些更廉价的劳动力。

那么我们能做些什么?有些雇主很慷慨,会提供培训以拓宽你的技能。也有的人会说我没时间或者没这个资金去接受任何培训。所以,关键是要摆正心态,学习是对自己的负责。

6、不要害怕破坏东西

每个具备行业经验的程序员肯定参与过代码库岌岌可危的项目。系统很糟糕,并且改变这边总是会破坏另一边不相关的功能。每次添加模块,程序员只能想着尽可能少地改变代码,每次发布都胆战心惊。这座软件的摩天大楼随时有坍塌的可能。之所以改动代码会如此伤脑筋是因为系统太糟糕了。但是即使你知道系统出了问题,却又因为投鼠忌器,而不得不听之任之。

要成为优秀的程序员(geek),都是自己一步一步努力的结果,从不吹嘘自己多么多么能干,多么多么 NB,他们很低调,甚至有时候有点闷。请谨记:

素质高:他们都有较高的的思想道德素质,说话谈吐都很舒服,不带脏话,虽然有点屌丝;

逻辑思维:理工科的男生思维都比较活跃,清晰;写代码之前都理清实现的原理再下笔;话说我们这还有个清华的女程序员,做事超级认真,职业素养非常高,程序都是一次性通过很佩服;

注重细节:代码缩进,变量命名,标点符号都需要做到规范,便于后期维护以及改版等等;

注重安全开发:程序员开发的代码不出现 bug 肯定是不可能的,除了修复 bug,一定要注意安全技术;

效率:不做无用功,碰到不能解决的问题,自己解决,不能解决就主动问,汲取教训,收获经验;

耐心:需求改变或者程序错误都需要静下心来不停的调试错误以及修改;就算有时候做自己不喜欢的事情,你也要坚持,也许会的达到意想不到的收获

基于Java基础-面向对象实现植物大战僵尸简易版 基于Java基础-面向对象实现植物大战僵尸简易版前言游戏设计游戏对象游戏内容游戏优化放置植物的优化移除植物的优化游戏可玩性的优化添加游戏背景音乐后续优化源码分享 前言 从零开始学习的Java的第一个月,在面向对象(OOP)的学习中,跟着讲师完成了飞机大战的游戏编码。第二个月开始接触API,心血来潮便结合API中的集合、多线程开始植物大战僵尸的编码,从游戏模式的设计到游戏内容的实现大约花费2个礼拜的... 阅读详情

相关推荐

百万年薪程序员的7点能力

程序员这个行业,是一个区隔度特别高的行业。不少人短短几年就可以成长为高级工程师、资深架构师、首席架构师,而另外一部分人很可能工作10年还是初中级工程师。 程序员行业还有一个特点,优秀程序员的产出是普通程序员的好多倍,甚至是10倍!这是因为编程不是一门「线性科学」,而是一门「非线性科学」。 「线性科学」,比如跑步的速度就是,世界冠军的速度也不可能是普通人的10倍。「非线性科学」是指很多种因素交汇在一...

编程与实战的博客 560

小菜鸟变身Oracle大神日记

标题表达对自己的期望,虽然现在是菜鸟 小菜鸟变身Oracle大神日记 第一天 Oracle用户的创建 -- Create the user create user student -- 用户名 identified by "123456" --密码 default tablespace USERS --表空间名 temporary tablespace temp -- 临时表空间 profile DEFAULT --数据文件 account unlock; --账户是否解锁 上面的语句可

cat_and_dog_的博客 1383

经典烧脑算法逻辑题--高楼扔鸡蛋:最少次数测出鸡蛋摔碎临界点。

如果在第2层没碎,换到第3层扔.......如果第59层没碎,换到第60层扔;有2个鸡蛋,从100层楼上往下扔,以此来测试鸡蛋的硬度。比如鸡蛋在第9层没有摔碎,在第10层摔碎了,那么鸡蛋不会摔碎的临界点就是9层。因此,我们尝试每10层扔一次,第一次从10层扔,第二次从20层扔,第三次从30层......一直扔到100层。如果第一枚鸡蛋,在50层碎了,第二枚鸡蛋,就从第1层开始扔,一层一层增长,一直扔到第49层。如果第一枚鸡蛋在50层没碎了,则继续使用二分法,在剩余楼层的一半(75层)往下扔。

借雨醉东风的博客 1769

unity 主线程调用_【求技术大神】绕过Mono机制插入U3D主线程

该楼层疑似违规已被系统折叠隐藏此楼查看此楼贴吧发代码真够作死的。。。using System;using System.Collections.Generic;using System.Linq;using System.Text;using Mono.Cecil;using Mono.Cecil.Cil;using Mono.Collections;using UnityEngine;publ...

weixin_39794130的博客 1155

***学习笔记--基础篇--sql注入(数字型)

环境:dvwa 1.7数据库:mysql dvwa的安全等级:medium一、分析和查找注入点(1)知识点回顾如果上一篇有好好读过的同学应该知道,我们上一篇遇到的字符型注入。也即是通过Get或者Post方式传进去的数据被单引号或者双引号包裹住。如果我们想要注入自己的payload(有效载荷)的话,则我们必须先闭合前面的单引号或者双引号,否则我们的数据始终会被...

weixin_34364071的博客 714

糟糕程序员优秀程序员的区别?

软件蚕食一切,未来属于程序员。所以人人都想当程序员。但是并不是每个人都能当好程序员。在你做出决定前还是先看看自己能不能当好程序员吧。要记住的是,编程不是什么精英才能干的事情。这个行业永远都缺人。所以除非你一点都不喜欢编程,或者也没有准备好看在钱的份上忍住这种不喜欢,否则都可以来编程优秀程序员的几个表现:1、先进行实验是他们的本能反应编译器和运行环境通常能比人更快地解释一个问题。一个优秀的程序猿在

qq_41077703的博客 375

优秀程序员糟糕程序员的差异有哪些

有人说,在软件开发中,优秀程序员糟糕程序员的工作产出高100倍。虽然有点夸张,但实际上,后者的工作成果可能是负向的,还会导致项目会变得更加困难,代码变得更加晦涩,难以维护,开发周期延长,各种莫名其妙改来改去的bug一再出现,而且这种局面还会蔓延扩散,连那些本来还好的代码模块也逐渐腐坏变烂,最后项目难以为继,以失败告终。 一、糟糕程序员会有哪些表现 1.无法对代码进行推理 对代码进行推理意味着能跟随代码的执行路径(“在脑子里运行程序”),同时清楚地知道代码执行的目标,但明显不少程序员并不能直接进行

Gemcoder的博客 513

一个优秀程序员的几个表现

软件蚕食一切,未来属于程序员。所以人人都想当程序员。但是并不是每个人都能当好程序员。在你做出决定前还是先看看自己能不能当好程序员吧。 要记住的是,编程不是什么精英才能干的事情。 这个行业永远都缺人。所以除非你一点都不喜欢编程,或者也没有准备好看在钱的份上忍住这种不喜欢,否则都可以来编程。 “   1、先进行实验是他们的本能反应 编

abc88297156的博客 2002

糟糕程序员优秀程序员的区别

此外,虽然有很多语言都跟随同一个主流编程模型(如面向对象的编程),但它们都只介绍自己的改进,例如递推式构造列表( list comprehensions )、泛型( generics )、鸭式分类( duck-typing )等等。这么做的目的是,让你做到不再需要调试器就能在脑子里跟随代码的流程,而且有足够的耐心去思考代码正在对整个程序的状态做什么。它不仅可以跟踪解决方案中的每个文件,存储整个历史,还可以区分不同的版本到分支,知道什么时间是谁改变了什么(并且如果提交的信息足够详细,还可以知道原因)。

2301_78145678的博客 108

良好的程序员优秀程序员究竟有何差异?

全文共3196字,预计学习时长10分钟 来源:Pexels 如果写代码是一门科学,那么所有开发人员的表现几乎没有区别。 但事实并非如此。 如同一门艺术,在朝着同一结果努力时,两个开发人员不会有同样的思维或认知。尽管一些人很难达到想要的结果,但少数人却能水到渠成,就好像每当他们开始写代码或者解决问题时,就忽然顿悟了。 软件工程专家史蒂芬·麦康奈尔(Steve Mc...

读芯术的博客 1506

花一辈子时间成为一个优秀的(和快乐的)程序员

虽然与设置项目维度的过程相去甚远,但随着项目的进展,程序员需要意识到项目的铁三角,尤其是在习惯性地出现问题的情况下。(坏的)示例的经验教训:编写人类阅读的代码能;人们的看法是,软件架构师以纯粹的技术实力领导一个团队或更大的组织,以正确的方式设计软件,选择正确的技术工具,等等。如果你面试年轻的程序员的入门级工作,问他们想做什么,你会发现他们想成为架构领导者,用数以亿计的软件开发经验确定整个软件组织的方向。如果你选择两个平等的程序员,并给一个好的导师,那么被指导的程序员会成长,而没有辅导的程序员可能会挣扎。

bjcyck的博客 266

程序员好坏的区别(转)

程序员好坏的区别,让你明白薪资差异后面不谋而合的秘密。 菜根谭2018-03-27 21:54:27 软件蚕食一切,未来属于程序员。所以人人都想当程序员。但是并不是每个人都能当好程序员。在你做出决定前还是先看看自己能不能当好程序员吧。 优秀程序员的几个表现: 1、先进行实验是他们的本能反应 编译器和运行环境通常能比人更快地解释一个问题。一个优秀的程序猿在拿着问题去向别人寻求帮助...

weixin_30725467的博客 121

高效程序员的七个习惯

软件工程师花费大量时间通过练习leet code问题和完善简历来获得更好的面试通过可能。一旦他们最终被谷歌、亚马逊或其他公司录用,他们可能会发现:过去用来得到这份工作的技能与他们日常工作中需要的技能并不匹配。 我们的团队受到 TechLead 创建的高效程序员七项技能的启发。我们想提供我们自己对这个话题的看法。以下是我们总结的高效程序员的七项技能。 1. 学习如何阅读别人的代码 除了你,每个人写...

程序猿DD 2万+

糟糕程序员面试

“谷歌式”面试真心是让人又爱又恨,它糟糕透了:好的应聘者落选,坏的应聘者背背答案就能通过,呵呵。这是真的。但是,这也是真的:所有的面试过程都很糟糕。以往的经验论点:“我们...

哲洛不闹的专栏 167
上一篇: C/C++中的数组长度我们如何来获取?
下一篇: C/C++代码规范!我们需要注意哪些?
C语言编程俱乐部
博客等级 码龄7年 3219粉丝 1256原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值