我為何在 35 歲時沒有成為一名程序員

我為何在 35 歲時沒有成為一名程序員
從XNUMX月初開始,出版了《程式設計師的童年》、《N年後如何成為程式設計師》、《我如何從其他產業轉行到IT》、《程式設計之路》等主題的成功出版品等等,如一條寬闊的溪流湧入哈布爾。 類似這樣的文章一直在寫,但現在變得特別擁擠。 心理學家、學生或其他人每天都會寫作。

每一篇文章中都會響起一首熟悉的歌曲:作者建議的主要內容是「嘗試」、「不要放棄」、「不要害怕」和「向你的夢想前進」; 在評論中你經常會遇到這樣的觀點:如果你從小就喜歡電腦,那麼最終使用它們就不足為奇了。 以我的傳記為例,我想引導讀者認識到初始條件可能比付出的努力更重要。 對公正世界的信念 促進心理安慰,但並不能非常準確地反映現實。

不允許:開始

我為何在 35 歲時沒有成為一名程序員

Энциклопедия профессора Фортрана для старшего школьного возраста

我的故事始於童年時期電腦科學教室裡的一台克爾維特電腦。 但這是後蘇聯教育黑暗領域中的一縷偶然的曙光——當時,電腦科學的正式學習必須從 11 年級開始。 我剛剛報名參加了隨機開始的國中電腦教育選修課。 每週,他們都會為我們打開一間黑暗辦公室的厚重鐵門,窗戶上裝有鐵欄,並向我們展示如何使用 Corvette BASIC 在螢幕上顯示「Hello」。 這很棒,但好景不長。

顯然這是某種教育實驗,六個月後就結束了。 我沒能學到很多東西,我只是設法變得感興趣。 但當選修課結束時,他們普遍向我解釋:電腦其實不適合小孩子;人們在十一年級之前不會長大學習電腦科學。

值得注意的是,當時風風火火的九十年代盛行,當時先驅者殿堂裡的各種技術圈已經大部分關閉,家用電腦還沒有變得司空見慣。 因此,你不能僅僅因為想學習技術或電腦就獲得它們。 獲勝者要不是那些融入新市場經濟的人的孩子,就是那些每天接觸電腦的人的孩子——工程師、電腦科學教師、各部門的「技術專家」。

例如,很多年後我得知,大約在同一年,我(未來的)同學的父母給了他一張 ZX Specrum。 當然是為了遊戲。

最有可能的是,我仍然被排除在新的數位世界之外。 我在學習和成長過程中充滿信心,相信我現在不會比十一年級更早接觸電腦。 有趣的是,這就是最終發生的事情。 但大約在此之前的幾年,一個真正的奇蹟發生了——作為當地慈善活動的一部分,我收到了一台電腦。

看來我要彌補失去的時間了——但生活又做出了調整。

有句俗話說,如果你給一個乞丐一百萬美元,他將不知道該如何處理。 當然,如果他是一個聰明的乞丐,他會花一百萬的一部分來進行培訓,包括學習如何處理金錢。 但這仍然不能與有錢長大的人能做的事情相比。 當一個人超越了他的社會階層的界線時,這樣的災難就會發生。

由於在正常情況下我永遠不可能擁有一台電腦,我也沒有錢購買任何課程或相關產品。 基於同樣的原因,我在可以告訴我一些事情的人之間沒有聯繫;我根本不屬於這個圈子。 計算機實際上是另一個世界的一部分。 不是像現在這樣的普通家用電器,而是類似精靈神器的東西。 因此,我無法嘗試並從自己的經驗中學到一些東西——“你會打破一個昂貴的東西。” 因此,我不能告訴我的同齡人,我家裡有一台電腦——風華正茂的九十年代已經到來,你還記得嗎? 因此,交換資訊的機會急劇減少——我無法向任何人尋求建議,我無法提出問題或分享經驗。 網際網路? 什麼? 什麼互聯網? 也許菲多? 是的,我們連電話都沒有。

你可以去圖書館,免費找書籍或參考書,然後第二個問題就出現了。 對於這些條件來說,這台計算機太先進了。 上面安裝了Windows 95。

我拿了圖書館裡關於電腦的主要(唯一)書籍——著名的海因/日托米爾斯基教科書《資訊學和電腦科學基礎》,封面是紅色的。 現在您可以在 Internet 上找到它,並感受其內容與運行 Windows 95 的成熟電腦的內容之間的對比。 更糟的是,即使是盜版軟體也很難獲得——距離 DVD 商店的鼎盛時期還有幾年,這些商店的名字很吸引人,「All Office Software - 2000」。 然而,當它們出現時,我仍然沒有錢買光碟。

順便說一句,在這附近的某個地方,11 年級的“官方”計算機科學時間已經到來- 我們收到了我在91 年提到的教科書,真正的任務是繪製簡單的算法樹(用鉛筆在紙上)並使用 Lexicon 文字編輯器。

形式打屁股

我為何在 35 歲時沒有成為一名程序員

Настоящие программисты и я

結果,我的電腦開發這幾年不幸陷入停滯。 我閱讀Windows幫助,不擇手段地在軟碟上獲得了電腦的各種程序,並透過編輯autoexec.bat檔學會了成為「高級用戶」。 我從學校帶來了字典,但是什麼呢? 總的來說,當我終於能夠回到童年並開始使用 qBasic 編程時,視覺化介面已經佔據了主導地位。

這種對比在很大程度上摧毀了我深入研究常規文字程式設計的動力。 原因是我開始真正沉浸在電腦世界的 Windows 95 的圖形與我當時所知道的語言的單調文字螢幕之間的令人壓抑的差異。 上一代程式設計師很高興在編寫 POINT(10,15) 時螢幕上出現一個點。 對他們來說,程式設計就是「在螢幕上畫出不存在的東西」。 對我來說,螢幕上已經充滿了表單和按鈕。 對我來說,程式設計就是「讓按鈕在按下時執行某些操作」——而讓按鈕本身很無聊。

作為一個抒情的題外話,我想指出,現在程式語言的螺旋式發展又回到了同樣的情況。 現在,所有「真正的程式設計師」再次在記事本中設計介面,而每個程式設計師現在都再次有義務成為設計師。 同樣,您需要專門使用程式碼在螢幕上放置按鈕、輸入視窗和其他控制項。 因此,在這種情況下,經典的 80/20 規則如下所示:“我們花費 80% 的時間通過手動鍵入代碼來創建界面,並用 20% 的時間設置界面元素的行為。” 為什麼這是在 DOS 和 Pascal 時代——我明白; 沒有其他選擇。 當每個人都已經看到並接觸過 VB、Delphi 和 C# 時,為什麼現在會存在這種情況 - 我不知道; 我懷疑問題在於開發環境是收費的還是免費的。 方便的東西總是很昂貴,不久前還出現了上述環境的免費版本。

這就是為什麼網路程式設計與我擦肩而過的原因之一。 不過,正如很久以後的事實證明,創建作品集並成為程式設計師是最容易的。 我嘗試同時掌握 PHP 和 JS,但不想「在記事本中編寫程式碼」。 嗯,另一個原因是互聯網在 2005 年或 2006 年出現在我的生活中 - 在那之前它位於世界圖景的邊緣。 與手機一樣,「富人使用的東西」。

因此,我放棄了所有 DOS 編程,一頭扎進 Access Northwind 培訓資料庫,它為我提供了表單、按鈕、巨集和應用程式編程的巔峰之作 - VBA。 也許在那一刻我終於決定將來我想成為一名程式設計師。 我買了一張Visual Studio 光碟,買了一本關於VB 的紙本書(!),開始製作計算器和井字棋,很高興整個設計在幾分鐘內就在表單上創建了,而不是手工寫出來。 自從電腦不再是稀有物品,我終於可以走出去,和志同道合的人討論程式設計了。

在這些討論中,我發現 VB 已經成為過去,是一種為秘書發明的垂死語言,所有真正的人都用 C++ 或 Delphi 編寫。 因為我還記得Pascal,所以我選了Delphi。 也許這是我在成為程式設計師的路上遇到的一系列障礙中的下一個錯誤。 但我選擇了阻力最小的路,因為我想盡快看到工作成果。 我看到他們了! 我還買了一本關於 Delphi 的書,我把它與我已經知道的 Excel 和 Access 聯繫起來,結果我創建了一個初步近似的現在被稱為「BI 系統」的東西。 可悲的是,現在我已經安全地忘記了所有的 pascal,因為我已經十年沒有碰過它了。

當然,我曾經兩次嘗試上大學成為一名程式設計師。 在我們的小鎮裡,這樣做的機會不多。 我第一次傻乎乎地去報讀了「應用數學」專業,畢業的人就是這樣一個專業——程式設計師,但要求他們具備遠遠超出學校課程的嚴格數學知識。 所以我考試沒有及格。 我在接受中學教育時不得不休讀大學。 第二次,我稍微降低了對自己的要求,去了工程專業——工程師的工作並沒有太吸引我,但還是更接近與電腦打交道。 只是為時已晚,人們已經嚐到了專業技術的好處,紛紛湧向那裡。 只有獎牌得主才有資格獲得預算席位。

這就是為什麼我現在擁有人文學位。 它是紅色的,但不是技術性的。 這就是成長的悲傷故事與找工作的悲傷故事開始交叉的地方。

不需要小提琴手

我為何在 35 歲時沒有成為一名程序員

...но не обязательно выживу...

有一個非常普遍的神話:「他們不向程式設計師索取文憑」。 造成這個神話的原因有很多,我將嘗試列出主要的原因。

首先,在九十年代初以及九十年代後期,電腦科技知識原則上很少見。 如果一個人知道計算機在哪裡打開並且可以運行該程序,那麼他就會按照業務要求進行操作。 而勞動市場的普遍混亂迫使雇主迅速找到任何有能力完成所需工作的人——他曾經在那裡學過什麼並不重要,重要的是他現在能做什麼。 因此,相當一部分自學成才的人在面試中冷靜地展示了自己的技能並找到了工作。

其次,在那些年裡,商業發展非常迅速,但還沒有HR這樣的現代概念。 人事官員仍然是蘇聯人事官員,起草工作簿和僱傭合同,面試由專家或經理親自進行。 由於他們中的大多數人對結果感興趣,因此像教育這樣的正式標準實際上是最後考慮的。

這導致了大眾意識的嚴重失衡。 在這種情況下找到工作的人可以非常真誠地說程式設計師不需要文憑,並以自己為例。 當然,您認識這種類型。 如果一個人告訴你“只要展示你能做什麼,他們就會僱用你”,這就是這樣一個程式設計師,從那個時候起,他們僱用了他,他相信世界的不可侵犯性。 同樣,老蘇聯人也會說這樣的話:“但你在電腦上工作,還能讀英語,有這樣的技能我會哇!” 他們不再明白,這樣的技能在蘇聯時代只是“哇”,但現在每個人都可以做到這一點。

然後,完全相同的事情發生在 XNUMX 年代初期,當時石油開始上漲,經濟開始發展,成群結隊的新晉商人湧入勞動力市場,尋找任何會開電腦的人。

但同時,石油資金的流動創造了生產力低下的人員——人力資源部門。 同樣的老蘇聯人事官員也在那裡,但他們完全出乎意料地被賦予了確定員工素質的任務。 他們當然無法做出這種程度的決定。 因此,他們根據來自西方的翻譯書籍和教育等正式標準,制定了自己的評價標準,與現實相去甚遠。 這樣就發生了一個偉大的轉變:從真正的技能到正式的標準。

這個神話仍然存在,只是略有修改。

經濟仍在成長,人才從各地被搶走,從其他公司被吸引走,但人事官員已經將頑強的爪子放在了選拔過程上。 最重要的不是「展示你能做什麼」——無論如何,人事官員不會理解他們向他展示的是什麼——而是「工作經驗」。 因此,那些曾經因為按下按鈕的能力而沒有接受過程式設計師教育的人被吸引到另一家公司,僅僅因為他們以前擔任過「軟體工程師」。 再說一次,沒有人要求文憑,因為沒有時間 - 你有「經驗」嗎? 好了,趕快坐下來工作吧!

最後,最後第三個原因是網路和私人專案的快速發展。 人們創建了寵物項目,這些項目可以向任何人展示,從而證明他們的技能。 您發送一封信,附上您網站的連結 - 現在您已經證明了您的技能。

現在怎麼辦?

正如我們所知,石油價格已經暴跌,但神話仍然存在。 畢竟,有很多擔任「軟體工程師」職位的人實際上沒有接受過專門教育就進入了這些職位。 然而,現在這些理由都沒有完全發揮作用,現在很少人能在就業方面重蹈覆轍。

  • 電腦技術知識已變得無所不在。 簡歷中不再標明使用計算機,就像那裡沒有標明讀寫能力一樣(順便說一句,這不會有什麼壞處 - 即使在官方媒體中,我也開始經常遇到語法錯誤,在有關哈布雷的文章中,它們的出現頻率令人羨慕)。
  • 人力資源部門和人力資源專家對自己的決定不承擔任何責任,並且可以使用任何選擇標準。 當然,人們會優先考慮正式的——他們會考慮年齡、教育程度、性別和在之前工作地點的時間。 技能和能力遵循剩餘原則。
  • 長期以來,程式設計師一直不缺。 有短缺 良好 程式設計師,但這對於任何專業來說都是普遍存在的。 網路上的每個小學生都是普通程式設計師;在自由職業網站上,人們實際上是在爭取免費為自己的作品集做一些事情的權利。
  • 寵物項目也變得司空見慣。 網路上充斥著個人網站和俄羅斯方塊克隆,這個計畫已經幾乎成為強制性的,也就是說,在通過人員篩選後,你發現自己進入了專家篩選,他們說「給我看看你的 github」。

受過教育的人——或在人力資源部門眼中擁有取代教育的經驗的人——只看到第二部分。 他們通常會這樣說:“程式設計師不需要學位才能工作,但 Github 上的專案會很有用。”

但由於人力資源部門並沒有消失,所以它的表述相當真實:“程式設計師需要文憑(透過人力資源),還要在 Github 上做專案(通過技術面試)。” 而我,受過人文教育的我,充分感受到了這一點——因為我只是從受過技術教育的程式設計師的抱怨中了解到Github,但嚴格的人員篩選在第一階段就把我淘汰了。

人們看不到空氣,魚看不到水,在 CODTECHNOSOFT LLC 接受過技術教育或工作經驗的人看不到他們沒有被要求提供文憑,因為這已經是暗示的了。 特別搞笑的是那些人的藉口,例如「我工作了這麼多年,我從來沒有出示過我的文憑」。 你問,你把它寫進你的履歷了嗎? 嗯,是的,我當然這麼做了。 那麼,你是否建議我在履歷上寫上虛假的教育經驗或其他什麼,因為他們無論如何都不會要求確認? 他們沉默不語,不回答任何問題。

順便說一下,在所有預算名額都被獎牌得主佔據的專業中,只有一半的人是預算名額。 另一半是付費教育的學生——你知道,用父母的錢分期買麵包皮。 我的朋友去了那裡並獲得了文憑。 結果,我成為了一名成熟的“軟體工程師”,從那時起,作為程式設計師的工作就沒有遇到任何問題。 因為文憑上並沒有說明你是免費學習還是免費學習。 但他們寫道,「技術」是專業。

走出舒適圈

我為何在 35 歲時沒有成為一名程序員

Это я уверенно поднимаюсь по карьерной лестнице

當我到達莫斯科並開始找工作時,我並不知道這一切。 我仍然相信這樣的神話:程式設計師展示他的工作結果就足夠了。 實際上,我在閃存驅動器上隨身攜帶了我的程式樣本 - 展望未來,我會說沒有人看過它們一次。 然而,邀請函卻很少。

那時我還記得德爾福,並試圖進入一些科技公司,至少是實習職位。 他一天發出十幾封信,解釋我從小就對電腦感興趣,想進一步學習。 有幾次他們很誠實地回答我,我應該有技術專長——這正是人力資源經理捍衛大公司邊界的原因,以清除各種人道主義弱勢群體。 但在大多數情況下,他們只是收到了標準化的拒絕。 最終,我無法再繼續我的搜索,最終找到了一份只需要使用 Excel 的常規辦公室工作。

幾年後,Access 和 SQL 會被加入到 Excel 中,因為我記得年輕時並開始積極編寫 VBA 腳本。 但這仍然不是「真正的程式」。 我再次嘗試下載現代 Visual Studio 並深入研究 C#。 我將其作為初步近似研究,編寫了一個小程序,然後再次嘗試取得進展 - 沒有忽視​​成熟的職位空缺或實習機會。

這次我的數百封信沒有收到任何回應。 沒有人。 因為,據我現在了解,我的年齡已接近三十歲 - 加上我簡歷上的人道主義專業,這成為任何人力資源部門的污點。 這極大地削弱了我的自信心和我對程式設計師關於勞動市場的神話的信念。 我完全放棄了“真正的編程”,專注於日常的辦公室工作。 我仍然不時回應不同的空缺,但回應我的仍然是沉默。

在這個階段的某個時候,我開始明白,一個人沒有註意到的東西,或者他認為每個人默認都擁有的東西,對他來說是多麼有價值。 你向他們尋求建議或只是抱怨生活的人不會深入研究這些微妙之處。 他們讀過心理學的熱門書籍,並告訴你需要走出自己的舒適圈。 儘管長期以來有一個眾所周知的笑話,你首先需要進入你的舒適區。 隨著年齡的增長,這種進入或退出的成本會增加——例如,現在我根本無法辭職去上班當實習生。 您只能小心地改變您的活動,同時保留目前的工作,直到您的收入相等。

有一些合理的顧問,他們給的建議是我自己也會給的。 這包括獨立學習和遠距工作或創建自己的專案。 但這裡也有陷阱。

事實上,遠距工作是那些有「工作經驗」的人的特權。 對於需要幫助和培訓的初學者來說這是完全不切實際的。 反正沒人想惹你,但這裡你也需要遠端操作。

自學是非常沒有效果的。 例如,他們教你的東西,在六個月內,你將需要兩年的時間才能自己弄清楚。 比例是這樣的。 你必須自己發現各種小事、標準技術和已知的陷阱,不斷地重新發明輪子。 當然,這在某種程度上可以讓你增長見識,因為你自己發現並克服了這一切。 但這將花費您四倍的時間,而且您仍然不會在實際生產項目中獲得任何實際經驗。

同時,我深知,只有解決實際的生產問題,才會產生真正有用的經驗。 從這個意義上說,像「寫井字棋」這樣的動作將幫助你在初始階段簡單地理解語言。 但即使你寫了井字遊戲、海戰和貪吃蛇,在實際中你仍然無法做到你的業務所需要的。

在這裡,最不耐煩的人會再次想要提供建議 - 他們說,從一些自由職業網站獲取真正的技術規範並在其上寫下,您將自己學習,甚至擁有一個投資組合。

好吧,我們最後考慮一下「pet-project」方法。 您需要編寫一個對人們有用的程序,然後將該程式帶到他們製作類似程式的地方。 理論上聽起來不錯,但其實這是個陷阱。 您最初不是在真正的專案上工作,而是將時間浪費在明顯無意義的任務上,以便稍後您可以執行完全相同的任務,但有意義。

停止! - 讀者會對我大喊。 - 等待! 這是一次鍛鍊! 她無論何時何地都是這樣! 如果這次培訓能為我們帶來成果的機會,我會同意。 但不是。 我們回到這個事實:我已經有過類似嘗試、類似訓練的經驗。

世界上是否至少有一家公司說──我們公司生產信使,讓我們用這樣或那樣的語言給我們寫一個信使,有這樣那樣的參數,然後我們就會僱用你? 不。 這總是有可能的,而對於一個年齡和教育程度不對的人來說,這種可能性是很低的。 生活向我很好地解釋了這一切。 例如,在我人生的不同時期,我了解並使用過 VB 和 VBA、Pascal 和 Delphi、SQL、R、JS、C#,甚至(我自己也很驚訝!)Genesis32。 事實上,我找到並參加了課程,完成了臭名昭著的項目,可以在面試中展示它們並回答有關它們的問題。 還有什麼?

首先,沒有人只是感興趣,也沒有要求展示任何東西,我愚蠢地沒有參加這些訪談。 其次,在這一切中,我現在真的只記得VBA+SQL,因為我一直在使用它們——其餘的都沒有用,都被遺忘了。 此外,情況看起來真的很艱難:他們不像是看著我的專案並說“聽著,這裡一切都很糟糕,你不知道如何編寫程式碼,它在這裡和這裡都不起作用。” 不,他們只是無視我。 文科教育,你知道嗎? “因為我是黑人。”

結果

我為何在 35 歲時沒有成為一名程序員

Когда даже под гнётом обстоятельств ты сохраняешь внутренний покой

儘管文字很悲觀,但我並沒有放棄嘗試。 只是現在我的可能性空間急劇縮小,我只看到一條現實的道路——這就是上面提到的“寵物項目”,但其目的不再是“找工作”,而是“試圖找到工作”。創建一個企業。” 你需要找到一個未解決的問題,解決它並找到至少幾十個人會使用你的解決方案。 另一個問題是,這聽起來很簡單,但事實上,很難找到一個尚未被數百萬程式設計師和有抱負者解決的問題 - 而且,對於初學者來說足夠簡單。

現在我已經掌握了Python,按照許多前輩的例子,我已經解析了Habr並正在準備一篇關於結果的文章。 我希望將其作為我的第一篇 Habra 文章發表,但我仍然需要在那裡添加一些文字。 然後,主題為「我如何透過一點點努力成為一名程式設計師」的出版物開始大量湧現,幾乎每天,甚至一天兩篇。

所以我忍不住告訴你為什麼我付出了很多努力卻始終沒有成為一名程式設計師。

簡單總結一下,我想說的是:

  1. 願望和努力確實可以做很多事情,但物質基礎仍然是決定性的。 對於那些擁有它的人來說,他們的願望和努力可以幫助他們取得更多成就。 那些沒有它的人,他們的願望和努力不會幫助他們達到通常的結果。 從小對電腦有熱情可以幫助你成為程式設計師,但幫助不大。 那些對電腦從來沒有興趣,但富有的父母送他們去學習流行的技術專業的人,成為程式設計師的機會要大得多。 但愛好本身是不夠的,如果你小時候沒有購買過可編程計算器(就像最近的出版物中提到的那樣)
  2. 是時候最終放棄這樣的神話了:作為一名程式設計師,知道如何編程就足夠了。 充其量能夠做到這一點就足夠了 編程,例如「在板上寫程式」——是的,這樣的人會用手撕下來。 談論人們被帶離街道只是為了知道鍵盤位於電腦的哪一側,這是一種非常誇張的說法;在這樣的對話中,我們看到了倖存者的典型錯誤。 每個程式設計師的空缺周圍都存在著人力資源部門的「玻璃牆」——受過技術教育的人根本看不到它,而其他人只能毫無意義地用頭撞它。 或者——正如最近的另一篇出版物所指出的那樣——「透過熟人」找到一份工作。
  3. 要在成年後「成為」一名程式設計師,您需要擁有與年輕時相同的成功環境。 當然,一個成年人可以做得更好(他看到了自己要走向的目標,有培訓和發展的經驗,知道市場的真正需求),但他被剝奪了很多(他必須養活自己,花更多的錢)日常生活中的時間,他的健康不再是那樣)。 如果像最近的另一篇出版物一樣,有家庭的物質支持和自己住房形式的生活穩定,那麼改變活動確實容易得多

來源: www.habr.com

添加評論