發現很多人居然連數據結構和演算法都完全不懂居然都有公司給工資?


從經濟學角度來說,這是由市場決定的,軟體這個行業的特殊性在於不同的項目對軟體質量有不同的要求,不像建築,醫生都是人命關天。

做個小網站需要懂數據結構和演算法才能開發嗎?

不要

既然不要,企業當然找個能幹活的就行,能把網站搞出來就行,非要挑個精通演算法數據結構的你就得需要支付更高的薪水。

但是你要開發航天航空裡面的項目,他們的招聘要求可能就會更高了,因為他們的軟體的質量要求很高,自然需要對計算機瞭解更加深入。


因為目前 IT 的很多工作都還是勞動力密集型,而不是智力密集型的

換句話說,你可以通過評估一個公司的加班時長(長期,而非業務上線前的突擊)來評估這個公司所做事情的知識密集程度。

對於一些高精尖的企業,往往不加班,但是他們會要求每一個工作人員特別的專業。

而絕大多數國內的 IT 企業,都是隻要加班就可以堆出一個產品。在這種情況下,為什麼不找一些年輕的、便宜的、能加班的人去堆呢?

而誰是那些年輕便宜又能加班的呢?顯然,是那些簡單培訓過,可以完成一些基礎的研發工作的人。


縱覽,國內比較大的軟體公司(以下統一簡稱"國軟"),清一色都是做政府項目的(他們能做大的原因我就不用說了吧),真正能做大的國軟又有幾家呢?這是為什麼呢?

今天在這裡就給大家簡單分析下:

一."作坊"式管理

**「作坊」**往往是效率最高的,國軟幾乎都是從作坊走過來的,但把作坊式的管理模式套用到一個不斷壯大的公司中顯然是不行的.組織架構到達一定程度後就必然要進行分工的細化,依靠作坊式的"暴力開發"是行不通的.

二."法制社會"

上班必須打卡,遲到要扣錢,還一次比一次多,加班沒有加班費,反正算下來就是,只有扣錢的項目,沒有加錢的項目.比起外企,人家上班不打卡,遲到不扣錢,加班有加班費,這樣寬鬆點的環境不好嗎?

三.自生自滅

國軟一般沒有師徒制,有的話也只是形式上的,公司基本沒人管你,你也不用去管別人。新進的員工,不管會不會,先丟個東西給你做,自己研究,不懂的google去.這也是為什麼國軟喜歡招有經驗的人,因為沒經驗的人熬不住,跑了幾個以後,國軟就不招了.

四.銷售-開發-維護脫節

這點是非常嚴重的,會直接導致項目流產的.國軟的典型的做法是,銷售為了業績,在沒有調研的情況下就簽了合同(這裡主要是指項目型的,產品型的一般可以控制),而且合同的範圍也非常模糊,可大可小,接下來就是調研人員上場,調研後發現,10w塊錢的合同,調研出來了100w的需求,接下來就是和客戶扯皮,最後直接導致項目流產,甚至打上官司.項目或產品上線後,維護人員對系統不瞭解(一方面是沒有文檔,另外一方面維護人員一般沒有參與到開發中),接下來往往就會發生兩種情況:

維護人員在不瞭解系統的情況下擅自修改,結果導致系統越改問題越多.

維護人員一不做二不休,所有客戶反饋的問題全部打回給開發人員,於是開發人員就生不如死,在做別的項目的同時還要維護以前的項目,結果就是導致幾個項目都失敗.

五.缺乏規劃

今天要用這個,明天想用那個(我就經歷了公司在半年的時間內對框架進行了兩次大的變動,導致開發人員都必須重新學習框架)。產品也接,項目也接,大的也接,小的也接.今天領導說往左走,明天說往右走,也不能怪領導,他也沒經驗,我們就是他的DEMO.公司沒有一個明確的目標,要做成什麼樣,只是一味的提出做大做強,但是沒有規劃出如何做大做強.(和我的標題一樣哦)

六.三無-無需求,無設計,無測試.

沒有文檔是國軟的通病,曾幾何時,產品經理丟過來的那一句話:"喂,,給我做一個模塊來",然後開發人員就開始埋頭苦寫了.當然如果你天資聰慧,可以輕易理解出產品經理的意思,那有沒有設計都無所謂了,但是,當有一天別人要維護你的程序的時候問題就出現了,沒有文檔,代碼又那麼天馬行空,怎麼維護?改了這個地方,又影響了那個地方…其實程序員都懂得測試的意義,可以工時安排的那麼緊,哪來的時間測試?測試又沒有算工時.所以幾乎所有的程序員的做法就是,直接丟給用戶測試

這時候有人肯定要問:那項目經理呢?他不是可以測試嗎?請記住這是國軟,剛才寫代碼的那個人就是項目經理,還是售前,還是設計人員,還是維護,還是…歸結還是成本問題,在外資軟體公司中,做文檔的工時是比做開發的工時更多的,國軟為了節省成本,這塊當然要CUT掉了.不必去追去文檔有多麼詳細多麼美觀,需要做的就是找到一個平衡點,一份適合自己的文檔.

七.員工都是"十項全能"

在國軟裡面的員工各個都是十項全能(我就是一個鮮明的例子,從系統調研分析設計,到進度管理,開發,測試,驗收,實施,維護,甚至拉給客戶拉網線都需要我去.)直接導致的結果就是這些員工每過多久就直接出來自己開公司了…嘿嘿又一家作坊誕生了…這樣做對員工個人其實是有好處的,但是對於企業本上來說是沒有好處的,並不是說員工成立了作坊,成為了你的競爭對手,而是讓員工各個都是十項全能的結果就是

員工都是"十項全不能".

員工一旦離職,他手頭的項目必定流產.對公司的發展是不利的(細化分工).

八.莫不關心

老闆並不知道員工在做什麼,員工也不知道老闆在做什麼.上級很少去關心下級的工作,更別說去關心下級的生活,一個東西丟給你,一個月後交差,中間不管你任何事情,交不了差就唯你是問.下級也不知道能為上級分擔什麼,只有等著上級分配任務.甚至還有些老闆都不不知道員工的名字,在這樣的國軟的,每個人都是孤立的,又怎麼能做大做強呢?

九.企業文化

所謂十年樹木,百年樹人.國軟的企業文化表面功夫算是做的很好的了,什麼"為客戶創造價值",「做最好的行業解決方案」,"軟體公司的最大資源就是人才"等等,要多華麗有多華麗,重複體現了"口號文化".真正做到企業文化又有多少呢?有多少僅僅是為了做給客戶看的呢?

十.盲目跟風

很多國軟看到人家外企軟體公司最近在搞什麼推進活動,就跟風,效仿外企做,可是無法領悟精髓,純粹只是在模仿.外企集體笑:「一直被模仿,從未被超越」做完了也不知道這麼做的意義,勞民傷財.

十一.缺乏"執行力"

國軟的通病,就是"執行力",國軟的學習勁頭很足,今天提出要完善測試標準,明天提出要每週寫工作報告,可是又有哪些東西能真正的去執行呢?導致這個問題的主要原因有兩個:提出來的東西到底有沒必要做,還是隻是應付領導走個過場.誰來跟蹤這些東西?員工寫了工作報告,領導沒有去查看,去反饋,員工覺得寫的也沒意義,自然不會繼續執行下去.

十二.管理混亂

沒有劃分清楚員工的歸屬組織,員工並不明確他的上級領導是誰,導致有的員工處於遊離狀態,有的是員工又是多個領導,不懂要聽誰的,有些人忙的要死,有些人又閑的要命,最後搞的最痛苦的就是員工,導致員工離職.

十三.缺乏團隊精神

為什麼會缺乏團隊精神呢?並不是國軟沒有這方面的概念,國軟也很希望培養員工的團隊觀念和精神,

無奈因為國軟,一般都是一個人負責一個或者多個項目,連團隊都沒有,何來的團隊精神?

十四.無法做到補足

一個項目一旦中途有人辭職,這個項目就會流產.員工一旦辭職,會有N個項目沒人維護.A組的員工無法勝任B組的工作,歸根結底就是組織上根本沒有考慮過組織變動對項目的影響,沒有提前培養人員.

十五.一成不變和隨心所欲

有兩類人一種是把前輩的東西COPY過來,不作任何修改,因為他深信,前輩的一定是對的,還有一類是不管前人怎麼做的,一律不要,全憑自己的"經驗",隨心所欲,天馬行空的進行自主研發,造成的結果就是錯的還是錯的,亂的更亂了.

十六.人才育成

成本,還是成本,培養一個人要多少成本?這就是國軟做不大的原因,永遠只能停留在"作坊"的原因.

十七.向心力.

老闆做的是事業,員工做的是事情,這是國軟員工的一致觀點.

十八.惡性循環

人員力量不足 -&> 接不了項目 -&> 收入少 -&> 人員流失.人員力量不足 -&> 強行接項目 -&> 虧本 -&> 破產.


因為很多工作不需要懂數據結構和演算法就能做,比如用上世界上最好的語言PHP,連線程和進程的概念都不需要懂就可以寫出產品。

那麼怎麼就出現不需要懂數據結構和演算法就能做事拿工資的現象呢?是這行業在技術發展過程中沒有建立進入門檻。

美帝的醫生和律師業務收入高,但是行業建立了門檻,不是真智商高讀很多書的進不了行。計算機這行,發展成了什麼都共享,卻無進入門檻,各種開放工具層出不窮,實際上讓進入門檻越來越低。

有那麼一個寓言:當斧子出現的時候,樹木們都瑟瑟發抖,神對樹木們說,不用怕,只要你們不提供斧柄,它們也傷害不了你們。

但是,怎麼可能呢?!

我現在其實想得很明白了,門檻低就低吧,一大堆不懂數據結構和演算法的人湧進來就讓他們進來吧,反正這些人也威脅不到我的飯碗,還不如培養他們,利用他們,他們要是學得好,那是繁榮行業,他們要是學不好,那就當他們襯託同行吧。

正在看我這個回答朋友,不管你懂不懂數據結構和演算法,只要你積極向上,我們都可以做朋友。

來吧,關注我的微信公眾號「摩根有話說」吧!每週兩篇乾貨文章。


這個提問,是否帶有偏見和刻板印象呢?

請問:愛自稱產品經理的喬布斯,張曉龍等人,與剛畢業就能入職產品經理的 fresher 們,可曾探討過產品經理的能力差距與崗位門檻?—— 當然。每個崗位都會有此類話題。

再請問:您口中的「軟體工程師」是否散發著七彩光芒並自帶背景音樂 —— 它不就是我們口中常常提到的:程序員、工程師、coding 民工、寫代碼的……諸如此類……的嗎?請千萬別計較辭彙中的褒義、貶義之類情緒色彩,佛法的經典(對不起大概是金剛經我忘記來源了)曾曰(大意是說)它叫什麼,無非是我們叫它什麼,它還是它,稱呼無非一個稱呼罷了!

最後請批判地看待我自己的實例(畢竟一路自學我要拚命鼓勵自己才能保持旺盛的興趣和學習力)。

我(一個自學編程的新手)確實不懂數據結構和演算法,表現為:1)我沒看過相關的書,2)雖然嘗試樂扣的演算法題,選最簡單的做了兩三道還做錯,僥倖做對評分還很低。但我依然能玩爬蟲(在爬蟲事故頻出前的小段時間,爬了幾十萬行數據,並得出對業務有幫助的分析報告),用pandas 做數據清洗整理與統計分析,後來我 24H 快速上手 grafana ,之後 用 sql語句把數據後臺業務都快速搞定。

我35歲了,家裡兩個娃,我還有本職工作要產出,我用來自學編程和主動找需求來實戰,也僅僅數百小時(可能3~400小時)。即便我現在沒有數據結構和演算法的知識打底,我依然覺得,單單編程能力幫我能做到很多之前無法做到的,我依然覺得,單是寫數據後臺這職能,我就可以用程序員的身份討飯喫——但客觀說,我寫數據後臺順暢,技術能力重要但沒那麼重要,我對業務和數據需求的理解,讓我的競爭力放大許多。

你口中的數據結構和演算法,在我這裡也閃著七彩光芒,我不懂,我真的想弄懂——與此同時,我不懂並想弄懂的還有進程和線程的區分與控制,內存的佔用與釋放,環境……等等 一切你看起來要麼很基礎的東西。

可我明明又能活用已有的編程知識和技能,生產效率也相當不俗。為什麼會這樣?

一方面,我是不懂數據結構不會演算法,但我懂數據容器,知道字元串,列表,字典這些怎麼用,也知道靈活使用流程式控制制,函數與模塊(對,我幾乎從來不寫類)…… 只是這些更基礎的知識點,沒有數據結構和演算法這麼高大上的名稱。

另外一方面,我越來越發現,所謂編程能力,很多時候是資源調用與整合能力。程序員的世界是多麼妙啊,很多需求都有很多現成的實現方式(小到所謂內置函數,各種第三方庫,大到各種框架,開源項目)可供選擇——很多時候甚至不必自己寫出來,很多時候是知道有哪些選擇並選出一個最適合的,去拷貝它,借用修改它…… ——您沒覺得,各種框架就好像一個個工具而已,你所做的,無非是掌握按說明書使用它罷了。

如果對編程的熱情七年不滅,我可能真的會做一名真正的程序員,但我想,我不會在數據結構和演算法這條路上展示自己有多麼強大,而是儘可能做一個開源世界裡資源的調用能手。但我應該對那些精通數據結構和演算法的人給予足夠的尊重,畢竟知道自己會做什麼、不會做什麼,是相當重要的。我知道擁有自知之明很難,但時刻提醒尊重自己也尊重他人是一個必要的修養/修行。

—— 打這麼多字,我依然有點心虛。畢竟 自學編程的人通常有許多不自信與不確定,而外界通常也不那麼友好。我這把年紀了,心已經大了,沒太多可怕的。我只是對 編程自學者 這個羣體 感到有些不忍心。我希望每一個自學編程的人,能感受編程和代碼世界的樂趣,而非為生計所迫,且不受其它所謂科班出身程序員的歧視,更能在與HR面試官的鏖戰中贏得職場實戰的機會。就這樣,謝謝。祝好運,祝成長。


評論區有個 程序員 朋友給了相當誠意的不同見解(真的相當誠意,感謝您)。但關鍵是,我想手動對我的觀點劃個重點:

我不否認喬布斯、張曉龍在做產品經理這件事上的過人之處,且,我也不想去打擊那些想要成為產品經理的新人們。放在程序員這個崗位上,也如此—— 不管他們是野生自學的,培訓機構出來的,又或者是經過所謂985、211等正規教育的,職場有它的冷酷規則,但作為個體,拿得到offer是本事也可能是運氣,但這份努力想要成為程序員的羣體,不應該被鄙視。

剛入職某個崗位的fresher 不會本職崗位的很多東西,這太正常了,什麼職業都很常見。——實際上,您不覺得,即便是在某個崗位上修鍊10年的人,也可能要持續學習新的東西嗎?

不會數據結構和演算法,能拿到offer ,這有什麼好鄙視的?——明明工作有需要,能力有欠缺,寧可吹水打屁刷視頻打遊戲也不成長的狀況,這才值得鄙視。。。

PS: 鄙視某個人是不對的,我評論裏也沒能遏制這個慣性。。看不妥某個狀況,恨其不爭,或許也只是我一廂情願,不過,我盡量以此要求自己:保持持續成長


推薦閱讀:
相關文章