初級程序員和高級程序員,爲什麼他們都很重要

每個找工作的程序員都必然會遇到這樣的招聘貼:尋找“高級程序員”或“初級/入門級程序員”——也許你並沒有真正理解這兩者之間的區別。與此同時,許多招聘經理可能也不明白其中的區別,他們可能默默地認爲,公司應該需要一位高級程序員來幫助解決開發中的問題。今天我們將討論這個問題,並分析爲什麼一個公司的最佳選擇是同時僱用初級和高級程序員。

高級程序員和初級程序員之間的核心區別是,高級程序員通常比初級程序員更精通他們的領域。你知道,對吧? 然而,我馬上就想澄清初級和高級程序員之間的幾個大誤解:

1)高級程序員並不意味着你的程序員生涯比初級程序員長,也不意味着高級程序員必須比初級程序員老。

這一切都定性於技術本領——百分之百的。你是如何獲得這種技能的?職業生涯長短通常是一個很大的因素,這就是爲什麼許多高級程序員編碼的時間比初級程序員要長——但這也歸結於激情和動力。程序員花了4年時間在大學學習計算機課程會獲得很多的知識,但另一種可能是,自學成才的人通過自學編程,2-3年內可能更有才華,僅僅因爲他們有更多的激情和奉獻精神在學習上。

2)成爲高級程序員並不意味着你必須在所有事情上都是專家。

沒有人是萬能的;然而,高級程序員至少應該精通一種語言,可以是JavaScript、c#、Ruby、Java、R——具體是哪一種沒關係,因爲在本質上,大多數語言都使用類似的概念,理解這些概念纔是最重要的。但,你肯定不需要成爲一個萬事通後才被認爲是高級的。

讓我們更深入地研究一下:所謂高級程序員和初級程序員到底指的是什麼?

高級程序員

我認爲高級程序員能夠完全獨立開發應用程序。老實說,這就是我的最低要求。我故意在說“應用程序”的時候表達的含糊不清,因爲在不同的編程領域中,這可能意味着不同的東西。注意,我從未說過高級程序員不會有不懂的問題。每個程序員每天都面臨很多問題,無論你有多熟練,這些問題總會出現。

作爲高級程序員,真正要做的是知道如何提出正確的觀點,然後根據這些觀點採取行動。這裏有一個高級程序員可能會處理的示例思維過程。

嗯,我的任務是用Django在Python中構建一個web應用程序,我不懂Django;我幾乎沒用過Python !但是我知道c#,它是一種面向對象的語言,這點有點像Python,我也知道ASP.NET MVC,它遵循與Django相似的模式,因此我有一個紮實的基礎。我會閱讀關於如何使用Django的文檔,看一些教程,然後解決這些問題。”

看到了吧——在這個思考過程中,我從來沒有過這樣的感覺:“我迷失了方向,不知道從這裏走到哪裏。”這就是高級程序員的能力。你不會有所有問題的答案,但你知道要問的問題,以及如何學習更多知識以完成你的任務。有時候,這確實需要向其他程序員尋求幫助,但這絕不是你唯一的選擇。

讓我們來看看這與初級程序員相比有什麼不同。

初級程序員

作爲一名初級程序員,你對編程世界是陌生的——但你需要具備基本的編程技能。剛決定要開始編碼的人並不能稱作是初級程序員。您需要了解基本原理,比如變量、循環、函數、條件、數據類型等等——以及如何實際地使用它們來完成任務。

初級程序員應該從上級那裏得到小型到中型的編程任務,並努力完成這些任務——可能需要得到了必要的資源(例如文檔、同事支持等)。我不指望一個初級程序員能完全獨立完成一個項目,我希望他們能在很大程度上直接與一個高級程序員合作,這樣他們就可以一起進行代碼評審和其他協作編程體驗。

初級程序員真正的亮點是幹那些頻繁的,無趣的,而且經常令人討厭的任務,減輕高級程序員的負擔,這樣,高級程序員可以將更多的注意力放在複雜的任務,比如設計新項目,構建數據持久化層,部署應用程序,等等。對於初級開發者,這些的小任務,他們不會討厭;事實上,它們對於初級程序員的成長非常重要。它們可以讓初級程序員感覺到他們解決了任務,學到了東西——雖然很小的任務,這不僅能幫助他們學習更多的技能,還能幫助他們建立作爲程序員的信心。

初級程序員的薪水也比高級程序員低很多,所以這意味着他們的業務成本要低一些,而由初級程序員執行的技術難度較小的任務——相比高級程序員而言。

總結

當你在一個工作間裏,你不需要爲每件事都拿出電鑽;有時一個簡單的螺絲刀就可以了。同樣地,對於編程,高級程序員和初級程序員都有自己的優勢和弱點,理解何時以及如何使用每一個人,是在您的組織中形成強大的程序員社區的關鍵。

英文原文:Junior vs Senior Developers, and Why They Both Matter

相關文章