老程序员的自白:编程平庸也可以成为优秀程序员_资质平庸 如何称为优秀的程序员-程序员宅基地

技术标签: 工具  编程  工作  basic  IT杂文  文档管理  任务  

我一直以编写代码为乐,起因并不是我精于此道,而要部分归因于它是一大挑战。

 我一直以编写代码为乐,起因并不是我精于此道,而要部分归因于它是一大挑战。我发现没有什么比指挥个人电脑在显示器上显示“Hello World!”更令人激动的了。而在显示器上显示三个红桃或者黑桃A(Ace)和J(Jack)则是一个完全不同的问题。我毕业后写的第一个程序是用Northstar Basic为NorthStar Horizon编写一个自动售货机程序,后来又为Northstar Advantage编写了基于图形的21点纸牌(Blackjack)游戏程序。

  PurpleEndurer注:

  1、Northstar Basic:是源自NorthStar Horizon 和 NorthStar Advantage的一种BASIC语言。详见 http://en.wikipedia.org/wiki/NorthStar_BASIC

  2、NorthStar Horizon:是North Star Computers公司生产、以ZiLOG Z80A为处理器的8位电脑。详见http://en.wikipedia.org/wiki/NorthStar_Horizon

  尽管如此陶醉于编程,但我必须坦白地承认:我是一个平庸的程序员,总在寻找一种方法来获得大的回报 - 即程序没有语法错误并能正常运行。这并不奇怪,我从未像一名程序员那样做好本职工作;我发现自己具有成为一名优秀开发人员的天赋。但是,在我们继续往下谈之前,我要给“平庸程序员”下一个定义。

  平庸程序员——会使用一些现成工具的程序员。他只知道最简单的命令语法,但懂得在哪能找到更复杂命令的语法。他不知道如何编写最高效的代码,但懂得在必要时如何重写和测试比较高效的代码。他可以克服重重困难独辟蹊径达到目标,但他把每个困难视为挑战,并自信会找到每一个困难的解决方法。他可能需要较长时间才能完成,但总能达到目标。他不知道如何创建一个DLL,但在必要时可以弄懂。他与大多数程序员一样,并不特别喜欢做工作记录,之所以这样做是因为他是一个专家。

  工作决定技能

  虽然我很想继续编写游戏,但为了填饱肚子,我只得迁就本地就业市场;公司们有“必需胜任实际工作”这个奇怪的要求是众所周知的。产品、人力资源、会计、库存跟踪和数据报告只是做生意必要的一些东西 - 你知道,很无聊的东西。

  当我真正为报酬而编写程序时,我的技能发生了戏剧性地变化。它不需要采用大量先进的编码技术来围着数据团团转,并耍魔术般地变成信息。

  我被 休斯飞机(Hughes Aircraft)公司雇用,通过IT服务来为产品控制部门提供支持。我的工作需要开发/分析技能,我热爱我的工作。编程不过是达到目的的手段。

  开发人员身兼数职

  程序员只是开发人员所扮演的诸多角色中的一个,通常你要身兼以下数职:

  购买方(带预算)Buyer (with budget)

  清道夫(无预算)Scavenger (no budget)

  分析师(Analyst)

  设计师(Designer)

  规划师(Planner)

  程序员(Programmer)

  协调员(Coordinator)

  测试员(Tester)

  文档管理员(Documenter)

  技术支持员(Support technician)

  当开发人员未被认可为一个或更多角色中的专家时并不太令人奇怪。对我来说,工作职能就是编程。

  我的生存之道

  尽管我的编程技能不尽如人意,我仍然是一个非常成功的开发人员。这里有一些我多年来学到的诀窍,以及如何我作为一个平庸程序员,发挥出最佳平均编码技能水平的生存之道:

  ▲ 明确要求——我会预先得到完整、精确的系统要求清单。如果你直接开始编码就意味着你没有针对系统设计的要求来进行。

  ▲ 分析和设计——我获得了分析和设计权。一名普通程序员获得了分析和设计权,就拥有了一个超越一名伟大的程序员的优势。

  ▲ 项目计划——坦白来说,我早期职业生涯中没有用过正式的项目计划,一直到我加入了CSC,不得不使用更多的正式文档编制技术,从而开始使用项目计划。由此我充分认识到使用经过慎重考虑后的项目计划也是平庸程序员的一个优势。

  ▲ 经常翻阅手册、指南——我总是备有手册、指南以供不时之需。我也研究了其它的参考材料。

  ▲ 拷贝-粘贴程序员——我不介意承认自己是一名拷贝-粘贴程序员。多年来,我写了许多可以在新项目中重复使用的代码。因为我至少花时间写了一次代码,所以我对这些代码如何工作略知一二。在工作中我从不拷贝其他人写的代码,并且我从不使用我在其他公司写的代码。黄金规则和版权法都适用于知识产权:您不得复制和使用别人的代码,除非明确允许,或者你可以得到特别的许可。

  ▲ 毅力——我永不放弃,我一直相信自己能完成任何编程任务。

  ▲ 工具——当我需要一台更快的电脑但这又不在预算之列时,我发现了一个经理愿意用他们的一部分预算资金为我购买。你可以通过乞求、借用,或交易来获取所需工具,从而完成自己的任务,要经常向你的经理提出自己的要求;只这些要求是合理的,一个优秀的经理会尽最大努力找到一种方式来获得软件,硬件,手册,或者你所需要的帮助。

  ▲ 手气好(Serendipity)——也被称为“代码一写就好”策略。有几次我像一个初级程序员那样写了代码,而这些代码运行得很好。我把它比作是国际象棋,你在下棋的过程中突然发现,自己走两步就有将死的机会。这不是编程应有的方法,但由于我在检讨自己的职业中的罪过,我不得不纳入此项。

  底线

  我要做一个最终坦白:我不喜欢被看作是次等的团队成员。我见识卓越,而幼稚的程序员却真的相信:不能写出“先进”代码的人对团队和公司来说毫无价值。这些精英认为平庸的程序员能力有限,不足以生产高品质的代码,几乎总是犯错,令人不快。有个观念令我感觉既可笑又惊讶:如果你不能________(填空),就不是优秀的程序员。

  你不必成为一个出色的程序员或伟大的开发者,特别是正在开发商用系统的时候。没错,我是一个平庸的程序员,其主要原因是我从来不需要成为一个伟大的程序员。

  我不是纵容平庸。不论做什么,都要尽力做好——包括编程。“最好”的代码可能难以确定,但越高效的代码可能也越难维护。可以说,任何可以完成工作的代码就是好的代码。代码是像索玛立方体(Soma cube),有240种途径可以解决索玛难题,同样,也有许多代码编写方法可以用来完成任务。底线就是尽可能做好工作——这是任何一个平庸的程序员都可以做到的

 


 

 【1】  海量Android教程、开发资料和源码 

【2】  海量Linux学习教程和开发资料 

【3】  海量C、C++、MFC和VC++教程、源码和开发资料

【4】  海量Java教程、开发资料和源海量IT开发资料下载导航

    

我5年程序员人生的点点滴滴

老程序员的忠告:不要做浮躁的软件工程师 

成为Java高手的25个学习目标--非常经典 

古往今来中国最经典的五十句名言

43个不可不知的健康常识,终生受益!43个不可不知的健康常识,终生受益!

2012年-2059年美国、日本和中国GDP预测 

2012年4月发布的世界各国/地区人均GDP 排名

古代四大美男、四大丑女和四大美女

穷人和富人心态的最大区别

毕业五年决定你的一生

12种最养男人的食物和10种最养女人的食物

永远不要问研究生的15个问题--never

老中医的顺口溜,太实用了!

教你如何看清一个人的本质 很靠谱的

 

 

 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/linux_loajie/article/details/7714546

智能推荐

VS2017使用scanf_s函数报错: (ucrtbased.dll)写入位置 0x00F6B000 时发生访问冲突。_vs2017写入位置时发生访问冲突-程序员宅基地

文章浏览阅读1.5w次,点赞46次,收藏59次。#include <stdio.h>#include <malloc.h>int main(){ char *str= (char *)malloc(20*sizeof(char)); scanf_s("%s", str); printf("%s\n",str);} 在使用VS2017时,应编译器要求需使用更加安全的..._vs2017写入位置时发生访问冲突

2048游戏的实现用C语言_2048游戏的实现用c语言studying one-程序员宅基地

文章浏览阅读118次。#include<stdlib.h>#include<stdio.h>#include<time.h>#define ROW 4#define LINE 4//这个数组为 全局数组--全局数组可以被该文件内任意函数调用//调用的前提--出现在任何函数之前int array_2048[ROW][LINE] = { 0 };//现在设定一个函数,功能是设置某个位置的随机值void position()//随机产生4或2{ int i..._2048游戏的实现用c语言studying one

毕业设计springboot宿舍管理系统-程序员宅基地

文章浏览阅读479次,点赞6次,收藏8次。1.1 研究背景近些年,随着中国经济发展,人民的生活质量逐渐提高,对网络的依赖性越来越高,通过网络处理的事务越来越多。随着宿舍管理的常态化,如果依然采用传统的管理方式,将会为工作人员带来庞大的工作量,这将是一个巨大考验,需要投入大量人力开展对宿舍管理等相关工作进行管理,单一且反复的操作容易出错且不易被察觉,工作人员对此风险并不能完全归避。利用现代信息技术,设计开发一款宿舍管理系统,能够极大的节省人力物力、提高工作效率、降低工作成本。1.2研究目的及意义。

【网络流24题----14】孤岛营救问题-程序员宅基地

文章浏览阅读94次。孤岛营救问题Time Limit:1 SecMemory Limit:128 MBDescription1944年,特种兵麦克接到国防部的命令。要求马上赶赴太平洋上的一个孤岛,营救被敌军俘虏的大兵瑞恩。瑞恩被关押在一个迷宫里,迷宫地形复杂,但幸好麦克得到了迷宫的地形图。迷宫的外形是一个长方形,其南北方向被划分为 N行,东西方向被划分为 M列,于是整个迷宫被划分为 N×M...

RDD 转化为 DataFrame_spark java rdd转dataframe-程序员宅基地

文章浏览阅读685次。DataFrame:读取和执行查询都会返回DataFrame,是一个由ROW 对象组成的RDD,附带包括每列数据类型的结构信息。ROW对象是支队基本数据类型的数组的封装。 ROW对象:表示DataFrame中的记录。本质是一个定长的字段数组。Spark将RDD转换成DataFrame的两种方式一、通过反射指定结构类型 通过反射的方式来推断RDD元素中的元数据。因为RDD本身一条数据本身是没有元数_spark java rdd转dataframe

科研工具篇|看完之后能提高你80%的科研工作效率_一般如何学习科研软件-程序员宅基地

文章浏览阅读3.7k次。荀子在《劝学篇》中讲到,”君子性非异也,善假于物也“。在生活中,善用各种工具能够极大的提高我们的效率,在科研工作中亦是如此。今天给大家介绍在科学研究和论文写作自己常用到的“七种武器”,有了它们,高质量的论文的写作将不再是一个难题。1、google scholar做文献调研是一件相当痛苦的事情,因为既要做到“准”,同时又要做到“全”。在常用的文献数据库中逐个去进行检索显然是一件费力不讨好的事..._一般如何学习科研软件

随便推点

Bootstrap使用插件时jQuery.min.js文件的导入方法_如何导入bootstrap的css和js文件、jquery文件-程序员宅基地

文章浏览阅读1.9k次。这几天在使用bootstrap框架的插件时突然忘记了jQuery文件时怎么导入的,接下来就详细讲解以下导入过程。_如何导入bootstrap的css和js文件、jquery文件

Java实现文件上传和下载的方法详解_用java实现文件的上传下载-程序员宅基地

文章浏览阅读4.2k次,点赞2次,收藏26次。参考文章:http://blog.ncmem.com/wordpress/2023/09/27/java%e5%ae%9e%e7%8e%b0%e6%96%87%e4%bb%b6%e4%b8%8a%e4%bc%a0%e5%92%8c%e4%b8%8b%e8%bd%bd%e7%9a%84%e6%96%b9%e6%b3%95%e8%af%a6%e8%a7%a3/编写文件上传的方法, 通过MultipartFile类型的参数即可接收上传的文件, 方法形参的名称需要与页面的file域的name属性一致。_用java实现文件的上传下载

MySQL分区管理-程序员宅基地

文章浏览阅读95次。以下是我看MySQL官方文档的时候整理的笔记,仅作参考保留。RANGE,LIST分区管理1:为未分区表创建分区ALTER TABLE trb3 PARTITION BY KEY(id) PARTITIONS 2;2:删除某个分区的数据ALTER TABLE tr DROP PARTITION p2;3:为分区表添加一个分区ALTE..._mysql分区权限

C语言中使用多线程播放游戏背景音乐_winform多线程音乐-程序员宅基地

文章浏览阅读3.7k次,点赞13次,收藏66次。做大一下期期末设计时遇到一个问题,游戏运行时循环播放背景音乐这个情况下,如果音乐播放完毕,加入判断函数判断是否结束,如果结束则重新播放,但是在游戏中,音乐播放完毕到音乐重新开始播放中间会有一个间隙,这个间隙游戏也会卡顿,主函数代码如下:int main(){ //初始化背景音乐 MUSIC bgm; bgm.OpenFile("res/music/bgm.mp3"); //设置屏幕刷新率 int nfps = 120; //初始化全局数据及图形 initgr(); //初始化启动页 _winform多线程音乐

若依前后端分离/微服务版怎样构造免密链接实现其他系统免登录访问_第三方通过地址跳转若依微服务版前端跳过登录页-程序员宅基地

文章浏览阅读2.5k次。场景若依前后端分离版手把手教你本地搭建环境并运行项目:若依前后端分离版手把手教你本地搭建环境并运行项目_BADAO_LIUMANG_QIZHI的博客-程序员宅基地上面在搭建起来前后端分离版的项目后,别的系统要实现通过跳链接的方式直接跳转到使用若依搭建的系统中从而不用登录就能访问系统。注:博客:BADAO_LIUMANG_QIZHI的博客_霸道流氓气质_程序员宅基地关注公众号霸道的程序猿获取编程相关电子书、教程推送与免费下载。实现1、效果2、若依前后端分离版与_第三方通过地址跳转若依微服务版前端跳过登录页

python-matplotlib绘制堆积的条形图-程序员宅基地

文章浏览阅读3.3k次。import matplotlib as mplimport matplotlib.pyplot as pltx=["a","b","c","d","e","f"]y=[2,3,6,7,9,5,]y1=[5,8,9,3,4,6,]plt.xlim(0,20)plt.barh(x,y,align="center",color="r",label="y")plt.barh(x,y1,left..._matlibplot 堆积条形图

推荐文章

热门文章

相关标签