主要是勤奋刻苦、开拓思想、坚持不懈、不断学习的精神。
1、先说素质:欲做事,先做人。做技术类的童鞋往往忽视做人,觉得学好习,搞好技术,就一定能获得好的发展。其实未必,大部分程序员不是天才,也不是神通。要想让别人教雹高你知识,与你分享技术,与你共事,素质是最关键的。高素质又高技能的人才才能获得别人的敬仰与尊敬,也能获得领导的赏识与提拔,更能获得更高的回报和机会。
2、再说代码:优秀的程序员必需能写优秀的代码,程序员就好比计算机界的作家,你写的程序就如一篇篇优美的文章,计算机才能很好的阅读并执行,别的程序员也能看懂你的代码。最优势的程序员写的代码就如诗歌一样,引人入胜。
3、编程思想:java是面向对象编程,很多Java程序员,尤其是一些走培训班的,不认真思考原理和思想,囫囵吞枣。结果学了技术,不懂思想,没有掌握Java的精髓。
4、基础扎实:有些Java工程师都做了好几年了,结果一些最基本的知识还没记牢,再编程的时候总用工具的提示,没有工具就写不出正确的代码,这样的人怎么会成为高手呢,更不会被别人认为高手,就好比一个大作家连很多字都写错一样。
5、编程速纯肆棚度:优秀的程序员编程必不慢,这除了基础扎实、经验丰富外,更需要清晰的编程思路和节奏,在写程序前,一定做好规划和设计,预想到各种情况,寻找最快速的算法。
6、注重效率:一个功能,张三用了100000行代码,而你只用了300行代码,那你做的既简单又高效,运行速度还快,还省内存和资源,那你就是牛人,那个人就是低做则手。
7、学习能力:优秀的程序员永远不停的学习,其学习能力是最强的。他随时随地掌握最先进的技术,这都离不开快速的学习能力。
Ⅱ c++为啥做起来没思路啊。
第一,要用面向对象的思维方式去看待C++编程,即在C++程序员眼中,所有事物都是具有一些属性的,我们只要实例化一个“具体的事物”即对象就可以使用它的属性,比如一辆汽车,在面向过程编程,我们要开动它就需要为它添加一个开的函数,再调用这个函数就可以开了,但是在C++中我们就假设这辆车已经存在,它自己本身就有一个开的功能,只要存在一辆车,那么这辆车就可以开了,其余事物也都是大同小异。
第二,要多写一些代码,从最简单的开始,不要好高骛远,一步一步来,慢慢的就有感觉了。
第三,多看看别人写的代码,既要读懂又要学习别人的思想,即博众家之长而超之。。
以上均为个人看法,采纳需谨慎!
Ⅲ 编程怎么才能让自己有思路呢
其实很简单
首先明白你要写一个什么东西【比如你要写一个登陆的程序】
然后分析你这个程序要那些步骤来完成 【以登陆举例】
(1)登陆页面写好
(2)分析基础元素有登陆账号,登陆密码,为了安全会有验证码 然后提交登陆
(3)这里就说登陆程序了 你把这些参数提交到后台,你的程序就开始了:
【1】验证验证是否正确
【2】验证账号是否存在
【3】验证账号密码是否正确
【4】验证通过记录session你这个登陆信息
通过基本分析你得到了这个程序大概要写哪些步骤 当然我写的是简单的例子分析,如果要更安全肯定还有一些操作
把你这些步骤以注释形式写道你的编程内,按照你的思路步骤来逐步编写
编写完成可以考虑下你的思路是否可以精简步骤,满满磨练就好了
Ⅳ 我是干了八个月的程序员,干了十几年的同事给我说我脑子不灵活,思维严谨,我是不是该转换一下做事思路
既然他这么说,而且他有十多年的工作经验,那肯定只看出了你工作上的一些弊端,那你可以虚心的请教他,你也应该转换一下工作思路,因为程序员这工作比较枯燥,但是也不能太死板。能尽量写短一些的代码就完成工作比绕个大圈写一堆代码完成工作要好得多呀,效率也高。
Ⅳ 怎样做一名高效率程序员
1、理解编程语言的原理
三流的人才懂应用,二流的人才懂开发,一流的人才懂原理。各种语言之间存在着相似的地方,掌握语言的原理是必不可少的。最重要的,让语言去适应项目,反之亦然。
2、向优秀程序员学习
你有一个苹果,我也有一个苹果,我们交换苹果,你我还是有一个苹果;你有一种思想,我也有一种思想,我们交换思想,你我就有了两种思想。
与优秀的程序员为伍,你将吸收的最实用的经验,这远比你一个人自学、死磕编程来的快一些。有一句话说到好,与臭棋佬下棋,棋会越下越臭。不可否认这样一个事实:和什么样的人在一起,就有什么样的格局,就会有什么样的人生。
3、了解数据结构和算法
如果你要成为一个高效的开发者,就必须学会快速排序、学会辨认O(n2)程序、学会编写递归函数。
学会多种语言,你便会更清楚不同的框架是相同问题的是如何解决的。尽可能去了解底层命令(plumbing),以便能够作出明智的决定(Web框架是怎么存储session状态的?Cookie到底是什么?)。
4、精通一个编辑器
高效开发者通常是用IDE编辑器吗?其实不是的,他们更常用的文本编辑器,因为这样更会学到东西。
如果使用编辑器选择通用的Emacs或Vim,自然是最好的。其次,挑选你的首选平台最支持的。使用宏,不断地写代码;使用Visual Studio或SublimeText的自动补齐功能。
5、整洁的代码胜过巧妙的代码
如果想让别人可以轻松读懂你编写的代码,请尽量使用最少的代码来完成任务。在编写代码过程中,遵循DRY(Don’t repeat yourself)的原则,使用明确定义的对象和库,将任务分解成小而简单的代码段。
6、掌握代码调试技巧
现如今市场和需求变化相当快,项目的周期有时就会缩短。一个月的工作计划,会缩短到2个星期。项目的压力难免会导致程序员的代码质量会有所下降!
因此,调试技巧在这样的环境下就显得尤为重要。高级程序员会在函数的开始和结束输出Log,把所有的参数和返回值打印到日志系统,便于追踪。在解决问题的过程中,使用开发工具一行一行进行调试,实时观看参数的变化。
7、重新回顾代码
重新去回顾和审视自己写过的代码,通常会有两种体验,一种是我怎么写了这么烂的代码;另外一种则是对自己写过的代码充满了成就感。回顾代码有时可以触发我们新的想法,甚至还能对编码有一个更深层次的思考。
Ⅵ 有什么东西,程序员觉得很普遍普通,而别人却没有的
《The Effective Engineer》的作者在写书的过程中,为了了解那些顶级程序员和普通程序员的区别,采访了很多硅谷顶级科技公司的顶尖软件工程师。他发现这些给世界带来巨大影响的的工程师们至少有以下5个共同的思维模式:
1.勇于去研究你不懂的代码
一般人都不愿意去研究自己不曾接触过的代码,很多人都没有尝试就放弃了。如果你经常去研究你没有接触过的代码,你就会越来越熟悉不同的代码结构和设计模式。现在人们很容易就接触到优秀的开源代码资源,你可以很方便的就下载下来做一些改动或者调试,去研究为什么代码可以这么写。
除了代码之外,很多人对于陌生的工作内容也会感到恐惧。每次换工作的时候,你可能都会遇到新公司的工作内容和以前工作的内容不一样的情况,以至于刚开始的时候工作效率没有以前那么高。很多人甚至觉得,他们是不是骗了面试官。
其实,大家都是在学习的过程中。在一个陌生的领域,没有人从一开始就是大神。如果你想变得越来越好,无论是写代码,与人沟通或者其它的技能,都是需要投入时间去学习的。
2.精通代码调试(debug)
很多人在写代码的过程中,经常会有的一个问题就是:为什么我写出来的代码不能运行?为什么运行的结果不是我想要的?
几乎所有的程序员写代码都不是一遍就能写好的。但是顶尖的程序员非常快的就明白自己代码的问题可能是什么。这是一个很重要的能力,但是偏偏学校里不教,面试的时候考官也不经常提及。
那么怎么去调试代码呢?其实核心就是以下几个方法:
1、不妨先猜测一下到底发生了什么。
2、假设你的猜测是对的,想想你的猜测会导致程序有什么结果。
3、试着观察这些结果有没有异常的地方。
4、如果你没有发现异样,那么说明你的猜测就是对的。
5、如果你发现了异样,那么说明你的猜测是错的,接下来换一个猜测试试。
对于顶尖程序员来说,这个过程在脑海中就是电光火石的一瞬间。只要你解决的问题足够多,你做出来的猜测就会越准确。
至于如何发现异样?你就需要有一套自己的工具或者方法论了。最简单的就是在代码里输出日志来判断。但是这是比较笨的办法,你需要去接触一些高级的工具或者直接带有Debug功能的编辑器。
3.重视能够节约时间的工具
最近打败人类的AlphaGo每天可以进行上百万局的下棋训练,我们人类一万个小时的训练却需要10年之久。也就是说,电脑运行几分钟,可能就等于人类工作好几年。
曾经在Facebook担任技术总监的Bobby Johnson描述过,高效率的程序员都把时间花在制作工具上。
很多人也认为工具是很重要的,但是他们并没有花时间去制作、整合自己的工具。但是,Jonson团队最出色的员工耗费了他们1/3的时间在工具制作上,这些工具可以用来发布代码,监控系统,以及能让他们花更少的时间去做更多事情。
总之,不要花时间去做机器可以代替你去做的事情。
4.优化你的迭代速度
假设你要花12秒钟去搜索某个函数是在哪里定义的。再假设你每天做这个动作60次,那么你每天就要花12分钟去搜索函数定义。
如果你用一个好一点的编辑器,每次找到函数定义只要2秒钟,那么你每天就会节约10分钟。每年你就可以节约40个小时。
如果你能找到3个这样的场景去优化一下,那么你每年可以节约一个月的时间。想想这一个月你可以做多少有意义的事情。
再假如你在调试一个App的bug的时候,改完一次代码都需要重启一下App,然后点击4、5次才能看到bug有没有改好。那么你是不是可以先花几分钟设置以下,让App一启动就转到显示Bug的页面呢?
千万不要小看这些琐碎的细节,改善它们的回报是巨大。
5.系统性的思考方式
当你在写代码的时候,你很容易就认为只要你按照需求实现了指定的功能,你的代码就写完了。但是这其实只是冰山一角。任何没有发布到生产环境的代码都不会产生任何价值。
如果想写出真正有影响力的代码,你需要从整个系统去理解你的工作:
1、你的代码和其他人写的代码在功能上是什么关系?
2、你有没有好好测试你的代码?或者其他人是否很容易测试你的代码?
3、为了部署你的代码,线上生产环境的代码是不是需要改动?
4、新的代码会不会影响到已经运行的代码?
5、在新的功能下,你的目标用户的行为是不是你期望的?
6、你的代码有没有产生商业上的影响?
这些问题都不是很容易就能回答的,但是在写代码的时候,你需要明白你的代码最后会不会得到最好的结果。
Ⅶ 程序员算法解题方法与思路
此方法通过写出问题的一些特定的例子,分析总结其中的规律。具体而言,就是通过列举少量的特殊情况,经过分析,最后找出一般的关系。
问题与以前莫个算法解决过的问题相似,此时就可以触类旁通,尝试改进原有算法来解决
此方法首先将问题简单化,如改变数据类型、空间大小等,然后尝试着将简化后的问题解决。
为了降低问题的复杂度,很多时候都会将问题逐层分解,最后归结为一些简单的问题,这就是递归法
将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。分治法一般包括以下三个步骤:
1)将问题的实例划分为几个较小的实例,最好最有相等的规模。
2)对这些较小的实例求解,而最常见的方法一般是递归。
3)如歌有必要,合并这些较小问题的解,以得到原始问题的解。
一般而言,时间复杂度越低的算法越高效。而更想达到时间复杂度的高效,很多时候就必须在空间上有所牺牲,用空间来换时间。而用空间换时间最有效的方法就是Hash法、大数组和位图法。
在设计题目时,往往会有一个载体,这个载体便是数据结构。如数组、链表、二叉树和图等,当窄体确定后,可用的算法自然而然就会显现出来。可问题是很多时候并不确定这个载体是什么,当无法确定这个载体时,一般也就很难想到合适的方法了。
当遇到上面的问题时,可以采用最原始的思考问题的方式——轮询法。常考的数据结构与算法一共就几种,如下图
此种方法看似笨拙,却很实用,只要对常见的数据结构与算法烂熟于心,一点都没有问题。