想要成为真正优秀的程序员是不是真的很难?

很多人认为要想成为一名优秀的程序员,那就需要一天24小时每天不断地编程——睁开眼睛要编程,闭上眼睛睡觉的时候还要梦到编程——我认为这是一种矫枉过正的方法。沿着这条路走,只会让你精疲力尽,犹如夸父逐日一般,死在半道上。

我觉得问题的关键是要想明白你为什么要编程。坦率地说,我编程是因为我喜欢别人用我的程序,这也是我之所以在读书的时候成绩不怎么优秀的原因(我并不热衷于参加编程竞赛以及类似事情)。因此,我也不喜欢参与纯研究的项目——只在论文上讨论各种点子,而不付诸于行动不去写代码(除非恰巧碰到的是研究项目和开源项目)。

我在编程上并不是一个唯美主义者。我的观点是能工作、有用的代码就可以被定义为优雅,即使它看上去是一团乱糟糟的GOTO语句。

我认为的“优秀的程序员”应该是这样的:

  • 偷懒战略。优秀的程序员更倾向于灵活工作而非死工作,所以如果你想要将编程当作长期的职业规划,那么学习重用代码和自动化繁琐的任务是至关重要的。
  • 在职业生涯早期,有机会就多多了解从需求分析到最终发布整个的软件流程,这样你才能学习从终端到终端的设计——还可以激发你的信心。
  • 生活中除了编程以外,应该还要有某项能让你经常外出活动的业余爱好。这样才能改善你消耗在键盘上的健康。
  • 如果你想要在编程这一行待个三五十年,那么最好学点拿手绝活,让别人在某个领域不敢小觑于你,密切关注这方面的技术进步,保持同步。
  • 多了解几门编程语言——特别掌握你准备精通的编程语言。并且最好能从不同的编程范式(程序,设置,功能等)来了解语言。
  • 相关的:不必过于担心你不知道的新的Zwizzle-Wiz算法。如果不需要实施细节的话,了解一些相关领域重点算法以及比较重要的通用算法(如排序和搜索)的特点和功能就可以了。没有必要囫囵吞枣、傻不拉几的试图想要记忆100种算法的实现(我看到有人曾经这么做过),你的小脑袋会爆掉的。
  • 了解如何面试程序员。英雄总是惺惺相惜,作为一名优秀的程序员,建设优良的团队,也是你的部分责任。
  • 了解公司业务的相关内容,以及你的代码需要如何与之匹配,这有助于你正确地作出相关的决策,避免走一些弯路。
  • 问问相关人员的想法,看看他们对你的代码的评价,包括产品经理、QA、现场支持人员、专业的服务工程师和实际使用的客户等。
  • 相关的:不要错过任何一个和客户交流的机会。但是一定要注意自己的行为举止:耐心聆听,哪怕客户的想法听上去非常可笑,这主要是因为他们不是程序员的缘故。但是,如果你能借此机会好好思考关于如何使用代码以及使用过程中的日常挑战,那么将有助于你提高你的产品。
  • 对于我,我是Unix哲学——一系列通用设计原则的铁杆粉丝。虽然这些原则并不总是有效,但它是指点我如何连接优良代码—系统—设计的指南针。

所以,对于“想要成为一名真正优秀的程序员是不是真的非常难?”这一问题的答案,可能的确是非常艰难非常辛苦的,特别是要想成长为一名优秀的程序员是需要一段很长的时间。但是只要你愿意好好学习代码的系统知识和机制,那么我相信你一定可以长风破浪会有时,直挂云帆济沧海。

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

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

相关文章

Impala查询 - HDFS缓存数据

HDFS缓存数据命令 查看缓存池信息 hdfs cacheadmin -listPools -stats 查看已缓存的数据信息 hdfs cacheadmin -listDirectives -stats Impala表卸载缓存数据 alter table dw_crawler.bsl_zhongda_weibo_article_hive set uncached; 创建缓存池 hdfs cacheadmin -addPool a…

Turtlebot入门-配置网络

配置网络 在工作站和Turtlebot都要同步时钟 输入如下命令: sudo apt-get install chrony ntpdate sudo ntpdate ntp.ubuntu.com 2.获取Turtlebot和工作站的IP地址,在终端执行: ifconfig sudo service ssh status 如果显示ssh: unrecogn…

RTTI-运行时类型识别

RTTI 编辑RTTI(Run-Time Type Information),通过运行时类型信息程序能够使用基类的指针或引用来检查这些指针或引用所指的对象的实际派生类型。中文名RTTI外文名Run-Time Type Information属 于程序函 数typeid目录 1 RTTI介绍 ▪ typeid函数 ▪ …

html怎样实现数据列表的下拉效果

目前支持浏览器&#xff1a;火狐、欧朋。。 谷歌不支持 <!DOCTYPE html> <html> <head> <meta charset"utf-8" /> <title>hello</title> </head> <body> <form action"testform.php"method&q…

Java 调用 Impala - JDBC 调用Impala

java通过JDBC 调用Impala服务 Maven项目中 pom.xml引用<dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-common</artifactId><version>2.7.1</version></dependency><dependency><groupId>…

Linux 、shell 时间函数 - 获取七天前所在周

[rootiZj6c3ral1ugubn9usrsi8Z ~]# echo $(date -d -7day %Y%W) 201912

动态创建二维数组

int **p; p new int*[10]; //注意&#xff0c;int*[10]表示一个有10个元素的指针数组 for (int i 0; i ! 10; i) { p[i] new int[5]; } 这里是将p作为一个指向指针的指针&#xff0c;它指向一个包含10个元素的指针数组&#xff0c;并且每个元素指向一个有5个元素的数…

html上传文件

<!DOCTYPE html> <html> <head> <meta charset"utf-8" /> <title>hello</title> </head> <body> <form action"testform.php"method"get"> 请选择上传的多个文件&#xff1a;&l…

相机参数关系

焦距 f 35mm 最高分辨率&#xff1a;42562832 传感器尺寸&#xff1a;36.023.9 mm 根据以上定义可以有&#xff1a;u0 4256/2 2128 v0 2832/2 1416 dx 36.0/4256 dy 23.9/2832 fx f/dx 4137.8 fy f/dy 4147.3

Kafka 不停机修改某一个topic数据保存时间

查看topic信息 ./kafka-topics.sh --describe --zookeeper zk:2181 --topic topicName25/03/08 16:05:29 INFO zkclient.ZkClient: zookeeper state changed (SyncConnected) Topic:topicName PartitionCount:3 ReplicationFactor:3 Configs:Topic: topicName …

html中怎样实现在输入框中出现提示

<!DOCTYPE html> <html> <head> <meta charset"utf-8" /> <title>hello</title> </head> <body> <form action"testform.php"method"get"> 请输入网址&#xff1a;<input ty…

相机畸变模型

畸变参数&#xff08;与点集如何畸变的2D几何相关。&#xff09; 采用理想针孔模型&#xff0c;由于通过针孔的光线少&#xff0c;摄像机曝光太慢&#xff0c;在实际使用中均采用透镜&#xff0c;可以使图像生成迅速&#xff0c;但代价是引入了畸变。 有两种畸变对投影图像影…

HUE WorkFlow Schedule 调用Hive参数传递,外部参数传递,时间参数传递

目录 WorkFlow传静态参数 Schedule 传动态参数 oozie常用的系统常量 场景&#xff1a;HUE执行任务需要从外部传入参数&#xff0c;不能在脚本写死&#xff0c;比较麻烦 WorkFlow传静态参数 执行的脚本代码如下 CREATE EXTERNAL TABLE ${hivevar:database}.${hivevar:table…

函数调用过程简单分析

C/C函数调用过程分析 这里以一个简单的C语言代码为例&#xff0c;来分析函数调用过程 代码&#xff1a; 1 #include <stdio.h>2 3 int func(int param1 ,int param2,int param3)4 {5 int var1 param1;6 int var2 param2;7 int var3 param3;8 …

ninja: error: 'LIBSOUNDIO_LIB-NOTFOUND', needed by 'bin/k4aviewer', missing and no known rule to mak

sudo apt install libsoundio-dev cmake .. -GNinja ninja sudo apt install ninja-build

有向图的邻接表描述 c++

有向图的邻接表表示法 图的邻接表表示法类似于树的孩子链表表示法。对于图G中的每个顶点vi&#xff0c;该方法把所有邻接于vi的顶点vj链成一个带头结点的单链表&#xff0c;这个单链表就称为顶点vi的邻接表(Adjacency List)。 1&#xff0e; 邻接表的结点结构 &#xff08;1&a…

Form表单中method=post/get'的区别

Form提供了两种数据传输的方式——get和post。虽然它们都是数据的提交方式&#xff0c;但是在实际传输时确有很大的不同&#xff0c;并且可能会对数据产生严重的影响。虽然为了方便的得到变量值&#xff0c;Web容器已经屏蔽了二者的一些差异&#xff0c;但是了解二者的差异在以…

HUE Schedule 定时调度 - 启动时间设置问题(执行次数过多,时区问题)

在启动Schedule 时需要设置开始时间&#xff0c;结束时间不用讨论&#xff0c;开始时间设置时尽量为当前时间 因为开始时间设置如果小于今天&#xff0c;比如设置为2019-01-01&#xff0c;定时器是每天1:29分启动&#xff0c;则会将日期之前的次数执行了&#xff0c;即执行开始…

AZURE kinect 深度相机配置ubuntu16.04

1.升级cmake // Download and extract cmake 3.14.5 mkdir ~/temp cd ~/temp wget https://cmake.org/files/v3.14/cmake-3.14.5.tar.gz tar -xzvf cmake-3.14.5.tar.gz cd cmake-3.14.5/ //Install extracted source ./bootstrap make -j4 sudo make install cmake --version…

递归算法的时间复杂度分析

在算法分析中&#xff0c;当一个算法中包含递归调用时&#xff0c;其时间复杂度的分析会转化为一个递归方程求解。实际上&#xff0c;这个问题是数学上求解渐近阶的问题&#xff0c;而递归方程的形式多种多样&#xff0c;其求解方法也是不一而足&#xff0c;比较常用的有以下四…