高級程序員和低級程序員的區別

低級程序員認為自己與高級程序員的區別, 主要是高級程序員任何功能都能編碼實現, 編碼速度快, 代碼無 bug. 正如一慣的那樣, 低級程序員之所以低級, 正是因為他們勉強能看到(或者根本看不到)事物的表象而看不到本質. 所以, 低級程序員總結出的一切東西, 你都可以大膽的忽略。

所以, 我們來聽聽高級程序認為自己與低級程序員的區別是什么. 高級程序員之所以高級, 在于他們認識到代碼 bug 是不可避免的, 有千萬種理由可以導致 bug, 但他們可以在設計和邏輯上保證(追求)滴水不漏, 并用邏輯的百分之百準確性還減少代碼 bug. 沒錯, 嚴謹的邏輯能力是高級程序員區別于低級程序員的最主要原因。

優秀程序員的行為:

拿到任務,就開始仰望星空或天花板上那盞高懸的電燈棒,狀如老僧入定

忽而皺眉,忽而展顏一笑,忽而手舞足蹈,忽而在紙上指指戳戳,忽而口中念念有詞,忽而長吁……感覺有點神經病啊

桌子上擺的是代碼大全、設計模式、敏捷實踐之類的書籍,并且沒有灰塵

chrome或firefox的書簽欄里分門別類,類別多于10個,8個以上是技術相關的

容不得破窗戶,看見別人的爛代碼就想改過來

隨手就能在白板上畫出軟件的流程圖或者時序圖……

普通程序員的行為:

拿到任務就開始噼里啪啦敲鍵盤,一天寫了好幾千行代碼

沒事兒就被測試MM叫過去溝通……

都早上10點多了還想著昨晚的球賽,10點半就琢磨中午要吃拉面、扯面、刀削面、牛肉面、旗花面、臊子面、窩窩面還是炒細面……

過了一陣子,看到自己的代碼,感到很驚奇,認為是別人寫的……

1.勇于去研究你不懂的代碼

一般人都不愿意去研究自己不曾接觸過的代碼,很多人都沒有嘗試就放棄了。如果你經常去研究你沒有接觸過的代碼,你就會越來越熟悉不同的代碼結構和設計模式。現在人們很容易就接觸到優秀的開源代碼資源,你可以很方便的就下載下來做一些改動或者調試,去研究為什么代碼可以這么寫。

除了代碼之外,很多人對于陌生的工作內容也會感到恐懼。每次換工作的時候,你可能都會遇到新公司的工作內容和以前工作的內容不一樣的情況,以至于剛開始的時候工作效率沒有以前那么高。很多人甚至覺得,他們是不是騙了面試官。

2.精通代碼調試(debug)

很多人在寫代碼的過程中,經常會有的一個問題就是:為什么我寫出來的代碼不能運行?為什么運行的結果不是我想要的?

幾乎所有的程序員寫代碼都不是一遍就能寫好的。但是頂尖的程序員非常快的就明白自己代碼的問題可能是什么。這是一個很重要的能力,但是偏偏學校里不教,面試的時候考官也不經常提及。

3、程序員是一種職業,而黑客是一種興趣。

4、程序員的工作有很多限制,而黑客可以盡情發揮。

5、程序員都想把自己說得更好,因為他們要推銷自己,而真正的黑客更謙虛,他們知道自己懂得還不夠多。

6、程序員是一種“職責”,需要的是對編程語言的使用,更希望盡快完成工作,而不是探尋為什么要做這項工作。

黑客是一種“心態”,對技術有著極大的好奇,希望理解核心的工作原理,喜歡創造。嘗試理解如何工作,如何做得更好,如何讓事情做得特別。黑客就像藝術家或哲學家,同時有著科學工程的天賦,有很多“為什么”和“為什么不”。

7、程序員和黑客,就如同畫匠和藝術家,工匠和DIYer,教科書的方式和創新的方式。

8、程序員的目標是寫出程序,完成需求,而黑客是要讓程序為自己而用,滿足自身需求。

9、程序員和黑客都在寫代碼,只是黑客把不可能變為了可能。

歡迎關注我的公眾號(同步更新文章)DoNet技術分享平臺

閱讀原文

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/272690.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/272690.shtml
英文地址,請注明出處:http://en.pswp.cn/news/272690.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

oracle中的tx鎖影響查詢嗎,如何找到TM鎖對應的TX鎖?

我昨天也這樣試過,但出來的結果和預料相差很遠。wyqORCL>update emp set ename ename;12 rows updated.wyqORCL>get lockline 16 truncated.1 /* showalllock.sql */2 column username format a63 column object_name format a134 column o_name format …

IISExpress Log 文件路徑

問題 用VS做開發時經常用IISExpress測試web程序,那么在測試過程中生成的Log文件放在哪里了? 答案 情況1 默認情況下 applicationhost.config 文中定義了連個日志文件路徑:IIS_USER_HOME(即%userprofile%\documents\IISExpress\&am…

程序員職業路線圖

今天分享一張程序員職業路線圖:歡迎關注我的公眾號(同步更新文章):DoNet技術分享平臺閱讀原文

jqgrid編輯php,php – 實現jqgrid單元格編輯datepicker

我知道使用datepicker進行單元格編輯是可能的,因為引用了here和here.但是,當我單擊單元格時,沒有出現日期選擇器.下面是相關列的colModel條目.我有datepicker UI可用.在其他示例中,dataInit不包含引號.它在我的代碼中,因為整個colModel是在AJAX請求期間由PHP動態創建的.我將它構…

C#編程規范整理

小編整理了一些C#編程的一些規范,希望對大家有點用處!1、命名方式Pascal命名法:每個單詞首字母均大寫。Camel命名法:第一個單詞首字母小寫,其余單詞首字母大寫。2、有關類的規范1、使用 Pascal 大小寫。2、用名詞或名詞…

利用協議代理實現導航控制器UINavigationController視圖之間的正向傳值和反向傳值...

實驗說明 (1)正向傳值:比如A類里地值要傳給B類用,就是我們先在A類中聲明一個B類對象(當然B類頭文件要import過來),然后把A類中得某個 值傳遞給B類中得某個值(所以需要在B類中先準備一…

oracle索引自增函數,oracle生成動態前綴且自增號碼的函數分享

create or replaceFunction GetInvitationNO(prev varchar2, num1 varchar2, num2 varchar2, sessionSetting varchar2)Return Varchar2Authid Current_User Is PRAGMA AUTONOMOUS_TRANSACTION;-- 需要使用“Current_User”的權限防止無法運行“Execute Immediate”命令 & …

JS字符串轉換為JSON的四種方法筆記

1、jQuery插件支持的轉換方式:示例:$.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以將json字符串轉換成json對象2、瀏覽器支持的轉換方式(Firefox,chrome,opera,safari,ie)等瀏覽器:…

iOS Block全面分析

http://my.oschina.net/leejan97/blog/268536 http://blog.csdn.net/enuola/article/details/8674063 注意事項1.內聯的block中內部定義的變量 自己本身有讀寫權限2.block內部要修改外部變量 需要將外部變量聲明__block3.Block retain是無效的,要想保留block生命周期…

win7 php redis 擴展,Windows中安裝Redis及php redis擴展

Windows10環境安裝Redis:1、下載Redis安裝包;2、解壓到自定義目錄;3、windows鍵R,輸入cmd 進入命令行,進入Redis的解壓目錄;4、運行:redis-server.exe redis.windows.conf 顯示如下,說明啟動成功…

【原創】MVC+ZTree實現權限樹的功能

2、html代碼權限樹:3、JS代碼var setting {async: {enable: true,url: /RoleToPerssion/GetPerssionTree,//異步加載時的請求地址autoParam: ["roleid"],//提交參數type: get,dataType: json},check: {enable: true, //true / false 分別表示 顯示 / 不…

集合習題之列出有限集合所有子集

1、題目(《離散數學及其應用》第6版P75 20 題) 給出可以列出有限集合所有子集的步驟。 2、 解題思路 假設有集合A {a1, a2 … an},列出其所有子集。 先列出含有1個元素的所有子集:{a1},{a2} … {an}然后列出含有2個元素的所有子…

C# partial 關鍵字的使用

C# 2.0 引入了局部類型的概念。局部類型允許我們將一個類、結構或接口分成幾個部分,分別實現在幾個不同的.cs文件中。局部類型適用于以下情況:(1) 類型特別大,不宜放在一個文件中實現。(2) 一個類型中的一部分代碼為自動化工具生成的代碼&…

oracle中的輸入 amp,Oracle之SQL學習

1.Oracle 更改會話(更改oracle中顯示日期的方式)SQL> alter session set NLS_date_formatYYYY-MM-DD;2.使用綁定變量來輸入記錄(可以重復執行,輸入記錄):SQL> insert into test1(id,name)2 values(&id, &name);輸入 id 的值: 5輸入 name…

線段的平移和旋轉

//github不會用&#xff0c;試了很久不知道怎么上傳代碼 #include <iostream> using namespace std;#include <stdlib.h> #include <Eigen/Dense> #include <math.h> using namespace std; using Eigen::MatrixXd; int main() { int option; struct p…

我不問+你不說

閱讀原文很多事我不問你不說這就是距離我問了你不說這就是隔閡我問了你說了這就是尊重你想說我想問這就是默契我不問你說了這就是信任很多事情你看到的聽到的未必是你想象的那樣人生在世多給別人機會解釋多些向別人解釋的耐心人生會少很多遺憾不問、不說、不解釋這不是酷或有個…

怎么安裝redhat linux操作系統,紅帽RedHat Linux5系統安裝指南

介紹如何安裝linux操作系統&#xff0c;以目前市場主流的操作系統為例子進行介紹。1、放入安裝dvd光盤&#xff0c;然后啟動服務器&#xff0c;可得如下畫面&#xff1a;2、按enter鍵&#xff0c;進入如下畫面3、選擇skip&#xff0c;按enter進入&#xff0c;下面畫面&#xff…

Net中的Request和Response對象的理解

Request 和 Response 對象起到了服務器與客戶機之間的信息傳遞作用。Request 對象用于接收客戶端瀏覽器提交的數據&#xff0c;而Response 對象的功能則是將服務器端的數據發送到客戶端瀏覽器。一、Request對象的五個集合&#xff1a;QueryString&#xff1a;用以獲取客戶端附在…

研華工控機u盤啟動安裝linux系統,研華工控機怎么設置u盤啟動

本文主要介紹研華IPC如何設置u盤啟動研華IPC-610 IPC隨XP版一起安裝。有時安裝控制軟件需要在不滿意時卸載。卸載未完成&#xff0c;這使得安裝無法進行&#xff0c;因此您需要將系統恢復到相對純粹的時間。通常&#xff0c;USB磁盤啟動盤的安裝系統首先備份初始純XP作為備份&a…

UVA - 11732 strcmp() Anyone?左兄弟右兒子trie

input n 2<n<4000 s1 s2 ... sn 1<len(si)<1000 output 輸出用strcmp()兩兩比較si,sj(i!j)要比較的次數&#xff0c;結果在long long范圍內&#xff08;相同字符比較兩次&#xff0c;不相同字符比較一次&#xff0c;包括\0&#xff09; 做法&#xff1a;由于字符集…