久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

一名平庸程序員的自白

時間:2019-05-14 17:37:21下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《一名平庸程序員的自白》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《一名平庸程序員的自白》。

第一篇:一名平庸程序員的自白

一名平庸程序員的自白

來源:王昱(2010-5-15 16:30:49)

作者:阿蘭·諾頓(Alan Norton)

翻譯:Purple Endurer

導讀:阿蘭·諾頓揭示了他作為一名平庸程序員的生存之道:如何讓自己一般般的編程技能發揮出最佳效果。

我一直以編寫代碼為樂,起因并不是我精于此道,而要部分歸因于它是一大挑戰。我發現沒有什么比指揮個人電腦在顯示器上顯示“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_BASIC2、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.建立一個博客

這是我后來才認識到的事,其實應該很早就去做。如果你是跟我類似的情況,你應該盡早開通一個博客——盡管還不知道該寫什么。注冊一個域名,買一個 空間。你會驚奇的發現有很多可寫的東西。你可以記錄下你成為一名程序員的過程,或寫一下你感興趣的技術方面的東西。我一直以為沒什么好寫的,可當真正思考 這些問題時,卻發現有很多值得寫的。最重要的事情是開始去做。2.開發一些東西

開發什么并不重要。選一種編程語言,任何一種都行,開始干。你不必去花大量的時間來決定應該使用什么語言。直接開始學一種語言,事實上最重要的是學習編程語言的基礎知識,而不是勞神費力的去選擇一種“最好的編程語言”。我選擇的是PHP。因為它是一種被廣泛使用的語言,在網上有大量的學習范例,我已經通過搭建一個WordPress網站而熟練的掌握了它。沒有絲毫的遺憾。它使我學到了很多 基礎知識。我還學習了其它語言嗎?當然,我后來涉獵了很多腳本語言,我要在下一個項目上試試Ruby。編程語言不斷的在變化,不要只盯著一個不放。3.注冊你的GitHub帳戶

我已經在Bitbucket上有了一個代碼庫。我最初選擇注冊Bitbucket是因為它能提供5個免費的私有庫。后來我決定在GitHub上注冊。事實上,我絲毫沒有拖延,看看我的成果吧。4.向開源項目捐贈代碼

我早該如此做了。我起初低估了做這種事情的重要性,說老實話,我現在仍需要進一步重視。向開源項目捐贈代碼,這是一種很好的學習別人如何編程的方法,并且能把自己的代碼公開。我今晚的就要去列一個準備去參與的開源項目的清單。5.熱心參與

這也是我需要改進的方面。我應該到stackoverflow網站上去回答更多的問題,在一些博客,科技網站上分享自己的東西。去那些網站,讓大家看到你。不在網上露面,就相當于待在屋里不出門卻想找一份做巴黎導游的工作。重復做第2,4和5點 其它一些事情

很明顯,每一個有志向的程序員都應該每天閱讀Hacker News和其它開發/科技/編程類的博客文章。

我打聽到了不少的技術討論會。這周末我準備去參加一個。我會把那里的情況寫出來。我在這里并沒有提讀書。我喜歡閱讀,但我們沒有買任何的關于web開發的書籍。這是我個人的做法。我相信很多人都會建議首先買一本書看看。

找一些能和你討論你的web開發/技術/編程想法的人和群體。如果我做了更多的第5項,我可能找到了更多的這樣的人。

好了,這就是我要說的。這些就是在過去的一年里我成為一個程序員的成長之路上做到事情。如果有人覺得在這個清單里我還應該加入什么,請給我留言。我永遠都希望聽到新的觀點。

第三篇:如何做好一名程序員

如何做好一名合格的程序員

一、90%的編程工作來自內部軟件

(90% of programming jobs are in creating Line of Business software)計算機專業的學生,可能有一種印象,覺得大部分程序員,都在編寫公開出售的軟件或者通用軟件。

這種看法是不對的。大部分程序員,實際上編寫的是不公開的企業內部軟件,比如追蹤費用的軟件、優化裝運成本的軟件、幫助記賬的軟件、設計新部件的軟件、計算保單價格的軟件、識別惡意訂單的軟件等等。

各種各樣的商業公司,開發內部軟件,解決它們自己的問題。市場上對程序員的大部分需求來源于此,只有極少數程序員直接編寫面向外部顧客的軟件。內部軟件的開發,通常非常乏味,令人厭倦。因為它們的技術復雜性低、技術決策非常保守、預算很少、缺乏長遠考慮。但是,世界上大部分編程工作都是這種。

二、別人雇你的目的,是讓你創造利潤,不是讓你編程

(Engineers are hired to create business value, not to program things)商業公司最關心的(或者說唯一在乎的)事情,就是增加收入、降低成本。因此,它們實際上需要的不是程序員,而是能夠幫助它們增加收入、降低成本的人。

開發優美的軟件,解決技術難題,編寫沒有 bug 的代碼,這些都不是商業公司的目的。它們雇傭你,是為了讓你幫它們完成某個可以增加收入、降低成本的項目,而不是因為你是 geek。

你個人對于公司的唯一價值,就在于你能多大程度上為它們增加收入、降低成本。

三、不要自稱為程序員

(Don't call yourself a programmer)

很多公司的經理不懂計算機,在他們心目中,“程序員”就是一群高成本的勞動力,只會在一臺復雜的機器上干一些難懂的事情。

如果你自稱為“程序員”,當公司需要壓縮成本的時候,某些經理首先就會想到解雇你。有一家公司叫 Salesforce,口號是“沒有軟件”,意思就是如果經理們購買了他們的服務,就不再需要別的軟件管理銷售業務了,也就是說,不再需要自己雇傭程序員了。

正確的做法是,你應該把自己描述成與增加收入、降低成本有關系的人,比如“xx 產品的開發者”或“改進者”。有一個 Google Adsense 程序員的自我介紹,是這樣寫的:“Google 公司97%的收入,與我的代碼有關。”

四、不要限定自己

(You are not defined by your chosen software stack)

年輕學生經常會問,應該選擇哪種語言或平臺?學會 Java,是不是比學會.NET 容易找工作?

過分強調某一種語言或平臺,都是不必要的。如果你把自己限定為 Java 程序員或.NET 程序員,你就已經輸了,因為首先你不應該自稱為程序員(理由見上一點),其次這種限定使得你自動被排除在世界上大多數編程工作之外。現實生活中,學會一種新語言,只需要幾個星期,然后再過半年到一年,你

就會變成老手。那時,根本沒人在乎你以前用什么語言。

天才程序員是很少的,可是需要天才程序員的工作機會卻很多很多,大多數場合都是需求遠遠大于供給。這意味著,即使你不是天才程序員,只要你是一個優秀工程師,那些招聘公司也會立刻錄用你,因為它們知道招聘到天才程序員的機會微乎其微。(重復一遍,所謂“優秀工程師”,就是你的履歷上有一連串增加收入、降低成本的記錄。)

某些公司的人事部門,會根據某個關鍵詞(比如 Java 或.NET)過濾簡歷。雖然這樣的公司根本不值得去,但是如果你真的想過這一關,也很容易:投入幾個晚上和周末,在你當前的項目中設法用到這個關鍵詞,然后再把它寫進簡歷就行了。

五、如何提高求職時的談判能力?

(How do I become better at negotiation?)

(1)記住你不是在求職,不是在展示編程技巧,而是在推銷某種商業需求(增加收入或降低成本)的解決方案。

(2)面試時,要有自信,要平等的對話。你要的是一個互利的錄用合同,不要每次對方提出要求,你都說 Yes。

(3)雇主可能會問“你的上一份工資是多少”,他們其實在說“給我一個理由,壓低你的報酬”。你要想好如何適當地回答這個問題。

(4)要還價。這里不僅僅指錢,還指其它你關心的方面。如果你無法要求更高的薪水,那就試著要求更多的假期。

(5)在對方決定錄用你以后,才開始討論薪水。因為那時,他們已經在你身上,投入了大量的時間和金錢,產生了一定的成本,此時他們可能覺得一些小問題已經不值得再糾纏了,比如每年的工資增加幾千元。

六、創業公司是否適合應屆畢業生?

(Are startups great for your career as a fresh graduate?)

如果你一畢業就加入創業公司,最可能的結果是,接下來幾年你都工作得非常辛苦,然后公司悲慘地失敗了,你失業了,不得不又去另一家創業公司工作。如果你真的想去創業公司,應該首先找一家大公司干上兩年,攢一點錢,積累一些經驗,然后精心挑選后再去創業公司。

在創業公司工作,一般情況下,你遇到的都是創業者。他們大多數人沒有能力在兩年后雇傭你;而在大公司工作,你遇到的都是其他大公司的人,他們中很多人將來有能力雇用你或者幫你介紹工作。

七、在創業公司工作是否值得推薦?

(So would you recommend working at a startup?)

選擇創業公司,就是選擇一條職業道路,而不是選擇一種生活方式。可惜很多人把這兩者顛倒了,他們推薦創業公司,實際上是在推薦一種你感興趣的生活方式。

如果你確實喜歡這種生活方式,老實說,你在大公司里也可以得到它們。在許許多多大公司里,你都有機會鉆研最新的技術,而且還能5點半準時回家照顧孩子。

八、溝通技能是最重要的職業技能

(Your most important professional skill is communication)

前面說過,工程師被雇傭,不是因為會編程,而是因為能夠創造商業價值。所以,你讓人們相信你能創造價值,這是幫助你找到工作的最重要的能力。這種

能力與你真的能創造多少價值,實際上聯系不是很緊密。

我認識的一些最優秀的程序員,往往拙于表達。因此,別人不是不想與他們一起工作,就是低估了他們的價值。相反地,如果你看上去很會編程,并且很善于表達,別人就會真的這樣看待你

第四篇:碼農故事:一位中級程序員的自白(寫寫幫推薦)

碼農故事:一位中級程序員的自白

我是一名中級程序員。

我有相當不錯的基本技能。我犯了足夠多的錯誤才明白為什么那些被稱為錯誤。我很清楚我還需要了解更多東西。最重要的是,我知道那些東西大概是什么,并且我正在努力而積極地提升自己。

勇敢地承認自己不過是水平一般的程序員,這花了我一些時間。我不再感覺有必要去抓住那些我并不了解的觀點。當人們發現我對某樣東西不了解時,我也不再感到害怕。事情并非從來如此。你可能對此不以為然,但是我曾經自詡為編程大師。

這種對自己能力的不正確的評估,很大程度歸因于我在一個相對封閉的環境中學習技能。在過去那些日子里,有電腦就已經很特別了;更不用說知道如何使用了。

在我自己看來,我當時是一個知識淵博并且經驗豐富的程序員。在我不到20歲的時候我已經用C++、Pascal、C#、JavaScript寫過程序。當然我最引以為傲的是,曾經徒手用PHP編了一個電子商務平臺。

事實上,我可能只是人們平時談話中提到的“我有個朋友的兒子很會寫網站”。我和別的程序員沒有任何交流,所以我僅有的比較對象是我周圍的人;要么是一些根本不在意電腦的人,要么是那些會用電腦,但是在IE窗口中塞了5個沒用的工具欄的人。那些可能會說“我的網壞了”這種話的人。

接下來這個故事就是講我如何產生自己很厲害的幻覺的。

天才的起源

當我九歲的時候,我的一個朋友家里有衛星電視。而在我們家里,我們只能收到四個英國的頻道(你能想象第五頻道出現之前的日子嗎?),我熱切地盼望有一臺普通的電視機。我們所需要的只是那些“衛星盤子”,或者我稱為“衛星”的東西——那樣我就隨時可以看QVC臺或者Eurosport臺。由于隱約意識到自己的某種天分,我開始搭建自己的衛星!我的設計包括了一把打開的傘和一條銅質音頻線,一段接在傘的金屬柄上,另一端接在電視機天線上。必須承認我的設計有一些缺陷,并直接導致我沒有得到想要的結果。但是這個小故事僅僅想表達我童年和青少年時期對技術的渴望。我認識的人中從沒人想過制造“衛星”。幾年后,當我父親的辦公室得到一個14.4k的貓時,我成為了最早一批網民一員。我能回憶起花了整個星期六下午的時間等待這個火焰漫畫圖標被加載,每個幀的動畫大概要過一分鐘才顯示。我甚至用Netscape搭建了我自己的網站。由于不知道互聯網的架構,我把所有的HTML文件存放在本地,并且期待有一天他們會出現在互聯網上。然而這些細節并沒有削弱一個事實:我認識的人中沒有一個制作了他們自己的網站。

在我十多歲的時候,我發現了自己天才中的黑暗面。在裝備了Jolly Rogers的食譜后,我和一群小伙伴們準備動搖整個九十年代英格蘭的技術和道德根基。破解電話系統是我們的專長。我們用手提式聲音耦合器和公用電話,給我們在ICQ上認識的美國姑娘們打免費國際電話,以及在私人交換機上設立語音信箱。最終學業和滑板阻止了我們在這條路上越走越

遠,如果沒有這些干擾,我們無疑已經在制造凝固汽油,黑進政府網站并且徒手殺人了。盡管我們沒有把自己的能力發揮到極致,但事實是除了我們沒有其他人哪怕擁有聲音耦合器。

盡管到那個時候我已經經歷了一些冒險和失敗,我還是缺少一些東西。我的想法總是要超前我自身能力好幾步-正如在“衛星”一節里體現出來的。我需要一種把我腦海中想法表達出來的方式。我需要一個直接的介于我想象和現實之間的接口。

Fuck 生成器

真正的轉機出現在我十四歲的時候。我購買了一份PC Plus雜志,其中附贈了帶有完整版Borland C++編譯器的CD。我安裝了,并且認真學習了雜志上的“hello world”教程。

就這樣,一個嶄新的世界在我面前打開了。物質世界對于我想象力的限制消失了。我的創造力被解放了,我腦海中的大教堂要成為現實了!我該把這個新工具用于怎樣崇高的事業呢?很顯然,Fuck生成器。

簡單而優雅的Fuck生成器是一個命令行程序,也是我即”hello world”之后第一個里程碑。程序開始運行后會提示用戶輸入一個數字n,然后它會輸出字符串”fuck”,n次。最后用戶被提示可以重復以上過程或是退出。盡管功能有限,我還是沉醉于我所品嘗到的成就。這是任何程序員都能享受到的一種快感,即看著機器執行你的命令,不管這個任務有多簡單。它在運行了,并且你知道為什么它能夠運行。它除了在那里運行不會做任何別的事。

過了些時日,另一期的PC Plus附贈了一個完整版的Borland Delphi。有了這個,我把程序升級為帶有窗口界面并且可以隨機生成彩色的4種不同的臟話。當別的孩子在玩PlayStation的時候,我正在投身于一項更有意義和創造性的事業,我在生成很多fuck。

到那時,一切都預示著我是注定要成大事的。我要向世人展示我真正可以做的事情。我的巨著

在90年代晚期,我為一家小型并且擴張迅速的郵件訂購零售商創建了一個網站。一開始,這個站點只包含一些靜態的頁面——關于商品的小冊子,一個導航菜單和一個訪問數量計數器。

當我們的訪問量越來越大時,我們決定加入電子商務功能。我們遍歷了一些現成的工具包,它們的質量從差到極差不等。我印象中第一個版本大部分建立在擺弄cgi腳本以及怪異地把

    <button id="noyxc"></button>
    • <blockquote id="noyxc"><form id="noyxc"></form></blockquote>
      <label id="noyxc"></label>
      <cite id="noyxc"></cite>

    • <button id="noyxc"></button>