A. 程序员做什么运动可以提高自己的身体素质
程序员的工资非常高,但是工资很高,压力也很大,工作时间也比较长,有些程序员在外出的时候要经常带着一个电脑,如果公司里有任何着急的事情,他们随时就可以开始工作,程序员的工作压力也是比较重的,如果长时间守在电脑前,不起来做一些运动的话,对大家的健康不是很好。
B. 程序员如何提高自己的工作效率
程序员如何提高自己的工作效率?程序员要在IT界混出个名堂,也要有高效的工作效率才行。下面我为大家整理了程序员提高工作效率的办法,欢迎大家阅读参考!
程序员如何提高工作效率
1)键盘功底要扎实
敲键盘时要使用标准指法。可能你认为这是程序员的基本功,可是我发现其实很多程序员都做不到这点。看着他们敲代码时那笨拙的指法我就心急。其实炼成标准指法不难,相当年我还是一指禅,打字极慢,痛定思定,在一周内我打字必用标准指法,再别扭也要坚持,一周后就适应了标准指法了。现在不说运指如飞也算是略有小成。练习指法和键盘速度可以给大家推荐一些网站:http://10fastfingers.com/typing-test/english,这个就是练习标准指法的,我可以轻松上60 WPM(每分钟60单词),有个外国同事可以达到130以上,那才叫恐怖。http://typing.io/lessons,专门供程序员练习敲代码的网站,融合了各种括号和标点,难度有点大。
2)要熟悉IDE的各种快捷键及特性
IDE基本上是码农们上班中使用时间最长的软件。首先要选择一个趁手的IDE,俗话说,工玉成其事,必先利其器嘛。如果是C#阵营的那肯定是最新版的Vistual Studio了,如果是java阵营的话当然是Intellij了(eclipse作为开源IDE,真心比不过Intellij)。我现在使用Intellij可以在95%的情况下不用鼠标,全键盘完成开发过程中的大部分操作。我觉得没有什么常用快捷键、不常用快捷键之分,只要你知道的快捷键就要拿来用。
尤其是各种重构快捷键必须要熟练掌握,当我看到码农修改变量名时不用重构快捷键,而是自己手动在引用的地方一个个改,然后编译查错时,真为他们捉急。还有各种inline,introce的快捷键真是好用到爆,掌握了这些快捷键可以说对代码进行任何重构都不费除灰之力,我们的注意力也从手动修改代码转移到如何发现坏味道了。Vistual Studio中推荐安装ReSharper,其开发公司与Intellij开发公司是同一家。除了重构快捷键,还要掌握一些IDE的特性,比如调试时可以插入指定条件来命中断点等,这些就要平时的积累和学习,另外还有好奇心。我敢说你现在挨个看IDE菜单,至少有30%功能你从没用过或不知道是干什么用的,其实里面有些功能是非常实用的,只是你没尝试而已。
3)至少熟练掌握一种shell终端
作为程序员老用图形化界面咋行,要用那种古老的命令行界面才能显示出你的高深嘛!鼠标点界面谁都会,而命令行界面不是谁都能驾驭。有些功能在命令行下要比图形界面下高效N倍。比如我使用git提交文件时都是在命令行下查看哪些文件被修改了,哪些是新添加的,修改的部分是哪些等。
使用图形化界面要用鼠标点来点去,效率实在太低。linux系统下的终端太多了,就不推荐了。Mac系统下推荐使用iTerm2这个壳,其比MAC自带的terminal多了不少实用的特性,也能方便切换自己喜欢的配色。Windows下当然首推Windows Power Shell了。Windows Power Shell本身集成了常用的实用工具,并且与.net framework无缝结合,这点是那些在Windows上的类Linux模拟器(比如Cygwin)是远远比不了的。
4)具有一定编写shell脚本的功底
光会用现有的`脚本还不行,还要会根据情况编写脚本来实现自己特定的一些目标。比如我使用MAC机上的终端时,经常需要在不同目录间跳来跳去,每次都打一串的cd …..很麻烦,后来我就自己写了一个小工具,可以给指定的目录起别名,想要跳到这个目录只要敲别名即可(参见 http://www.huangbowen.net/blog/2013/02/16/gtshell/)。
还有我在Windows系统上工作时,也经常编写一些Power Shell脚本,比如一个命令就启动指定的FTP服务器,一些小命令用来实现快速在不同项目源码间切换并执行构建命令等。这些命令编写起来都很简单,在提高工作效率方面很好帮助,因为一些常用的费时的操作每天重复N次,让人很厌烦,如果能够使用脚本将其自动化起来,岂不是就把自己给解脱了?
5)多语言编程
在这个世界有太多太多的编程语言,但凡稍微流行的编程语言都有自己独特的优势,而我们要善于利用每种编程语言的特点,而不是整天吵闹那种语言更强大。我自己熟悉C#、java语言,也用JavaScript、Ruby、Python、Groovy做过一些东西,甚至为了理解函数式编程还专门学习了Haskell语言。这些语言都给我带来了实用的效果。比如我用Ruby写了一个插件,可以自动把我主站上的博客同步到博客园中的博客来。
我使用Groovy给我的Java代码写单元和集成测试,比使用Java语言编写要快很多。我用Python和WebDriver写了一个论坛灌水工具来刷积分。你掌握的语言越多,你的视野就越广,你对编程的理解就会越深入。当然我不赞成盲目的求多,至少你要有2到3门精通的语言,从语言语法、语言运行时、语言特性、语言API等方面都要有深入学习和见解,当你再学习其它语言时也不会浮于表面的了。
6)这是最重要的一点,时刻保持一颗好奇心,一颗坚定不移的提高工作效率的决心
很多人都抱着差不多态度,心想“我虽不是标准指法,敲键盘速度也差不多”,“我IDE快捷键用的不多,也没觉得那里影响到我开发”,“我只会C#一种语言,还不照样干到现在了吗?”之所以有这种想法,是是因为你没有见到真正高效的人。我曾看到某IT界牛人那出神入化的VIM操作,简直已经超越了指哪打哪的境界,已经达到了键随心动的境界。
我也看到某高级程序员使用IDE快捷键三下五除二就把一段丑陋的代码给收拾的服服帖帖。耳濡目染之下让我坚定了这个决心,不做差不多先生。所以平时我和同事一起工作时,就留心他们有哪些方法和工具来提高自己的工作效率。如果他们使用了一些好用的快捷键而我不知道,那我就会记下来下次自己用(快捷键熟练程度上我早已是我们项目组的number one)。
如果看到他们使用了一些好的工具我也会立马回去下载下来自己用。(比如前两天我看到同事使用SuperPutty来连接远程主机,其支持多tab方式,这正是我想要的功能。我回去立马下载下来,抛弃了以前的Putty)这样时间长了,集众人之所长,你自然也成为效率达人了。
C. 程序员接私活比上班也挣得多,是真得吗可以接哪些私活呢
程序员接私活比上班也挣得多,是真得吗?可以接哪些私活呢?程序员接私活已经是很平常的事情了,并且市面上也有很多靠谱的接私活平台。很多程序员,通过做私活承接项目,将自己的程序能力转化为收入。收入比工资高是真的。
开发邦:特点:服务范围明确,it开发项目垂直度高,可以吸引一些需求明确的客户。该平台还致力于利用互联网软件技术为客户提高效率、降低成本、提高效率和优化管理。
袁急送:平台特点:追求高质量的雇主和工程师,汇聚知名互联网公司的技术、设计和产品巨头,通过实际轮班、远程等方式一对一解决创业问题,提高创业效率。
D. 干了两年程序员了,不知道下面的路该怎么走了,请前辈们指点下好吗
我有几个做程序员的朋友,因为我是做职业规划的,之前有朋友也咨询过我类似的问题,答复如下:
1.首先,程序员是非常枯燥的工作,做了大概两年左右都会有倦怠期,这个时候应该问问自己,我还要不要继续做IT类工作。
2.若确认继续做此类工作,那么有两个选择,第一是继续钻研技术,平时多到网络平台找同行交流或学习。第二是转运维类工作,我有两个朋友就是由编程转到了运维。其实还有第三,可以走管理方向,不过这个需要自己多学习管理类技能,同事也要有这方面的兴趣。
作为一名从业多年的程序员,同时也是一名教育工作者,我来回答一下这个问题。
对于从业两年的程序员来说,正处在技术成长期,如果未来想在技术领域走得更远,此时应该注重开发经验的积累,同时应该广泛涉猎各种技术体系,尤其要注重各种新技术的学习,包括大数据、物联网、云计算、区块链、人工智能等技术体系。对于程序员来说,在从业的最初五年,一定要多做“加法”,更多的技术储备能够为岗位升级奠定一个扎实的基础。
对于专注于行业领域的应用级程序员来说,还应该重视行业经验的积累,在产业互联网时代,行业经验对于程序员未来的发展有非常重要的影响。对于大部分基础知识比较薄弱的程序员来说,如果不能在技术研发的道路上走得更远,就应该考虑未来的发展方向,如果具有丰富的行业经验,会在很大程度上拓展自身的选择空间。从当前行业发展趋势来看,程序员可以考虑向产品经理、项目经理、行业信息化专家等方向发展。
对于从业两年的初级程序员来说,如果条件允许的话,还可以考虑通过读研来提升自身的岗位级别,目前有不少初级程序员都会选择考研。按照 历史 经验来看,大部分程序员在考研之后都会获得岗位升级,不少人在读研之后会选择进入互联网大厂发展,薪资待遇也有了一定程度的提升。从这个角度来看,程序员读研也是一个不错的选择。
最后,随着产业互联网的发展,当前程序员应该注重云计算平台、物联网平台和人工智能平台相关技术的学习,未来这些平台将有广阔的发展空间。
两年也就相当于是刚入行的一个程度,那这个程度就是要多努力干活,多学多练,想任何其他的都是白费功夫,因为你没有其他的时间积累,在二至四年的这个时间里,要把自己的工资技术水平提升到你所在的那个城市圈子里面的中上等的水平,然后你要有一个比较谨慎的思维,不要空有一个想法。
那么这个时候你个思想和你这个能力就不匹配了。我们首先要选择考虑的就是北上广深。你现在还可以努力干到35岁左右。另外技术这个行业它分为一个是偏技术型,另外一个是业务驱动型,还有就是属于技术骨干性。偏技术型的话,不建议你选这个,因为不管是程序员也好,前端也好,都是工程师,都是干活的,不搞科研,虽然很多it公司技术部要求很多,但是都是干活的,没有说太深的一些技术要求,基本上就是用于日常的技术啊bug。
另外一个是业务驱动型,也叫业务,就是你要主导需求就是客户你能找到自己的客户,然后还要和前端一起去搞定这些问题,你要有老板的一个思维,自己干的时间长了,那么你就能找到自己的这个路了,不管是你创业还是说去其他的地方去做都对自己非常有好处。
你现在考虑的可能就是说以后怎么发展他这个技术程序员发展的话一般是年龄平均到35岁左右的时候,你就可以通过前期的一些积累,然后铺垫到35岁的时候,你就可以去做其他的行业的,因为你到35岁的时候,不管是去面试或者是带领团队熬夜,很多时候有些东西都跟不上了,所以建议你到那个时候去转行。
你好,作为一个工作4年的同学,我想以个人经历回答下这个问题。对于工作两年的程序员来说,大都是处于技术的快速上升期,应该也接触了挺多的技术面,包括但不限于分布式、数据库、网络、大数据等,并且可能对某个框架或者技术有了自己的深入见解。
对于以后的发展,如果是想往 中间件方向发展 的话,需要掌握分布式原理、网络通信、消息队列、数据库操作、缓存等,大多数中间件都涉及到分布式支持。可以看几个不同类型的中间件的原理与设计实现,比如MQ可以看Rockermq,数据库可以看MySQL,缓存可以看Redis,网络通信库可以看Netty,配置中心可以看Apollo等,注意,每种类型的中间件或者框架重点学习一个即可,因为思想都是相同的,理解了一个之后在学其他的很快就能上手掌握。当然,除了自己的技术学习之外,一个好的平台也是很重要的,不仅仅能够认识一帮志同道合的朋友,还能有实际的业务平台去实现技术的价值,这里推荐阿里的中间件相关岗位,目前中国中间件团队的java水平基本是阿里最高水平了,在这里诞生了很多知名的开源软件。
针对1-5年的程序员关于技术点来说,可以参考芋道源码整理的下面一张图进行查漏补缺:
上面罗列的技术目前我也在学习中,对于技术人来说,知道自己想要什么,要比自己知道怎么要什么更重要。知道自己想要什么,你就会想方设法去实现它。不管怎样,脚踏实地做好自己的工作,学习技术,肯定没错。
说实话我对程序这东西一窍不通,但我知道不管什么事情没有了程序那就乱了,电脑没有程序就死机了,人干事情没有了程序那就没有头绪,我觉得你还是好好干吧,这个行业永远淘汰不了。永远是最需要的东西!
说实话,只是普通的编程圈子不会很大,跳出这个圈子会发现还有很多其他相关的职业。如果在一个小公司,程序员工资虽然偏高,但在运营商务销售其他职务心里多少还是会有些轻视,毕竟现在普通程序员太多了,大部分人做的东西千篇一律,而他们认为工资其实是靠他们的能力赚取的。
如果想在小公司发展,可以深入了解业务,和一些其他职位的主力人员维护好关系,倒时候想创业可以合伙,想转行也会轻松些。
如果想在大公司发展,可以走管理,大公司一般比较看重资历,学历,管理能力。
还有一种走技术路线的,一般只存在于大公司,这种部门在有的公司很闲只是撑个场面,有的是真正能做出实用的东西值得敬佩。
做任何行业都要坚持,兄弟你才做了两年,相当于是刚入门,以后要走的路还会很远。
就现在来说,程序员还属于是高收入行业,工作还比较好找,趁年轻时好好干,多积累一些经验,多做一些大的项目,以后的路会越走越宽。
不太清楚你目前的困惑点在哪里,是学习新技术感觉力不从心了?还是对技术没有兴趣了?还是不想当程序员了?还是对程序员的发展路线迷茫了?不管怎样,干了两年的程序员,对编程这个工作还是有些经验了,也能够解决工作中的一些技术问题,但还处于相对初级的一个水平,毕竟积累不太够。
建议继续做2-3年开发工作,提升编程水平,提升解决问题的能力,逐渐成长为公司的技术骨干。等到那个时候,你的选择会相对多一些,也会理智一些。例如:你在开发过程中,觉得自己更喜欢跟人打交道,想做项目管理,那么,你多做2年开发工作,并不耽误你后面转为项目经理。你可以将接下来的2年作为一个潜伏期,在做好本质工作的同时,注意一定要做好你的工作,你的工作做好了,自然会得到别人的尊重,也会赢得人脉,千万不可以为将来不做开发了,就开始敷衍、不用心,做好当下,再考虑将来的发展方向,是换一个公司,换一个岗位,还是换一个城市?毕竟程序员的待遇还是可以的,多做2、3年,没啥损失。
在迷茫的时候,不要做任何决定,静观其变。
大家好!我是键盘手,
关于这个问题我想说一下我个人的看法,我个人也是吃技术饭的,现在过了三十五岁了,打工已经没有公司要了,也不想和大学生去抢饭碗,去工作人在心不在。以前二十几岁的时候,总认为吃技术饭经验很重要,年龄越大经历越丰富,薪资就越高,而现实是,现在的公司一般不招三十五岁以上的人员,而且有些公司把三十五年以上的员工解聘掉,主要是人过了三十五岁,思想和创新能力、学习能力没有二十几岁时候强,所以对于技术员来说就是一道坎,很多人到了这个岁数都不敢随意跳槽,也不敢创业。
所以我个人认为如果你不是很喜欢这个行业,就早点作出选择,当然越早越好,如果你喜欢,那就深造下去,见意在三十岁之前能够有所作为,不要再给别人打工,我过了三十五岁才明白,打工是最不划算的买卖。
就这个问题,我根本不了解你的任何情况,我能指点个毛线。再说我还不是前辈。
干了两年程序员了,没有说干的好还是不好, 回答里面的各位大佬,你就认为人家 是干的不好,说不定这个哥牛的一B。
下面的路怎么走, 我不知道~ 我也是渣渣,不够格当人生导师~
E. 现在很多年轻人,喜欢练街头健身的原因是什么
以前把健身叫练肌肉,这也说明增肌减脂是健身的主流,其实到现在也是增肌减脂的健身玩家居多。
不过,有一个健身领域开始流行了起来,这就是街头健身。
F. 程序员要具备什么技能
一名合格的程序员需要掌握哪些技能呢?x0dx0ax0dx0a熟练掌握开发工具x0dx0ax0dx0a做为一名程序员至少熟练掌握两到三种开发工具的使用,这是程序员的立身之本,其中C/C++和JAVA是重点推荐的开发工具,C/C++以其高效率和高度的灵活性成为开发工具中的利器,很多系统级的软件还是用C/C编写。而JAVA的跨平台和与WEB很好的结合是JAVA的优势所在,而JAVA即其相关的技术集JAVA One很可能会成为未来的主流开发工具之一。其次,能掌握一种简便的可视化开发工具,如VB,PowerBuilder,Delphi,C Builder,则更好,这些开发工具减小了开发难度,并能够强化程序员对象模型的概念。另外,需要掌握基本的脚本语言,如shell,perl等,至少能读懂这些脚本代码。x0dx0ax0dx0a熟知数据库x0dx0ax0dx0a为什么数据库是如此重要?作为程序员,他们自然有自己的理由:很多应用程序都是以数据库的数据为中心,而数据库的产品也有不少,其中关系型数据库仍是主流形式,所以程序员至少熟练掌握一两种数据库,对关系型数据库的关键元素要非常清楚,要熟练掌握SQL的基本语法。虽然很多数据库产品提供了可视化的数据库管理工具,但SQL是基础,是通用的数据库操作方法。如果没有机会接触商业数据库系统,可以使用免费的数据库产品是一个不错的选择,如mySQL, Postgres等。x0dx0ax0dx0a对操作系统有一定的了解x0dx0ax0dx0a当前主流的操作系统是Windows,Linux/Unix,熟练地使用这些操作系统是必须的,但只有这些还远远不够。要想成为一个真正的编程高手,需要深入了解操作系统,了解它的内存管理机制、进程/线程调度、信号、内核对象、系统调用、协议栈实现等。Linux作为开发源码的操作系统,是一个很好的学习平台,Linux几乎具备了所有现代操作系统的特征。虽然Windows系统的内核实现机制的资料较少,但通过互联网还是能获取不少资料。只有对操作系统有一定的了解后,你会发现自己上了一个新的台阶。x0dx0ax0dx0a懂得网络协议TCP/IPx0dx0ax0dx0a在互联网如此普及的今天,如果您还没有对互联网的支撑协议TCP/IP协议栈有很好的掌握,就需要迅速补上这一课,网络技术已改变了软件运行的模式,从最早的客户/服务器结构,到今天的WEB Services,再到未来的网格计算,这一切都离不开以TCP/IP协议栈为基础的网络协议支持,所以,深入掌握TCP/IP协议是非常必要的。至少,你需要了解ISO七层协议模型,IP/UDP/TCP/HTTP等常用协议的原理和三次握手机制。x0dx0ax0dx0a明白DCOM/CORBA/XML/WEB Services存在的意义x0dx0ax0dx0a随着技术的发展,软件与网络的无缝结合是必然趋势,软件系统的位置无关性是未来计算模式的重要特征之一,DCOM/CORBA是当前两大主流的分布计算的中间平台,DCOM是微软COM(组件对象模型)的扩展,而CORBA是OMG支持的规范。程序员需要做的不仅仅是利用商业的开发平台来开发软件,而是要理解这些技术的初衷,即为什么需要这项技术,如果你能理解了这一点,再回头看这些技术的具体实现,就如庖丁解牛,迎刃而解。XML/WebServices重要性不言而喻,XML以其结构化的表示方法和超强的表达能力被喻为互联网上的“世界语”,是分布计算的基石之一。x0dx0ax0dx0a不要将软件工程与CMM分开x0dx0ax0dx0a现代大型软件系统的开发中,工程化的开发控制取代个人英雄主义,成为软件系统成功的保证,一个编程高手并不一定是一个优秀的程序员,一个优秀的程序员是将出色的编程能力和开发技巧同严格的软件工程思想有机结合,编程只是软件生命周期中的其中一环,优秀的程序员应该掌握软件开发各个阶段的基本技能,如市场分析,可行性分析,需求分析,结构设计,详细设计,软件测试等。一句话可以概括我的看法:“创意无限,流程保证”。x0dx0ax0dx0a拥有强烈的好奇心x0dx0ax0dx0a什么才是一个程序员的终极武器呢,那就是强烈的好奇心和学习精神。没有比强烈的好奇心和学习精神更好的武器了,它是程序员们永攀高峰的源泉和动力所在。
G. 程序员是如何找项目练手的_新手程序员如何找工作
首先,你能想到平时找项目来进行练手,说明你是一个在技术上面是一个非常上进的同学。想要找到项目进行练手,第一个想到的地方应该是Github。Github上拥有全球最多的开源项目,你可以从其中找到自己感兴趣的开源项目,然后参与到开源项目的开发中去。能够参与开源社区,这也是很多互联网公司非常看重的一点。
其次现在也有很多举办计算机类比赛的平台,比如阿里云的天池大数据、Kaggle、Datacasle等。你如果有时间,可液返以参与上面举办的比赛,进行项目练手。
想要在Github上面找到自己想要参与的开源软件,首先你要确定好自己对什么技术方向感兴趣。比如对于我来说,我对实时计算非常感兴趣,所以我找了很多开源的实时计算引擎,最后选择了Flink开源项目,现在也在努力的参与到Flink的开发中去。想要使用开源项目来进行练手,你一定要确定好自己的技术方向,找到感兴趣的开源项目,接着就是尝试参与到其中。
确定好自己感兴趣的开源项目后,第一步就是去订阅官方社区的邮件组,在社区的邮件组里面,你可以看到很多同学对于开源项目的问题以及解答,你未来有任何问题时,也可以在开源项目邮件组中进行提问。其次,你可以去开源项目的官方网站,将里面的官方文档阅读和理解一遍,这对于你未来API的使用和概念的理解,会有很大的帮助。
最后,你可以去开源项目的JIRA(问题主页),查看自己能解决哪些JIRA,随着你解决的问题越来越多,我相信你的能力也会提升的越来越快。
其他方面,你也可以去阿里云的天池大数据等平台上面查找自己想要参与的比赛,上面的比赛主要以算法类比赛为主,但也有性能优化相关,编程类的比赛项目。我漏团以前在上面参加过阿里中间件的比赛,但是还是和同学一起来进行参加,一路跟着做下来,自己的能力也提升了很多,而且在校招的时候,面试官也问闹搜饥了很多这方面的问题。如果你能够跟着比赛做下来,我相信你肯定能够得到一定的收获。
H. 一名优秀的程序员必备的素质是什么
程序员必备的七种素质x0dx0a1:团队精神和协作能力 x0dx0a把它作为基本素质,并不是不重要,恰恰相反,这是程序员应该具备的最基本的,也是最重要的安身立命之本。任何个人的力量都是有限的,即便如linus这样的 天才,也需要通过组成强大的团队来创造奇迹,那些遍布全球的为linux写核心的高手们,没有协作精神是不可想象的。一旦进入系统的研发团队,进入商业化和产品化的开发任务,缺乏这种素质的人是不合格的。 x0dx0ax0dx0a2:文档习惯 x0dx0a说高水平程序员从来不写文档的肯定是乳臭未干的毛孩子,良好的文档是正规研发流程中非常重要的环节,作为代码程序员,30%的工作时间写技术文档是很正常的,而作为高级程序员和系统分析员,这个比例还要 高很多。缺乏文档,一个软件系统就缺乏生命力,在未来的查错,升级以及模块的复用时就都会遇到极大的麻烦。 x0dx0ax0dx0a3:规范化,标准化的代码编写习惯 x0dx0a代码的变量命名,代码内注释格式,甚至嵌套中行缩进的长度和函数间的空行数字都有明确规定,良好的编写习惯,不但有助于代码的移植和纠错,也有助于不同技术 人员之间的协作。有些codingfans叫嚣高水平程序员写的代码旁人从来看不懂,这种叫嚣只能证明他们自己?根不配自称程序员。代码具有良好的可读性,是程序员基本的素质需求。没有规范化和标准化的代码习惯,研发之间的协作是绝对不可想的。 x0dx0ax0dx0a4:需求理解能力 x0dx0a程序员需要理解一个模块的需求,很多程序员写程序往往只关注一个功能需求,他们把性能指标全部归结到硬件,操作系统和开发环境上,而忽视了本身代码的性能考 虑,性能需求指标中,稳定性,并访支撑能力以及安全性都很重要,作为程序员需要评估该模块在系统运营中所处的环境,将要受到的负荷压力以及各种潜在的危险 和恶意攻击的可能性。就这一点,一个成熟的程序员至少需要2到3年的项目研发和跟踪经验才有可能有心得。 x0dx0ax0dx0a5:复用性,模块化思维能力 x0dx0a经常可以听到一些程序员有这样的抱怨,写了几年程序,变成了熟练工,每天都是重复写一些没有任何新意的代码,这其实是中国软件人才最大浪费的地方,一些重复性工作变成了熟练程序员的主要工作,而这些,其实是完全可以避免的。 x0dx0a复用性设计,模块化思维就是要程序员在完成任何一个功能模块或函数的时候,要多想一些,不要局限在完成当前任务的简单思路上,想想看该模块是否可以脱离这个 系统存在,是否可以通过简单的修改参数的方式在其他系统和应用环境下直接引用,这样就能极大避免重复性的开发工作,如果一个软件研发单位和工作组能够在每 一次研发过程中都考虑到这些问题,那么程序员就不会在重复性的工作中耽误太多时间,就会有更多时间和精力投入到创新的代码工作中去。 x0dx0a一些好的程序模块代码,即便是70年代写成的,拿到现在放到一些系统里面作为功能模块都能适合的很好,而现在很多软件一升级或改进就动辄全部代码重写,大部分重复性工作无谓的浪费了时间和精力,这是我们应当刻意克服的弊病。 x0dx0a6:测试习惯 x0dx0a作为一些正规化的开发而言,专职的测试工程师是不可少的,但是并不是说有了专职的测试工程师程序员就可以不进行自测;软件研发作为一项工程而言,一个很重要 的特点就是问题发现的越早,解决的代价就越低,程序员在每段代码,每个子模块完成后进行认真的测试,就可以尽量将一些潜在的问题最早的发现和解决,这样对 整体系统建设的效率和可靠性就有了最大的保证。 x0dx0a测试工作实际上需要考虑两方面,一方面是正常调用的测试,也就是看程序是否能在正常调用下完成基本功能,这是最基本的测试职责,可惜在很多公司这成了唯一的测试任务,实际上还差的远那;第二方面就是异常调用的测试,比如高压力负荷下的稳定 性测试,用户潜在的异常输入情况下的测试,整体系统局部故障情况下该模块受影响状况的测试,频发的异常请求阻塞资源时的模块稳定测试等等。 x0dx0a当然并不是程序员要对自己的每段代码都需要进行这种完整测试,但是程序员必须清醒认识自己的代码任务在整体项目中的地位和各种性能需求,有针对性的进行相关测试并尽早发现和解决问题,当然这需要上面提到的需求理解能力。 x0dx0ax0dx0a7:学习和总结的能力 x0dx0a程序员是人才很容易被淘汰,很容易落伍的职业,因为一种技术可能仅仅在三两年内具有领先性,程序员如果想安身立命,就必须不断跟进新的技术,学习新的技能。善于学习,对于任何职业而言,都是前进所必需的动力,对于程序员,这种要求就更加高了。 x0dx0a但是学习也要找对目标,善于总结,也是学习能力的一种体现,每次完成一个研发任务,完成一段代码,都应当有目的的跟踪该程序的应用状况和用户反馈,随时总结,找到自己的不足,这样逐步提高,一个程序员才可能成长起来。
I. 如何自学成为程序员
如何学习自学编程的方式最好的莫过于在网络上面查找资源。
目前,网络上电脑资源多不胜数。其中有很多都是基础到精通的视频教程。通过视频讲解。让你明白重点知识。你通过查找一套适合自己的视频。然后看完是基本。
这里推荐几个可以在线学习的好网站:慕课、极客学院、传智播客、如朋网、网易公开课等等做笔记在进行看视频的过程中,一定注意要记笔记。
对视频中重点的部分进行截图,并加以文字解释。就形成了自己的笔记。这些笔记对于你来说很重要。通过记笔记的形式,你就不需要重新观看视频了。只需要复习的时候查看笔记就够了,这样就大大的节约了时间。
下面介绍一个记笔记的好软件:CherryTree多练习代码在视频中讲解的代码,我认为你至少需要自己写三遍以上。在写代码的时候,就用到了上面写的笔记了。通过看笔记截图,即可自己慢慢摸索写出来代码。当然练习到一定程度,就需要你适当的做个项目。巩固自己的知识。
程序员必备技能
1、熟练开发工具
做为一名程序员至少熟练掌握两到三种开发工具的使用,这是程序员的立身之本,其中C/C++和JAVA是重点推荐的开发工具,C/C++以其高效率和高度的灵活性成为开发工具中的利器,很多系统级的软件还是用C/C++编写。
而JAVA的跨平台和与WEB很好的结合是JAVA的优势所在,而JAVA即其相关的技术集JAVAOne很可能会成为未来的主流开发工具之一。
其次,能掌握一种简便的可视化开发工具,如VB,PowerBuilder,Delphi,CBuilder,则更好,这些开发工具减小了开发难度,并能够强化程序员对象模型的概念。另外,需要掌握基本的脚本语言,如shell,perl等,至少能读懂这些脚本代码。
2、熟知数据库
为什么数据库是如此重要?作为程序员,他们自然有自己的理由:很多应用程序都是以数据库的数据为中心,而数据库的产品也有不少,其中关系型数据库仍是主流形式,所以程序员至少熟练掌握一两种数据库,对关系型数据库的关键元素要非常清楚,要熟练掌握SQL的基本语法。
虽然很多数据库产品提供了可视化的数据库管理工具,但SQL是基础,是通用的数据库操作方法。如果没有机会接触商业数据库系统,可以使用免费的数据库产品是一个不错的选择,如mySQL,Postgres等。
3、了解操作系统
当前主流的操作系统是Windows,Linux/Unix,熟练地使用这些操作系统是必须的,但只有这些还远远不够。要想成为一个真正的编程高手,需要深入了解操作系统,了解它的内存管理机制、进程/线程调度、信号、内核对象、系统调用、协议栈实现等。
Linux作为开发源码的操作系统,是一个很好的学习平台,Linux几乎具备了所有现代操作系统的特征。虽然Windows系统的内核实现机制的资料较少,但通过互联网还是能获取不少资料。懂得网络协议TCP/IP。
在互联网如此普及的今天,如果您还没有对互联网的支撑协议TCP/IP协议栈有很好的掌握,就需要迅速补上这一课。
网络技术已改变了软件运行的模式,从最早的客户/服务器结构,到今天的WEBServices,再到未来的网格计算,这一切都离不开以TCP/IP协议栈为基础的网络协议支持,深入掌握TCP/IP协议是非常必要的。
至少,需要了解ISO七层协议模型,IP/UDP/TCP/HTTP等常用协议的原理和三次握手机制。
4、明白DCOM/CORBA/XML/WEBServices存在的意义
随着技术的发展,软件与网络的无缝结合是必然趋势,软件系统的位置无关性是未来计算模式的重要特征之一,DCOM/CORBA是当前两大主流的分布计算的中间平台,DCOM是微软COM(组件对象模型)的扩展,而CORBA是OMG支持的规范。
XML/WebServices重要性不言而喻,XML以其结构化的表示方法和超强的表达能力被喻为互联网上的“世界语”,是分布式计算的基石之一。
5、不要将软件工程与CMM分开
大型软件系统的开发中,工程化的开发控制取代个人英雄主义,成为软件系统成功的保证,一个编程高手并不一定是一个优秀的程序员,一个优秀的程序员是将出色的编程能力和开发技巧同严格的软件工程思想有机结合。
编程只是软件生命周期中的其中一环,优秀的程序员应该掌握软件开发各个阶段的基本技能,如市场分析,可行性分析,需求分析,结构设计,详细设计,软件测试等。
6、需求理解能力
程序员要能正确理解任务单中描述的需求。
在这里要明确一点,程序员不仅仅要注意到软件的功能需求,还应注意软件的性能需求,要能正确评估自己的模块对整个项目中的影响及潜在的威胁,如果有着两到三年项目经验的熟练程序员对这一点没有体会的话,只能说明他或许是认真工作过,但是没有用心工作。
7、模块化思维能力
作为一个优秀的程序员,他的思想不能局限在当前的工作任务里面,要想想看自己写的模块是否可以脱离当前系统存在,通过简单的封装在其他系统中或其他模块中直接使用。
这样做可以使代码能重复利用,减少重复的劳动,也能使系统结构越趋合理。模块化思维能力的提高是一个程序员的技术水平提高的一项重要指标。