问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

低级程序员和高级程序员的区别

发布网友 发布时间:2022-04-23 08:51

我来回答

2个回答

热心网友 时间:2022-05-04 18:24

六点区别:

1、文档能力

“文档是第一生产力”,这一点在程序员的世界是毫无异议的。看看Spring,hibernate,Struts等最流行的开源软件的文档就知道,他们tutorial,他们的getstarted,他们的reference文档写的多么的易懂。

如果要获得更高的报酬,文档是绝对关键的因素。有文档就有沟通,就有交易。搞技术的容易忽视文档的力量,也因为写文档十分困难,更多程序员选择舒适区,习惯写下代码,但正因为如此,妨碍了不少程序员的进阶。

2、解决BUG的效率差别

普通程序员可以利用搜索引擎(百度)寻找答案,经常性找不到好的解决办法,然后更换技术方案!顶级程序员也利用搜索引擎(Google)寻找答案,一般bug都顺利解决(其实跟前期框架选择等关系非常大)。

3、表达能力

表达能力决定了你所做的技术的影响范围,决定了你的影响力,决定你的威信,决定了你的报酬。普通程序员和顶尖程序员的表达能力差别非常大,这主要还是取决于他们格局的不同。良好的沟通能力让你理解产品经理的设计思路,让你更好的展现自己的特长。

4、优雅和美观的抽象能力

普通程序员和顶尖程序员之间的区别在于优雅和美观的抽象能力。好的系统通常是要做到两个方面才合格,其一是好用,其二是好看。但是令人遗憾的是,普通程序员仅仅从实现的角度进行堆砌。顶尖程序员往往能够更进一步,经常会去思考用户在操作这个功能的时候,到底还会做什么事情。

5、面对如何开源社区态度

普通程序员几乎没有在开源社区混,这也导致经常对新技术发展关注度低。而顶尖程序员则是拥抱开源社区。

6、面对功能点

普通程序员:立马开始构思自己如何实现脑海里出来一个方案。

顶尖程序员:发现功能点很普通github上面早已经有非常多的解决方案,着手根据业务选择一个最适合最优的方案。

但是优秀的程序员一开始都是普通程序员,所以加油吧!

热心网友 时间:2022-05-04 19:42

低级程序员认为自己与高级程序员的区别, 主要是高级程序员任何功能都能编码实现, 编码速度快, 代码无 bug. 正如一惯的那样,
低级程序员之所以低级, 正是因为他们勉强能看到(或者根本看不到)事物的表象而看不到本质. 所以, 低级程序员总结出的一切东西,
你都可以大胆的忽略.

所以, 我们来听听高级程序认为自己与低级程序员的区别是什么. 高级程序员之所以高级, 在于他们认识到代码 bug 是不可避免的,
有千万种理由可以导致 bug, 但他们可以在设计和逻辑上保证(追求)滴水不漏, 并用逻辑的百分之百准确性还减少代码 bug. 没错,
严谨的逻辑能力是高级程序员区别于低级程序员的最主要原因.

可以举一个简单常见例子: 网络购票终端的开发. 当然, 比低级程序员还低级的程序员做不出来. 我们先看看低级程序员是怎么做:

order = Db::new_order();
ret = Network::place_order(order);
if(ret == TRUE){
order.finish();
}else{
order.cancel();
}

你看到的没错, 这段代码逻辑清晰, 一般 90% 的情况都能正常工作, 有的甚至能达到 99%, 在某些特定的时间段, 这样的系统 100% 能正常工作(几乎是完美的系统).

你可能发现了问题: 网络是不可靠的, 网络请求可能发出去了, 也可能没发出去; 对方可能收到了, 也可能没收到; 响应可能由对方发出去了, 也可能没发出去; 你可能收到了响应, 也可能没收到.

但是, 低级的程序员会这样解释: 我用的是 TCP 协议, "TCP 是一种可靠的传输协议", 哈! 可笑的照本宣科. 这种低级程序员,
不仅在于他们写出了逻辑上不完备的系统, 而且还恶劣地引经据典来做错误的辩护. 但他们引用的经典是不合时宜的(不能支撑他们的结论).

正确的做法应该是假设上面的每一行代码都可能中断执行, 然后进行相应的对策. 正如狭义上的网络协议其实是广义上的交互协议, 我们可能把 TCP/IP 协议上的许多思想和机制应用到系统间的交互上来.

简单来讲, 可以加上就是重试(超时重传)和对账(请求确认). 所以, 逻辑上更准确的代码应该是这样:
Process_0{
order = Db::new_order();
}
Process_1{
order = Db::find_new_order();
ret = Network::query_order_result(order);
if(ret == NOT_FOUND){
ret = Network::place_order(order);
if(ret == TRUE){
order.finish();
}else{
order.cancel();
}
}
}

Process_0 和 Process_1 是相互独立的处理逻辑.

Process_0 即处理用户交互, 接受订单.
Process_1 请求服务提供商进行对账. 进行采购下单(补单), 更新订单状态.

上面的代码逻辑实现了重试(超时重传), 对账(请求确认). 但上面的代码在逻辑上还不是 100% 准确的, 例如, 如果对方系统误报呢? 但其它的异常情况可以根据实际情况来忽略. 如果你发现这段代码还有重要的逻辑上缺陷, 欢迎告诉我.

记住, 低级程序员和高级程序员的区别在于逻辑和抽象.
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
Linux系统安装FTP服务器 Linux系统的网络文件共享 建筑的七盏明灯的内容简介 面向对象设计七大原则 简单说 交互设计七大定律 交互设计的“根”——七大定律 交互设计原则和理论2——七大定律 七大设计原则 附近的加油站有哪些 附近的加油站有哪些地方 高级程序设计语言的基本组成成分有哪些? “高级程序设计语言”是什么? 高级程序设计语言的特点是() 电脑出现花屏是什么原因造成的呢? 显示器花屏是什么原因? 为什么电脑会花屏?? 苹果8p怎么同时运行多个应用? 突然出现花屏是什么原因? 电脑开机花屏是什么原因造成的? 苹果8怎么手机分屏 苹果手机怎么一屏两用? 使用WORD文档编辑文字。如何在所选的字下面打点啊 请问怎么在excel字底下打勾,如下表? 怎样在word字体下边画对号图解 在WORD中插入了一张剪贴画,打开了设置图片格式,想把它设置成四周型环绕方式,为什么设置不了啊 在word文档里面打字的时候,如何在字体下方加个小黑点? 插入考生文件夹下的"老人.bmp"剪贴画,环绕方式为"浮于文字上方"如何设 ... 如何做饺子皮(包括面粉、水等材料的用量) word中怎么在文字下打出另一行字 用word怎么将第三张幻灯片的剪贴画动画设置为"基本旋转",水平 大专学历可以报考山东教师资格证吗? 为什么c语言是高级程序 山东省专科生能不能报考教师资格证考试? 山东非师范专科生还能考教师资格证吗? 高级程序设计语言是什么? 什么是高级语言程序? 在山东专科学历可以考初中教师资格证吗 高级程序员考试需要那些条件? 如何成为一名高级程序员? 山东省今年大专学历可以报考初中教师资格证吗 怎么彻底删除智能云输入法和智能头条? 计算机高级程序语言的两种工作方式(解释方式和编译方式)的区别是什么... 我是大专毕业,可以考山东的小学教师资格证吗? 教师资格证专科可以报吗? 山东今年专科大二的学生可以考教师资格证吗? 山东省专科,大一能报名考教师资格证吗?小学教师 oppo手机忘了密码,怎么才能在手机上进行刷机恢复出厂设置啊? 9月8号603188股票上市吗 奔驰e300l摄像头分布 亚邦股份什么时候复牌