优秀的程序员怎么做

我觉得优秀的程序员,不仅优秀在代码上,更重要在思维等方面。

我认为一个优秀程序员是谨慎的,在有需求与任务时,会不断的澄清需求与任务,并且多次确认想要的结果,而非闷头听着或者看着需求与任务列表。

我认为一个优秀程序员的思维是清晰的,在写代码时,他的脑海是有一系列详细步骤的,即知道他在做什么,而且写下的每一步他都能清楚的知道在表达什么。

我认为一个优秀程序员的思维是缜密细致的,在出问题后,他会详细的先研究问题出在哪里,思考缘由,而非闷头瞎使用printf大法,然后去撞大运,头痛医头,脚疼医脚,因为这样解开了Bug其实连自己都心虚。而优秀的程序员即使解开了Bug,他也会扩展问题,并且思考是否其它部分是否也有类似的问题,只是还未体现,而且他也会详细反思获得的经验。

我认为一个优秀程序员的编码习惯是良好的,他的代码读起来是赏心悦目的,若遇到难理解的实现点时,他也会写下清晰的注释来帮助后来人理解,因为他知道代码不仅是让计算机执行,更是需要让别人也理解的,因为项目开发是团队合作,而非单打独斗。

与优秀程序员的合作是愉快的,而非觉得难处。


1.事情做得专业的前提是能关注到细节
我觉得细心谨慎是程序员最基本的修养和素质,逻辑能力啥的倒是更为上一层的事情。整天想好的算法和架构是没有用的,你知道当你跟产品经理说解了半天的bug是因为少了个分号的时候,产品经理心中鄙视的是多么的波涛汹涌么。
如果连这些代码基本的细节都不能注意的话,谈何其他呢
2.尊敬每一个人就像尊敬代码一样
很多程序员是傲娇的,觉得产品就是自己做出来的,其他的人都是辅助的。所以很多程序员心里是看不上产品,测试的,也就造成很多沟通障碍。
首先上面这种人一定一辈子只能写代码,哪怕技术再牛。
我不太认同写代码只能写到30岁,但是程序员30岁之后,要想有更大的发展,那么做团队管理,要么做技术咨询,才能让自己的能力和积累的经验扩大化,那么这个时候,卓越的沟通能力往往成为关键。
3.用经验堆砌出你的产品技术全局观
这个就涉及到架构方面,产品经理提出需求,不仅仅想听到的是这个需求可以做还是不可以做这么简单,而是如果可以做,那么开发成本是怎样的,会对目前的系统产品模块造成哪些影响,有哪些的risk,如果不可以做,有没有好的替代方案或者简化方案。
如果在需求评估的时候,PM可以得到这些答案,一定会跪舔你的
当然,另一方面,如果在前期评估中,这些都没有想到的话,后期造成的种种后果也是需要程序员自己承担的。
4.做好情绪管理
理论上,程序员都是冷静的。但是现实中,情绪冲动的也是蛮多的,我不知道这样的性格会对写代码有何影响,但是因为情绪影响了判断就不好了,例如因为需求反复修改就索性说这个代码实现不了这种事情,终究会对自己的信誉造成很大影响的。这种事情我经常遇到。。。
5.技术要做到精益求精
编程语言那么多,多语言的程序员虽然抢手,但是如果是半瓶水的水平,估计也是没人愿意要的。
现在程序员非常多,是因为这个行业入门的门槛非常低,也就造成行业的水平参差不齐。做一个网站很难么,找个现成的框架,懂点数据库,建个数据表,前端再找个现成的模板,修修改改一个网站就出来了。
但是满足这样就完了?那么水平可能永远就是这样了,其实这其中每一个点都是可以研究的很深的,比如网站的大数据存储,如何提供程序并行运行的效率,,未来计算机行业的技术分工会越来越细,任何一个方面的专家都是相当有用的
6、职业规划,其实你没的选
听一个前辈讲,自己也对职业也很迷茫过,后来索性去创业了,但是失败的一塌糊涂,最后才明白,自己最会的还是写代码,最懂的还是Java,有时候其实你没的选
7.Stay hungry ,Stay Foolish
技术是永无止境的,好的程序员必须保持对于新的技术敏感度,保持学习的热情
同时看书学习可以更多的得到思维模式,可以在最快的时间发现问题的所在
如果没有好的思维模式,很多程序员遇到需求了,先百度,看看有没有相似的代码,遇到bug再去百度下,看看别人是怎么解的,这种永远只是码农而已
听说一本好的程序书籍至少要读12遍才能理解。

优秀程序员的行为:
  • 拿到任务,就开始仰望星空或天花板上那盏高悬的电灯棒,状如老僧入定
  • 忽而皱眉,忽而展颜一笑,忽而手舞足蹈,忽而在纸上指指戳戳,忽而口中念念有词,忽而长吁……感觉有点神经病啊
  • 桌子上摆的是代码大全、设计模式、敏捷实践之类的书籍,并且没有灰尘
  • chrome或firefox的书签栏里分门别类,类别多于10个,8个以上是技术相关的
  • 容不得破窗户,看见别人的烂代码就想改过来
  • 随手就能在白板上画出软件的流程图或者时序图……
  • 项目做完了,别人在打游戏、看视频、忙着回复QQ、向剁手族前进,他在想:这样重构好呢,还是那样……
  • 你发现他总能说出些你不知道的技术来……
  • 看这厮的代码比看你自己的还好懂……
  • 老得你叫他吃饭……

普通程序员的行为:
  • 拿到任务就开始噼里啪啦敲键盘,一天写了好几千行代码
  • 没事儿就被测试MM叫过去沟通……
  • 都早上10点多了还想着昨晚的球赛,10点半就琢磨中午要吃拉面、扯面、刀削面、牛肉面、旗花面、臊子面、窝窝面还是炒细面……
  • 过了一阵子,看到自己的代码,感到很惊奇,认为是别人写的……
  • 回家就看电视、打游戏、看球赛
  • 周一上班不知道要干啥,迟迟进入不了角色
  • 哇,能Run啦,搞定啦
  • 这谁写的代码,这么烂……算了,管它
  • 问别人问题的时候多,别人请教你的时候少
  • 世界上最遥远的距离不是生与死,而是你亲手制造的 BUG 就在你眼前,你却怎么都找不到她……




本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/509596.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 挂载磁盘目录

文章目录查看Linux磁盘信息格式化磁盘挂载修改重启后自动挂载fstab 文件格式介绍卸载查看Linux磁盘信息 [rootb001 ~]# fdisk -lDisk /dev/vda: 53.7 GB, 53687091200 bytes, 104857600 sectors Units sectors of 1 * 512 512 bytes Sector size (logical/physical): 512 by…

linux学习路线

很多同学接触Linux不多,对Linux平台的开发更是一无所知。而现在的趋势越来越表明,作为一个优秀的软件开发人员,或计算机IT行业从业人员,掌握Linux是一种很重要的谋生资源与手段。下来我将会结合自己的几年的个人开发经验&#xff…

java中有关文件流的操作

文件流: 顾名思义,程序和文件打交道. 此时我们谈及的文件,值得是纯文本文件(txt的,不要使用Word,Excel), 在字节流中,暂时不要使用中文. FileInputStream: 文件的字节输入流 FileOutputStream: 文件的字节输出流 FileReader:文件的字符输入流 FileWriter:文件的字符输出流…

数据结构实验之二叉树一:树的同构

题目描述 给定两棵树T1和T2。如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是“同构”的。例如图1给出的两棵树就是同构的,因为我们把其中一棵树的结点A、B、G的左右孩子互换后,就得到另外一棵树。而图2就不是同构的。 图1 …

Linxu服务器文件双向同步 rsync+sersync 详细讲解

文章目录Linxu服务器文件双向同步 rsyncsersync基础信息安装rsync安装配置根据配置文件创建相应的目录、文件、防火墙规则创建需要同步的目录创建同步用户防火墙启动rsyncd服务测试异常处理sersync安装sersync配置test21配置test22配置sersync启动test21启动test22启动测试新增…

resize和reverse的区别

首先,两个函数的功能是有区别的: reserve是容器预留空间,但并不真正创建元素对象,在创建对象之前,不能引用容器内的元素,因此当加入新的元素时,需要用push_back()/insert()函数。 resize是…

数据结构实验之二叉树五:层序遍历

题目描述 已知一个按先序输入的字符序列&#xff0c;如abd,,eg,,,cf,,,(其中,表示空结点)。请建立二叉树并求二叉树的层次遍历序列。 输入 输入数据有多行&#xff0c;第一行是一个整数t (t<1000)&#xff0c;代表有t行测试数据。每行是一个长度小于50个字符的字符串。输出 …

java中字符编码详解

字符编码的发展历程: 阶段1: 计算机只认识数字,我们在计算机里一切数据都是以数字来表示,因为英文符号有限, 所以规定使用的字节的最高位是0.每一个字节都是以0~127之间的数字来表示,比如A对应65,a对应97. 这就是美国标准信息交换码-ASCII. 阶段2: 随着计算机在全球的普及…

Elasticsearch Pipeline 详解

文章目录Ingest Node简介 Ingest Node简介 Pipeline、ProcessorsPipeline 定义简介 Simulate Pipeline API访问 Pipeline 中的内容Processors 类型详解Append ProcessorConvert ProcessorDate ProcessorDate Index Name ProcessorFail ProcessorForeach ProcessorGrok Processo…

java中的包装流和缓冲流概述

处理流/包装流(相对于节点流更高级)装饰设计模式/包装模式: 1:隐藏了底层的节点流的差异,并对外提供了更方便的输入/输出功能,让我们只关心高级流的操作. 2:使用处理流包装了节点流,程序直接操作处理流,让节点流与底层的设备做IO操作. 3:只需要关闭处理流即可. 包装流如何区…

数据结构实验之二叉树七:叶子问题

题目描述 已知一个按先序输入的字符序列&#xff0c;如abd,,eg,,,cf,,,(其中,表示空结点)。请建立该二叉树并按从上到下从左到右的顺序输出该二叉树的所有叶子结点。 输入 输入数据有多行&#xff0c;每一行是一个长度小于50个字符的字符串。输出 按从上到下从左到右的顺序输出…

vi/vim 光标移动命令

移动光标 上:k nk:向上移动n行 9999k或gg可以移到第一行 G移到最后一行 下:j nj:向下移动n行 左:h nh:向左移动n列 右:l nl:向右移动n列 w&#xff1a;光标以单词向前移动 nw&#xff1a;光标向前移动n个单词 光标到单词的第一个字母上 b&#xff1a;与w相反 e: 光标以单词向前…

CentOS离线安装httpd服务

文章目录需求背景安装需求背景 需要在无网络环境下安装httpd服务 安装 提示&#xff1a;直接下载httpd离线安装包无法安装成功&#xff0c;需要安装相对应的依赖 需要下载的依赖如下&#xff1a; apr-1.4.8-5.el7.x86_64.rpm apr-util-1.5.2-6.el7.x86_64.rpm apr-util-lda…

转换流和内存流

转换流:把字节流转成字符流: InputStreamReader:把字节输入流转成字符输入流. OutputStreamWriter:把字节输出流转成字符输出流. 为什么有字节转字符流,没有字符转字节流. 字节流可以操作一切文件(纯文本文件/二进制文件).字符流是用来操作中文纯文本使用的,本身是对字节流的…

windows配置gvim高效率编程(cc++)带自动补全代码

对vim的配置足以处理一般的比赛获其他编程项目要求&#xff0c;如自动缩进&#xff0c;自动补全等等。先上几张截图&#xff0c;看看效果&#xff1a; 可以看见vim简洁高效的界面和不错的缩进功能。 debug功能 一、安装gvim 下载资源并安装 百度云下载网址http://pan.baid…

数据结构实验之二叉树四:还原二叉树

题目描述 给定一棵二叉树的先序遍历序列和中序遍历序列&#xff0c;要求计算该二叉树的高度。 输入 输入数据有多组&#xff0c;每组数据第一行输入1个正整数N(1 < N < 50)为树中结点总数&#xff0c;随后2行先后给出先序和中序遍历序列&#xff0c;均是长度为N的不包含重…

Flink 1.12 CDH 6.3 集成

之前记录的&#xff1a;Flink 1.9 CDH 6.3 集成 有些下载链接可能被官方关闭了&#xff0c;这里介绍1.12版本集成&#xff0c;并把安装包下载地址换为百度网盘链接 下载安装包 链接: https://pan.baidu.com/s/112fiaaMAMMXMsyiTDh3qjg 提取码: ar5f 安装包内容 FLINK-1.12…

合并流

合并流/顺序流(SequenceInputStream): 就是把多个输入流,合并成一个流对象.

gvim常用的配置及插件 -windows

gvim常用的配置及插件 接触vim也已经有一年多了&#xff0c;期间也用过一段时间的SourceInsight&#xff0c;SourceInsight是Windows下一款不错的查看代码的软件。利用它可以迅速的了解一个大型程序的结构。后来在Linux下进行了一段时间的程序开发&#xff0c;就回到vim上了,经…

数据结构实验之求二叉树后序遍历和层次遍历

题目描述 已知一棵二叉树的前序遍历和中序遍历&#xff0c;求二叉树的后序遍历。输入 输入数据有多组&#xff0c;第一行是一个整数t (t<1000)&#xff0c;代表有t组测试数据。每组包括两个长度小于50 的字符串&#xff0c;第一个字符串表示二叉树的先序遍历序列&#xff0c…