軟件工程師所需掌握的“終極技術”是什么?

最近,我在微博上看到@程序員鄒欣老師發的一條微博 — “不少大學同學都有一個想法:先做幾年技術,然后做管理;也有一些同學說:我技術不行,希望直接找到一個管理的工作,就像PM那樣。請看 PM 需要什么樣的能力:(鏈接略去)”。在讀這條微博的前一部分內容時,我的第一反應是:難道同學們以為做技術管理不需要很好的技術功底?剛好在此之前,我寫過《技術敏感度 — 基層技術管理者必備》一文,強調技術功底對于基層技術管理者的重要性。于是,我對該條微博評論了:“建議鄒老師建議他們好好地學一學技術,技術的精進一定會讓我們或多或少地貫通管理(掌握軟件開發的常識)。對于真要做管理的,建議他們在以后擺好心態 — 承認自己對技術的‘無知’,以及充分尊重技術人才并放權于他們”。之后,鄒欣老師幫同學們提了一個讓人深思的問題 — “技術有很多,有些技術還會過時,你具體指哪些技術呢?”某種程度上,這問題可以理解為是問:“終極技術”是什么?


在執筆本文時,我總覺得以前寫過類似的文章。查了一下,兩年前的確以《軟件開發,到底應當學什么?》為題寫過了一篇博文。不過,過去的兩年我又有了新的收獲,或許可以借此機會再梳理一下自己的認識,以便與大家分享。

身處節奏很快的IT行業,軟件工程師一定希望自己在職業發展的道路上掌握“終極技術”,以便將來即使“長江后浪推前浪”仍能獲得競爭優勢。掌握“終極技術”對于我們究竟意味著什么?深刻理解這一問題有助于我們在面對技術學習和技術選擇時不至于迷茫或人云亦云。我認為,掌握“終極技術”的最終目的不是為了能在工作中“耍酷”(“哇,這問題其他哥們都搞不定,只有我能!”),也不是為了追趕“技術潮流”(“聽說Go語言以后能替代C/C++和Java,我得趕快去學!”),而是為了高質高效地工作,因為只有這樣才能提高我們的生活品質和減少浪費(浪費可能包括奢華的青春和/或寶貴的社會資源)。

實際上,我們一生都是在工作質量和工作效率的二維坐標系上“畫線”。有的人一生都難以走出低質低效的困境(比如下圖中黑色曲線所代表的人),而有的人卻能進入高質高效的殿堂(比如下圖中紅色曲線所代表的人)。

明白了掌握“終極技術”的意義,那“終極技術”究竟是什么?會是C/C++、Java、Objective-C或Go等編程語言嗎?當一個只精通C/C++編程語言的人加入到以Objective-C為編程語言的項目上時,顯然他必須重新學習編程語言。由此看來編程語言因為對不同的項目并不具備普適性,難以擁有“終極技術”之名。對于網上不少為編程語言而打口水仗的人,我真懷疑他們將編程語言當作是“終極技術”了。一旦知曉了“終極技術”的存在,你一定會發現,其實所謂的編程語言“優劣”跟本就不是業內的大問題。如果某種語言直接導致了項目的失敗,那該語言早就絕跡了;反過來,如果某種語言直接導致了項目的成功,那世界上估計也只會有這一種語言了。因此,選擇編程語言的重點不是考究其“優劣”,而是其適用性。過分計較編程語言的“優劣”其實是不成熟的一種表現。這類人還容易犯的一個毛病是 — 生怕落后,熱衷于學習新的編程語言。請別忘了,編程語言我們無論如何也學不全,即使真有人學全了,我也懷疑他所學的只是皮毛。

“終極技術”又會是Linux或Windows這樣的操作系統平臺嗎?由于它們同樣不具普適性,所以不可能有“終極技術”之實。同樣地,.Net、ACE、QT等都不可能是“終極技術”。

真正的“終極技術”一定具有一定的普適性,能讓我們將之運用于各種不同的軟件項目。正因如此,“終極技術”具有一定的抽象性。對于軟件行業來說,真正掌握“終極技術”意味著:深刻地理解軟件(開發)的復雜性本質,并擁有有助于實現高質高效工作的行為(意識、工作習慣等)、能力(思維、業務、溝通)和方法(流程、工具、復用)。

由于“終極技術”過于抽象,使得我們不得不通過一些問題來間接感知。比如:
1)編程好習慣對于軟件產品的質量重要嗎?如果重要,如何讓團隊形成良好的編程習慣?哪些編程習慣算是好的?
2)軟件質量的根本是什么?是設計,抑或測試?高質量的軟件對工程師的工作與生活又意味著什么?
3)軟件架構師重要嗎?還是只是個虛職?如果重要,軟件架構師需要掌握哪些技能?
4)在軟件行業具有很大影響力的CMM(軟件成熟度模型),其倡導用軟件過程的成熟度來度量組織的軟件開發能力。那為什么通過CMM最高級別認證的組織仍會開發出質量一塌糊涂的軟件?如果你身臨其中,能發現導致這種糟糕結果的關鍵因素嗎?
5)軟件平臺與框架被廣泛地認為是高效開發高質軟件的方法,但為什么企業運用這一方法后,平臺與框架最終卻成了一個包袱?困境的表現是什么?什么因素造成了這種困境?有方法避免進入這種困境嗎?
6)業內大量使用“最佳實踐”這一詞匯。真正存在最佳實踐嗎?為什么有的“最佳實踐”在組織中卻無效?
7)……

這些問題大多是開放性的,而且不少問題既涉及管理域,又涉及技術域。面對這些問題的關鍵不在于其是否有標準答案(或許根本沒有標準答案),而在于我們是否為之痛苦過、思考過,并形成了自己的想法。要知道,這些想法就是我們在工作中面對選擇時用作決策的依據。如果從來沒有這類苦惱,很難想象我們真正掌握了“終極技術”。值得一提的是,這些問題只是基于我自己膚淺的認識所提出的,我相信讀者還有很多類似或其他的問題。

如果將軟件(開發)的復雜性比喻為一頭大象,那么我們每一個人或許是正在摸象的又瞎又聾的人,我們窮一生通過“摸”的方式,在頭腦中構建“象”的模樣。這個比喻間接地告訴我們,“終極技術”并非是某種一成不變的內容,其中更涵蓋有每個人根據自己的閱歷所總結出來的在高質高效工作道路上成功應對困境的方法和信念。

“終極技術”一定是通過掌握象編程語言等非“終極技術”而最終掌握的,也需要我們通過經受軟件項目的痛苦磨礪去沉淀。在沒有掌握“終極技術”之前,請不要停留在編程語言專家、Linux內核專家、.Net專家這樣的光環之下,繼續探索,前面還有更大的舞臺等著你!在掌握“終極技術”的職場旅途中,我們得先認識到一點:就技術內容而言,職場首先比拼的并不是智商,而是我們的堅持與良好的工作習慣。工作中的很多道理我們都懂,但就是不能堅持做到深究,也難以通過堅持克服陋習去形成更多的好習慣。在掌握“終極技術”的道路上,我們一定會看到很多不盡人意的內容,也會面臨不少困難與挫折,即使理智上悲觀,但我們在行動和意志上一定要保持樂觀(注:Antonio Gramsci的原話是“理智上悲觀,意志上樂觀”)。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/449845.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/449845.shtml
英文地址,請注明出處:http://en.pswp.cn/news/449845.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux中項目部署和日志查看

1 查找進程 前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 ps -ef | grep java 查看所有關于java的進程 root 17540 1 0 2009 ? 01:42:27 /usr/java/jdk1.5.0_1…

dspmq dspmqver command not found(dspmq命令找不到,dspmqver主安裝目錄設置不正確

[rootrhv6-64b ~]# su - mqm -bash-4.1$ dspmq -bash: dspmq: command not found(dspmq命令找不到) -bash-4.1$ dspmqver(dspmqver主安裝目錄設置不正確) AMQ8594: WebSphere MQ commands are no longer available in /usr/bin. I…

lambda表達式與委托與線程初步談論-基于劉鐵錳視頻觀后操作

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;//線程 using System.Threading;//引用線程方法namespace ConsoleApplication2 {class Program{static void Main(string[] args){//委托詳解//Func返回…

2020-11-21

獲取數據后,需要對數據進行合并,通常是日期,也有對相同公司進行合并 下面就研究數據合并的常用方法: 目錄appendmergeon屬性how屬性(inner,outer,left , right)indicato…

走技術線,還是技術管理線?

最近因為要給剛畢業的學生做一次演講,所以就職業發展這類話題先以寫博客的形式做一些思考,希望屆時能給同學們帶來質量更高的內容。我在《駕馭你的“職場布朗運動”》一文中談了25條職場感悟并提出了“走技術線,還是技術管理線?”…

[Nikon D80]櫻花盛開的校園

花開花落,陽春三月,隨身背著相機在學校里游走,不斷的尋找視角。知道自己拍的不好,總覺得自己拍的片有各式各樣的缺陷,也許這就是大師與學徒的區別吧。用好手頭的裝備,出好片,鍛煉Visual Effect …

「LG2664 樹上游戲」

題目 這真是一道神仙的一批的題目 定義\(s(i,j)\)表示從點\(i\)到點\(j\)經過的顏色數量 設 \[sum_i\sum_{j1}^ns(i,j)\] 求出所有的\(sum_i\) 考慮點分治 對于一個點我們用兩種方式來統計其答案 這個點作為分治重心時,分值區域內所有點到這個點貢獻這個點不是分治重…

DUBBO 使用問題記錄

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 官方ISSUE參考 https://github.com/alibaba/dubbo/issues 注冊中心ZookeeperRegistry.doSaveProperties warn 2014-10-1419:56:51WARN …

真格量化學習處理——幾個功能小函數

真格這周是學習使用了不少,功能算是很不錯,但在做的時候也發現了一個問題: 數據缺失:我在做回測,要求獲取每天的delta值,并從中篩選條件值時,報錯,顯示無數據。不得不使用pass,影響我的回測連貫性。 現在開始講下,我做的幾個功能函數: 算起來,挺煩的,就是各種細節…

軟件技術發展的驅動力

軟件產品的終極目標是為了實現用戶需求從而滿足人們的需要。也正是為了不斷滿足人們的需要使得軟件行業不斷向前發展。比如,新的算法(MPEG-1、MPEG-2、MPEG-4、H.264、……)等的出現都在當時為了滿足不同的需要而被發明。然而,人們…

The Model Driven Software Network

國外的一個模型驅動軟件開發的討論社區,The Model Driven Software Network這個社區討論的都是模型驅動開發相關的話題,雖然建立不久,但加入的人越來越多,建立群組的是Mark Dalgarno以下是一些討論: Textual v Graphical models W…

無敵簡單快速的文件服務器sgfs

前言 想要構建一個Linux文件服務器?看看下面幾個要求是不是你想要的? 1、只需要單節點部署就夠了 2、部署啟動簡單,下載之后,一鍵啟動,一鍵關閉 3、不需要任何其他的依賴安裝,而且運行時占用內存資源少 4、…

springboot多數據源配置

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 之前在介紹使用JdbcTemplate和Spring-data-jpa時,都使用了單數據源。在單數據源的情況下,Spring Boot的配置非常…

pyhon量化數據處理小細節3---日期格式轉換

不同的數據文檔,會獲得不同日期格式,常見的有str(20200101),datetime(20200101),又或者是2020-01-01,,2020-1-1,20-1-1,20-Apr_20th,2020/01/01,20/01/01等等,總之類型很多。因此需要我們對日期格式進行統一化。這里我…

面向對象和基于對象

面向對象大家都很熟悉,可是基于對象就不一定了。兩個聽起來好象是同一回事,而事實上它們卻千差萬別。基于對象是指:我們采用對象封裝技術,將數據和操作捆綁在一起,但是并沒有合理地使用多態、繼承等面向對象技術進行軟…

CSS margin 屬性簡介

CSS margin 屬性 設置外邊距的最簡單的方法就是使用 margin 屬性。 margin 屬性接受任何長度單位,可以是像素、英寸、毫米或 em。 margin 可以設置為 auto。更常見的做法是為外邊距設置長度值。下面的聲明在 h1 元素的各個邊上設置了 1/4 英寸寬的空白:h…

MVC中使用代碼創建數據庫(code first +mysql+EF)

1.新建一個mvc項目 2.安裝mysql需要的幾個文件 EntityFramework、MySql.Data(6.9.12)和MySql.Data.Entity (6.9.12) 這里有幾點要注意 1.MySql.Data和MySql.Data.Entity 版本必須一致 2.我試用了6.10的版本 要報錯 3.我測試沒有問…

github 學習使用

博主第一次使用github,所以會將過程全成描述歡迎使用Github注冊安裝進入倉庫,創建、修改、上傳文件。強制推送強制覆蓋上傳文件歡迎使用Github 注冊 直接進入github官網:https://github.com 點擊sigh up 進行注冊 直接填寫即可然后驗證通過…

Java中9大內置基本數據類型Class實例和數組的Class實例

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 1、Java中9大內置幾本數據類型: 對于對象來說,可以直接使用對象.getClass()或者Class.forName(className);、類名.class都可以…

軟件質量管理之困境與對策思考

相信在不少與軟件開發相關的企業內,質量管理部門與軟件開發部門在日常運作中形成了如下圖所示的“啞鈴形”組織結構。 開發部門執行質量管理部門所制定的流程,通過提供證據的形式將各種流程執行后的數據反饋給質量管理部門(包括缺陷率和各種流…