程式設計生涯。 第 3 章 大學

故事的繼續 《程式設計師的職業生涯》.

夜校結束後,就該上大學了。 我們城市有一所技術大學。 它還有一個「數學和電腦科學」學院,該學院有一個「電腦系統」系,在那裡培訓未來的IT工人——程式設計師和管理員。
選擇餘地很小,我申請了「電腦工程程式設計」專業。 前面還有兩場入學考試。 在語言和數學方面。
考試之前進行面試,並選擇培訓形式 - 預算或合同,即免費或收費。

我的父母參加了我的面試,他們對錄取感到擔心。 當然,他們選擇了合約形式的培訓。 順便說一句,每年的費用約為 500 美元,這在 2003 年是一筆很大的錢,尤其是對我們這個小鎮來說。 我清楚記得父親與招生辦公室女孩的對話:
一個女孩:你可以嘗試在預算範圍內通過考試,如果不行,就改用合約。 您可以分期付款。
父親: 不,我們已經決定要申請合約了
一個女孩: 嗯,為什麼,你不用冒任何風險
父親: 不,這仍然是一個風險。 告訴我,每個人都在申請合約嗎?
一個女孩: 是的,每個人都這樣。 大概只有白痴才做不到
父親:那我們就有機會了……他笑著說道,然後我們就簽了入學文件

當然,高中時的表演我父母還記憶猶新,所以這些年來我明白他們為什麼這麼說。

夏天,入學前,我繼續用祖母從退休金給我的 40 美元買書。
來自令人難忘和重要的:
1. “UML 2.0。 物件導向的分析與設計》。 這本書教會了我如何設計任何複雜性的軟體、思考架構、將所有內容分解為元件、編寫用例以及繪製 UML 圖。 這是前輩、領導和架構師需要的知識。 那些在只有想法描述的情況下從虛無中具體化系統的人。
我認識一些已經超過 30 歲的人,他們仍然無法做出決定,除非有來自上層、來自更高層級的開發人員的命令。 在自由工作和遠距工作中,當您經常與客戶一對一工作時,這些知識也是非常寶貴的。
它們也與創建新應用程式和服務的獨立開發人員相關。 儘管很少人費心去細節設計。 這就是為什麼我們擁有如此高品質的軟體,吞噬所有內存,並且用戶體驗不正常。
2. “ANSI C++ 98 標準”。 不算是一本書,但它包含了 800 多頁的背景資訊。 當然,我並沒有逐節閱讀,而是在開發我的C++編譯器時參考了特定的語言規則。 在學習和實施該標準之後,該語言的知識深度無法用任何美妙的形容詞來形容。 我們可以說您了解語言的一切,甚至更多。 研究該標準需要花費很長時間、艱苦的工作。 但我還有 5 年的大學生活,所以沒有人逼我
3. 《Delphi 6.實用指南》。。 這是向 GUI 和美觀的世界的快速飛躍。 幾乎沒有入門門檻,而且我對 Pascal 已經很了解了。 在大學學習期間,我用 Delphi 編寫了大部分商業程式。 這是為大學研究生、小型企業和政府會計設計的軟體。 機構。 然後還有幾個自由訂單。 XNUMX 年代中期,Delphi 主導了 Windows 開發市場。 到目前為止,在本地商店的結帳處,您可以看到具有熟悉的字體和控制項的程序,這立即將 Delphi 應用程式與任何其他應用程式區分開來
4. 《MFC教學》。 掌握了 Delphi 後,繼續用 C++ 建立 UI 就順理成章了。 這要困難得多,並不是一切都順利並且可以理解。 不過,我也把這項技術帶到了商業專案的應用階段。 一家德國防毒公司分發了我的程序,該程序至今仍是用 MFC 編寫的。
5. “3 個帶有 MSDN Library 2001 的磁碟”。 我當時還沒有上網,而且據我所知,MSDN Library 在 2003 年還沒有上線。 無論如何,對我來說,在本機 PC 上安裝 MSDN 參考書並輕鬆找到任何 WinApi 函數或 MFC 類別的文件都更容易。
程式設計生涯。 第 3 章 大學
2002-2004 年期間閱讀的最重要的書籍

這些是 2002 年至 2004 年期間閱讀的書籍。 當然,現在這是破爛的遺產,正在使用.NET和Web技術批量重寫。 但這是我的路,也許你們中的一些人也有類似的路。

第一學期

暑假即將結束,又到了大學入學考試的時間。 一切都很順利。 我通過了語言和數學考試,併入讀電腦系統程式設計專業的第一年。
九月一號,如我所料,我去上了人生的第一堂課。 「學生時代是人生中最燦爛的時光,」我媽媽告訴我。 我心甘情願地相信了。
第一天,三對通識科目通過,大家在群組裡互相認識,整體給大學留下了愉快的印象。
最後他們開始教我們真正的 C 程式設計! 此外,他們還教授電腦科學的歷史、數位技術以及許多其他與我相關的資訊。 甚至還發誓。 這個分析很有用,因為它讓我更深入地理解了深受尊敬的唐納德·高德納 (Donald Knuth) 所寫的內容。

程式設計課程對我來說是在一種積極的氛圍中進行的。 最後,人們向我尋求幫助。 我感到被需要。 課程一開始,我們就被安排了編寫程式的任務。 任務設計為一對半,然後進行半小時的測試。 我在 3-5 分鐘內完成了作業,剩下的時間我在辦公室裡走來走去,幫助其他人解決問題。
沒有足夠的電腦供整個團隊使用,所以大多數時候我們一次坐在兩台電腦前。 看到我的能力,三四個人,有時甚至五六個人坐在我的辦公桌附近,毫不猶豫地坐下來學習我幾年前從克尼根和里奇的書中學到的東西。
我的同學看到了我的能力,自己提出問題,或主動提出課後一起出去玩。 這就是我認識了很多朋友的方式,其中大多數人至今仍然是朋友。

冬天,到了第一堂課的時間。 總共需要選修 4 門科目:兩類高等數學、歷史和程式設計。 一切都過去了,有的2分,有的4分。然後我被自動分配到程式設計。 老師們已經了解我的技能,所以他們認為沒有必要測試我。 我很高興地帶著我的記錄本出現在會議上並立即在上面簽名,正要回家時,我的同學讓我留下來站在門外。 出色地。 我站在辦公室出口的窗台上,開始等待。 我旁邊還有一個小伙子,也自動通過了考試。
「為什麼留在這裡?」我問道
—「我想透過解決問題來賺錢。 你為什麼在這裡?
- 「我也是。 我只是不會賺錢。 如果你需要幫助,那麼出於我的善意,我會做出決定。”
對手猶豫了一下,低聲回應了一句。

過了一會兒,同學們開始離開觀眾席,帶走了摺好的考捲紙。
「幫我決定,」第一個冒失鬼問。 「好吧,我現在就決定。」我回答。 不到五分鐘,我就用原子筆在一張皺巴巴的紙上寫下了答案,然後還給了我。 看到這個計畫奏效後,人們開始更頻繁地離開觀眾席,有時甚至一次兩三個人。
我工作的窗台上有三疊樹葉。 一包包含新到的 TODO 表格。 我面前是一張“進行中”,旁邊放著一包“完成”。
這是我最美好的時光。 整個團隊將近 20 人,都向我尋求協助。 我幫助了所有人。
而那個想賺錢的傢伙幾分鐘後就匆匆離開了,意識到這裡沒有什麼好抓的,所有的注意力都集中在利他主義者身上。
全組都以四、五年級的成績通過了考試,我現在有4個朋友,在程式設計方面擁有不可動搖的權威。

第一筆錢

冬季課程結束後,謠言傳遍了整個教職員工,說有一個人可以解決任何程式設計問題,而我們被分配在家裡或課程期間。 而且口碑不僅在新生中傳播,也在高年級學生中傳播。
正如我已經寫過的,在考試的「最佳時刻」之後,我與小組中的每個人都建立了友好的關係,並且我們開始與其中幾個人進行非常密切的溝通。 我們成為了真正的朋友,並在大學之外度過了許多時光。 為了簡單起見,我們稱他們為 Elon 和 Alen(暱稱與真實暱稱接近)。
我們直呼埃隆的名字,但阿蘭這個綽號是為了紀念阿蘭德龍,因為他有能力誘惑任何美女。 女孩們確實圍著他轉,數量各不相同。 在結識新朋友和當晚建立關係方面,阿蘭德龍無人能及。 他是真正的女性領袖,這對大多數 IT 專家來說是完全不尋常的。 除了風流韻事之外,阿蘭的職業也是設計師。 如果他需要畫一些東西,例如當時流行的 Web 1.0 格式的閃爍橫幅,那麼他就能輕鬆完成。

關於埃隆,可以說的還有很多。 直到大學畢業十年後的今天,我們仍然與他見面。 在他的最初幾年裡,他是一個瘦弱、沉默寡言的人。 (對於今天開吉普車的大臉傢伙來說,情況就不同了)。 然而我還是一樣──瘦弱、沉默寡言。 因此,我認為我們很快就找到了共同語言。
經常下課後,我、伊隆和艾倫聚集在一個蓋著防水布的啤酒館。 首先,它就在大學的街對面,其次,只要一個「盧布」和50戈比,你就可以在兩個小時的縱火派對上得到一些好東西。 例如生啤酒和餅乾。 但重點不同。
埃隆和艾倫來自其他城市,住在租來的房間裡。 他們經常缺錢,有時甚至得挨餓。 當他們在卡上收到 10 美元獎學金時,他們在同一天慶祝了幸福的時刻,然後是時候“勒緊褲腰帶”並依靠上帝賜予的生活了。

當然,這種情況促使訪問學生尋找賺取額外收入的方法。 在他們面前,一臂之遙,坐著一個“明亮的頭”,就是我。 它也很柔韌,很少拒絕幫助別人。
我不知道我描述的情況是否正確,但最終這些酒吧聚會促成了我職業生涯中第一家 IT 公司的創建,名為 SKS。 這個名字只是由我們姓氏的第一個字母組成。 我們年輕的公司以三位創辦人為代表,在接下來的四年裡撕裂了競爭對手和整個大學。

埃隆是一名 ROP。 也就是銷售部的主管。 也就是說,他的職責包括為我們的外包業務尋找新客戶。 銷售管道是橫排印刷的A4紙宣傳單,上面簡單寫著:「解決程式設計問題」。 下面是伊隆的電話號碼。
這種戶外廣告被放置在每個樓層,可以出現學習程式設計的學生。
另外一個在顧客忠誠度方面更強的方法是透過口碑傳播的銷售管道。

商業模式很簡單。 一位大學生透過推薦或廣告聯繫了我們。 他描述了一個需要在一定期限內解決的程式設計問題,我以學生價格解決了它。 埃隆參與銷售並獲得了他的佣金。 阿蘭德龍 (Alain Delon) 很少參與我們的業務,但如果我們需要設計、圖片或吸引更多客戶,他總是會提供協助。 憑藉他的魅力,他為我們帶來了很多新朋友。 我所要做的就是以每天 5-10 個任務的速度處理這個管道。 截止日期很嚴格——不超過一周。 通常情況下,這件事必須在昨天完成。 因此,這樣的情況很快教會了我如何「心流」地編寫程序,而不是被5,9級地震或窗外重大事故等每一件小事分散注意力。

在最熱的季節,開學前,也就是20月和2月,我的電腦上似乎有整個大學的任務。 幸運的是,他們中的大多數都是同一類型,特別是當我們由整個集團的代表代表的批發商聯繫時。 然後可以執行 3 項任務,例如在組譯程式中,僅更改 2003-2005 行。 在這樣的季節裡,線索如河水般流淌。 我們唯一缺少的是軟碟。 XNUMX-XNUMX年,本市貧窮學生還沒有網路轉帳的情況。 此外,沒有付款保證,現在稱為託管。 因此,SKS公司作為訂單履行者,在大學境內進行了預約,我們給了 軟碟 與解決方案。 幾乎沒有退款(來自英語退款 - 應客戶要求退回付款)。 如果他們能了解我在軟碟上的 readme.txt 檔案中添加的內容,每個人都會很高興並獲得 4-5 分。 儘管如此,一個完整運行的程式的簡單演示也常常引起教師的驚嘆效果。

當然,價格是荒謬的,但我們還是按數量買的。 例如,一項典型的家庭任務成本為 2-3 美元。 課程作業 10 美元。 候選人工作計畫中的頭獎曾一度落空,一名準備答辯的研究生申請時的獎金高達 20 美元。 旺季時,這筆收入可以乘以100個客戶,最終超過了城市的平均薪資。 我們感覺很酷。 他們可以負擔夜總會的費用,並在那裡盡情享受,而不是為最後一分錢而窒息。

從我的技能的角度來看,它們隨著每個新的學生任務成倍增加。 我們開始收到其他系的申請,有不同的訓練計畫。 當我們轉向 C++/MFC 時,一些高年級學生已經在使用 Java 和 XML 來充分發揮其潛力。 有些需要彙編程序,有些需要 PHP。 在解決問題時,我為自己學到了一大堆技術、函式庫、資料儲存格式和演算法。
這種普遍主義至今仍伴隨著我。 開展專案時也會使用各種技術和平台。 現在我可以為任何平台、作業系統或裝置編寫軟體或應用程式。 當然,品質會有所不同,但對於我主要處理的業務來說,預算通常很重要。 對他們來說,一個人的管弦樂團意味著削減預算,就像我可以用我的技能取代的開發人員數量一樣多。

如果要說在大學學習帶給我的最大收穫,那就不是演算法或哲學的講座了。 而且它不會像人們對大學的流行說法那樣「學會學習」。 首先,這些人是我們在培訓後仍保持友好關係的人。 其次,正是這家SKS公司將我塑造成專業的開發人員,擁有真實且多樣化的訂單。
我想記住一句話,非常適合這個故事的這一部分: 當其他人開始使用他的程式並為其付費時,一個人就成為程式設計師。.

由此,SKS公司品牌不僅在學生圈家喻戶曉,在教師界也家喻戶曉。 甚至有一次,一位老師來到我家,讓我幫他寫一個程式來滿足他的科學需求。 反過來,他在他的專業領域也為我提供了幫助。 我們都全神貫注於工作,以至於天一亮就睡著了。 他坐在沙發上,我坐在電腦前的椅子上。 但他們都完成了自己的任務,並且都對彼此的工作感到滿意。

轉向命運

大學四年級開始了。 完成後授予學士學位的最後課程。 實際上沒有通識教育科目,只有與電腦和網路相關的科目。 現在,有時我會後悔自己沒有時間或沒有對相同的電子設備或網路的內部結構表現出興趣。 現在我出於必要而完成這個,但我確信這些基本知識對於任何開發人員都是必要的。 另一方面,你不可能知道一切。
我正在編寫自己的 C++ 編譯器,它已經能夠根據標準檢查程式碼錯誤並產生彙編指令。 我夢想能夠以每個許可證 100 美元的價格出售我的編譯器。 我把這個乘以一千個顧客,然後在心裡
被傳送到 Hammer 上,50 Cent 的低音從揚聲器和後座的帥哥們中傳出。 19歲你能做什麼-這就是優先事項。 我自製的編譯器的竅門是它會產生俄語錯誤,而不是 Visual C++ 和 gcc 中的英語,這不是每個人都能理解的。 我認為這是世界上尚未發明的殺手級功能。 我認為沒有必要再多說。 它沒有達到銷售目的。 然而,我對 C++ 語言有了深入的了解,這些知識一直支撐著我直到今天。

在我的第四年,我上大學的次數越來越少,因為我知道大部分課程。 對於我不知道的事情,我透過與一位懂電子或機率論的學生交換來解決。 我們當時沒有想到的。 還有一條電線上的隱形耳機,答案是透過耳機聽寫的。 並跑出教室,讓專業的大師在 2 分鐘內為你寫出整個考試的答案。 這是一個偉大的時刻。
在同一課程中,我開始考慮一份真正的工作。 擁有辦公室、真正的商業應用和體面的薪水。
但當時在我們這個城市,你只能找到一份程式設計師的工作
“1C:會計”,根本不適合我。 雖然出於絕望,但我已經做好準備了。 當時,我的女朋友向我施加壓力,要求我搬到單獨的公寓。
否則,和父母隔著牆睡根本不值得。 是的,我已經厭倦了解決學生問題,我想要更多的東西。

麻煩不知從何而來。 我想到在 mail.ru 上登廣告,說我正在尋找一份薪水為 300 美元的 C++/Java/Delphi 程式設計師職位。 這是2006年的事。 他們的回答基本上是這樣的:“也許你應該寫信給比爾蓋茲提出這樣的薪資要求?” 這讓我很沮喪,但在一堆類似的答案中,有一個人讓我成為了自由工作者。 這是在我們貧窮的拉斯維加斯做我知道如何做的事唯一能賺大錢的機會。
就這樣,大學的學習順利地進入了自由業交流的工作。 結束大學這個話題,我們可以說:我沒有上五年級。 有一個節目和「免費參加」這樣的概念,我使用了5%。
唯一需要做的就是捍衛專業文憑。 在朋友的幫助下我成功地做到了這一點。 值得一提的是,到這門課程時,我已經從父母那裡搬到了租來的公寓,並買了一輛新車。 這就是我作為專業開發人員的職業生涯的開始。

接下來的章節將專門討論單一專案、最嚴重的失敗和最不合格的客戶。 自由職業生涯從 5 到 40 美元/小時,創辦了自己的新創公司,我如何被禁止參加 Upwork 自由工作交易所,以及我如何從自由職業成為世界第二大石油公司的團隊領導。 我如何在辦公室和創業後重返遠距工作,以及如何透過社交和壞習慣解決內部問題。

待續...

來源: www.habr.com

添加評論