高级程序员我想做一个高级程序员,需要学什么.全面的
高级程序员  时间:2021-08-22  阅读:(
)
 
 
成为高级程序员应具备什么?
作一个真正合格的高级程序员,或者说就是可以真正合格完成一些代码工作的程序员,应该具有的素质。
 
1:团队精神和协作能力 o(∩_∩)o
把它作为基本素质,并不是不重要,恰恰相反,这是程序员应该具备的最基本的,也是最重要的安身立命之本。
把高水平程序员说成独行侠的都是在呓语,任何个人的力量都是有限的,即便如linus这样的天才,也需要通过组成强大的团队来创造奇迹,那些遍布全球的为linux写核心的高手们,没有协作精神是不可想象的。
独行侠可以作一些赚钱的小软件发点小财,但是一旦进入一些大系统的研发团队,进入商业化和产品化的开发任务,缺乏这种素质的人就完全不合格了。
 
2:文档习惯 
说高水平程序员从来不写文档的肯定是乳臭未干的毛孩子,良好的文档是正规研发流程中非常重要的环节,作为代码程序员,30%的工作时间写技术文档是很正常的,而作为高级程序员和系统分析员,这个比例还要高很多。
缺乏文档,一个软件系统就缺乏生命力,在未来的查错,升级以及模块的复用时就都会遇到极大的麻烦。
 
3:规范化,标准化的代码编写习惯 
作为一些外国知名软件公司的规矩,代码的变量命名,代码内注释格式,甚至嵌套中行缩进的长度和函数间的空行数字都有明确规定,良好的编写习惯,不但有助于代码的移植和纠错,也有助于不同技术人员之间的协作。
 
有些coding fans叫嚣高水平程序员写的代码旁人从来看不懂,这种叫嚣只能证明他们自己压根不配自称程序员。
代码具有良好的可读性,是程序员基本的素质需求。
 
再看看整个linux的搭建,没有规范化和标准化的代码习惯,全球的研发协作是绝对不可想象的。
 
4:需求理解能力 
程序员需要理解一个模块的需求,很多小朋友写程序往往只关注一个功能需求,他们把性能指标全部归结到硬件,操作系统和开发环境上,而忽视了本身代码的性能考虑,有人曾经放言说写一个广告交换程序很简单,这种人从来不知道在百万甚至千万数量级的访问情况下的性能指标是如何实现的,对于这样的程序员,你给他深蓝那套系统,他也做不出太极链的并访能力。
性能需求指标中,稳定性,并访支撑能力以及安全性都很重要,作为程序员需要评估该模块在系统运营中所处的环境,将要受到的负荷压力以及各种潜在的危险和恶意攻击的可能性。
就这一点,一个成熟的程序员至少需要2到3年的项目研发和跟踪经验才有可能有心得。
 
5:复用性,模块化思维能力 
经常可以听到一些程序员有这样的抱怨,写了几年程序,变成了熟练工,每天都是重复写一些没有任何新意的代码,这其实是中国软件人才最大浪费的地方,一些重复性工作变成了熟练程序员的主要工作,而这些,其实是完全可以避免的。
 
复用性设计,模块化思维就是要程序员在完成任何一个功能模块或函数的时候,要多想一些,不要局限在完成当前任务的简单思路上,想想看该模块是否可以脱离这个系统存在,是否可以通过简单的修改参数的方式在其他系统和应用环境下直接引用,这样就能极大避免重复性的开发工作,如果一个软件研发单位和工作组能够在每一次研发过程中都考虑到这些问题,那么程序员就不会在重复性的工作中耽误太多时间,就会有更多时间和精力投入到创新的代码工作中去。
 
一些好的程序模块代码,即便是70年代写成的,拿到现在放到一些系统里面作为功能模块都能适合的很好,而现在我看到的是,很多小公司软件一升级或改进就动辄全部代码重写,大部分重复性工作无谓的浪费了时间和精力 !!低级程序员和高级程序员的区别
低级程序员认为自己与高级程序员的区别, 主要是高级程序员任何功能都能编码实现, 编码速度快, 代码无 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% 准确的, 例如, 如果对方系统误报呢? 但其它的异常情况可以根据实际情况来忽略. 如果你发现这段代码还有重要的逻辑上缺陷, 欢迎告诉我.
记住, 低级程序员和高级程序员的区别在于逻辑和抽象.“高级”程序员应具备哪些素质
展开全部
作一个真正合格的程序员,应该具有的素质。
 
1:团队精神和协作能力 
团队精神和写作能力是作为一个程序员应具备的最基本的素质。
软件工程已经提了将近三十年了,当今的软件开发已经不是编程了,而是工程。
独行侠可以写一些程序也能赚钱发财,但是进入研发团队,从事商业化和产品化的开发任务,就必须具备这种素质。
可以毫不夸张的说这种素质是一个程序员乃至一个团队的安身立命之本。
 
2:文档习惯 
文档是一个软件系统的生命力。
一个公司的产品再好、技术含量再高,如果没有缺乏文档,知识就没有继承,公司还是一个来料加工的软件作坊。
作为代码程序员,必须将30%的工作时间写用于技术文档。
没有文档的程序员势必会被淘汰。
 
3:规范化的代码编写习惯 
知名软件公司的代码的变量命名、注释格式,甚至嵌套中行缩进的长度和函数间的空行数字都有明确规定,良好的编写习惯,不但有助于代码的移植和纠错,也有助于不同技术人员之间的协作。
 一些所谓的高手甚至叫嚣高手写的代码一般人看不懂,我只能说他不是一名合格的程序员。
 
4:需求理解能力 
程序员要能正确理解任务单中描述的需求。
在这里要明确一点,程序员不仅仅要注意到软件的功能需求,还应注意软件的性能需求,要能正确评估自己的模块对整个项目中的影响及潜在的威胁,如果有着两到三年项目经验的熟练程序员对这一点没有体会的话,只能说明他或许是认真工作过,但是没有用心工作。
 
5:模块化思维能力 
作为一个优秀的程序员,他的思想不能在局限当前的工作任务里面,要想想看自己写的模块是否可以脱离当前系统存在,通过简单的封装在其他系统中或其他模块中直接使用。
这样做可以使代码能重复利用,减少重复的劳动,也能是系统结构越趋合理。
模块化思维能力的提高是一个程序员的技术水平提高的一项重要指标。
 
6:测试习惯 
测试是软件工程质量保证的重要环节,但是测试不仅仅是测试工程师的工作,而是每个程序员的一种基本职责。
程序员要认识测试不仅是正常的程序调试,而要是要进行有目的有针对性的异常调用测试,这一点要结合需求理解能力。
 
7:学习和总结的能力 
程序员是很容易被淘汰的职业,所以要善于学习总结。
许多程序员喜欢盲目追求一些编码的小技巧,这样的技术人员无论学了多少语言,代码写起来多熟练,我们只能说他是一名熟练的代码民工,他永远都不会有质的提高。
一个善于学习的程序员会经常总结自己的技术水平,对自己的技术层面要有良好的定位,这样才能有目的地提高自己。
这样才能逐步提高,从程序员升级为软件设计师、系统分析员、项目经理。
 
作为高级程序员,乃至于设计师而言,除了应该具备上述全部素质之外,还需要具备以下素质: 
1、 需求分析能力 
2、 整体框架能力 
3、 流程处理能力 
4、 模块分解能力 
5、 整体项目评估能力 
6、 团队组织管理能力我想做一个高级程序员,需要学什么.全面的
高级程序员?
如果你现在一点都不懂的话应该从最基本的学起.
先学c语言,数据结构,数据库基本的.
c语言是软件入门,如果想了解点硬件的话看看数字逻辑电路,是硬件入门.
学完c语言学c++,java之类的语言就容易学了,然后再学点
如果想系统的学习,可就比较多了.有一些基本的课程,比如离散数学之类的数学课程是计算机专业的基础课,可以了解了解.
下一步学学计算机组织与结构,操作系统,软件工程,UML建模的课程.
至于做b/s结构的程序,asp,php之类的比较容易学,很短时间就可以学会.
最后如果想提升的话学学软件项目管理,J2EE架构等课程.
一时想不起来太多了,就写这些吧 
		  
		  
		      
			  
		  
			  			   
			      
			        
			          
			          DiyVM是一家比较低调的国人主机商,成立于2009年,提供VPS主机和独立服务器租用等产品,其中VPS基于XEN(HVM)架构,数据中心包括香港沙田、美国洛杉矶和日本大阪等,CN2或者直连线路,支持异地备份与自定义镜像,可提供内网IP。本月商家最高提供5折优惠码,优惠后香港沙田CN2线路VPS最低2GB内存套餐每月仅50元起。香港(CN2)VPSCPU:2cores内存:2GB硬盘:50GB/R...
			         
			       
				  
			     
							   
			      
			        
			          
			          一般大厂都是通过首年才有可以享受爆款活动,然后吸引我们注册他们商家达到持续续费和购买的目的。一般只有大厂才能有这样的魄力和能力首年亏本,但是对于一般的公司和个人厂家确实难过,这几年确实看到不少的同类商家难以生存。这里我们可以看到有对应的套餐方案。不过这两个套餐都是100%CPU独享的,不是有某云商家限制CPU的。但是轻量服务器有个不好的就是带宽是较大且流量是限制的额,分别是1GB和1.2TB月流量...
			         
			       
				  
			     
							   
			      
			        
			          
			          RAKsmart怎么样?RAKsmart是一家由华人运营的国外主机商,提供的产品包括独立服务器租用和VPS等,可选数据中心包括美国加州圣何塞、洛杉矶、中国香港、韩国、日本、荷兰等国家和地区数据中心(部分自营),支持使用PayPal、支付宝等付款方式,网站可选中文网页,提供中文客服支持。本月商家继续提供每日限量秒杀服务器月付30.62美元起,除了常规服务器外,商家美国/韩国/日本站群服务器、1-10...
			         
			       
				  
			     
							
			   
			   
高级程序员为你推荐
	string转intJAVA中如何将String类型转为int类型?怎么发邮件怎样发送邮件?移动开发移动应用开发好就业吗网络设备图标怎样把无线网络连接的图标显示出来计算机网络的定义计算机网络的概念校园网络拓扑图大学校园网拓扑图校园网络拓扑图网吧拓扑图和校园网拓扑图一样啊?余额宝收益走势图实图,刚把5万多闲钱放到余额宝了看看能赚多少人工电源网络手机开机显示选择网络是怎么回事?it人物码农是什么意思,码畜、码奴等又是什么意思
网站空间价格 韩国vps俄罗斯美女 个人域名备案 kdata java主机 国外服务器网站 512au 免费ftp站点 域名转向 建立邮箱 789电视 网游服务器 带宽测试 免费主页空间 亿库 服务器操作系统 木马检测 ddos攻击 灵动:鬼影实录 彩虹云点播网页版 更多