IT从业者的迷思与求解之道——座谈会实录摘选
本次座談會于上周六開始,由于網絡原因,很多國內的小伙伴們沒有能夠連進去,挺遺憾的。所以我整理了本次座談會的部分內容,希望能對大家有所幫助。
洞察力
主持人:大家好我們來自開源社群,今天舉行在線it社區的活動,本次活動為主旨為分享與交流。今日進行的主題為《IT從業的迷思與破解之道》。我們邀請請到公眾號的博主艾心,艾心擔任過新創獨角獸公司的項目經理與同時也是資深開發者,請他與我們一同分享這個主題,在這短短一小時內,我們將從It從業人員的心態中一一去剖析,希望帶給大家一點思維上的開啟與交流。不知道你有沒有這樣的一些場景,每當往往在加班改程序時,心中往往會想難道這就是人生嗎?相信艾心應該也是經歷了996了好多個日子, 愛心總結了3大力 洞察,學習,團隊,來給大家一些概念上的提升,有些雖是老掉牙卻也歷久不衰概念。在it人工智能的時代,拖拉的式的介面,拉拉購物車,就可以快速上架商品,五分鐘你就可以無代碼完成一個小電商店,網紅店,這樣程序員難道不害怕嗎?最近一波一波縮編人員的浪潮下,我想很多程序員都發現就業上有困擾,在大廠的引入的ai智能的前提下,不管在內容選擇上還是offer,多少被人工智能影響,我們初中級的it從業人員該如何面對呢。
艾心:大家好,我是艾心,來自上海。經歷了多年的行業大發展,當前的經濟環境處于深刻變革之中,許多行業處于收縮狀態。很多人可能會感覺,工作不那么好找了,薪資提升越來越慢了,是否意味著IT行業也逐漸進入到夕陽產業之中。我的想法是不會,IT行業在未來可預見的時間里都是熱門行業,只不過崗位性質可能會發生較大變化。如IT基礎設施領域將逐漸掌握在少數大廠手中,大廠本身也會針對自身特點以及對行業的理解提出自己的解決方案,這點在云服務領域尤其突出。有了一定工作經驗的人會發現,入職最大的困難在于快速理解公司業務,那些技術類的東西完全可以憑借自己的經驗獨自去掌握。考慮到企業的最終目的是盈利,那么大趨勢就是不斷提升企業效率,基礎設施類的服務可以通過購買來獲取,使得企業內部聚焦于自身業務相關的事務之中。那么這是否意味著,我們的技術含量會下降,也不會,因為我們手中的業務也是非常復雜的部分,所以后來才會有了DDD、TDD以及微服務等軟件設計與開發理念,來幫助我們提升軟件開發效率。
主持人:AI所有的需求都是來自于人的需求需求在it在,AI自動代碼幾乎不可能完成,人的思想在程序發展上才是關鍵點,未來IT仍會在AI浪潮下仍會蓬勃發展,但這邊總有一些杞人憂天的案例。
艾心:AI是當前IT行業里比較熱的方向,AI涉及到多個領域,當前我們所進入的領域尚不深入,但與我們的生活息息相關,以至于越來越多的人為AI扇風鼓勁,冷靜后我們會發現這一切并不像宣傳的那樣。通過AI創造出的產品終究還是需要軟件工程師的介入,不管AI如何智能,終究是人創造出來的,沒有人參與并約束的AI將會是個危險品,所以不用擔心AI是否取代軟件工程師,相反會需要大量的軟件工程師,我們需要密切關注,積極調整自身以適應這個趨勢。
主持人:就因為劇烈的變化,您可能會提出一些疑慮,那我該如何做好面對,在職場上該如何做好職務規劃呢,我想這確實是一個很廣的議題,不但牽涉到自我價值觀,自我實現的層面,也包含周邊資源,包含軟硬實力還有那一些幸運的成分。
學習力
主持人:會多種語言JAVA /C# /JS /PYTHON /C++但都沒用到太深,半桶水的感覺不踏實,怎解?而我已年過35,這樣的案例請艾心跟我們分享一下怎么面對。
艾心:有時候,就我自身而言,我也會有焦慮,我會擔心五年十年后,自身的生產力會下降,會逐漸被后來的人趕超,相信有我這種焦慮的人會有很多。一位社區朋友曾在自己的文章《讓人迷茫的三十歲,從專業技能、行業知識和軟實力的人才三角談起》提到掌握一門核心語言非常重要,在語言之外的其他專業技能,諸如設計模式和設計原則、對于算法等的理解程度,都是開發者非常重要的能力。
我對這句話很贊同,語言發展到現在,出現過很多的框架,但是不變的是,那些最基礎的部分,算法、數據類型、設計模式、設計原則等等,有了這些基礎技能,才能更好的討論職業規劃和應對焦慮。
職業規劃這個話題比較廣,萬變不離其宗的就是自身能力的提高,包括硬實力、軟實力以及機遇等等。首先我們要對自己做的事情充滿信心、充滿熱情,不管你使用什么樣的語言,C#、JAVA、GO、Python等等,可以選擇其中一門語言,并將其作為自己的核心語言,由于語言的共通性,可以很快地舉一反三學習其他語言。
或者我們可以換種形象的說法,我們的Title應該是軟件工程師,而不是.NET/JAVA軟件工程師。
其次懂得觀察變化并及時跟進,每一個新的變化總會帶來新的需求。大齡程序員確實存在著尷尬的境地,和處于巔峰時期的自己相比,項目開發的速度可能并沒有那么快,但是大齡程序員最大的優勢在于對業務的理解能力、對技術的平衡選擇性以及對項目的合理安排,不過大齡程序員必須要保持學習。隨著工作資歷的增長,程序員也要適時變化,從更高維度豐富自己。
主持人:是的,所有的學習都是漸進式的,學習都是一些苦差事容易遺忘,但是計算機的不會,它的原理,算法的構成都是前人的結晶。掌握大方向,掌握先有的業務一點點深入,遇到問題知其然更知所以然,這邊累積程序員解決問題的能力一定是不二法門。it的類型是錯綜複雜的,網絡,計算機原理,應用軟件,逆向工程,這些領域都需要經年累月才能有一些成果。我們不能停止我們的業務,除非你轉行了,在自己的項目裡,了解業務流向,能夠自行畫出流程圖,能夠說出業務,另外對學習框架源碼原理的探索才能幫助你走的遠。這些都要自我提高學習力,怎麼提高?動力從哪來?更怎麼定位自己,艾心你如何看待學習力這一塊呢?
艾心:工作了很多年,我依然會十分重視基礎,同時還會繼續買書、讀書,我不認為學到了一定程度的人可以避開書籍。推薦大家多閱讀一些經典圖書,經典之所以成為經典,就是因為這些圖書里總結很多前人的經驗,使得我們可以站在巨人的肩旁上。最近我正在閱讀《代碼大全》、《重構》、《代碼整潔之道》,在這里也推薦給大家閱讀。
學習要有專注性,掌握自己的核心語言,并可以通過舉一反三的方式學習其他語言,不要隨意變換自己的職業方向,因為這也是自己學習的方向。
可以多閱讀一些框架源碼,學習其中的設計思路,設計原則以及編碼風格。
另外,我們可以加入到社區中,可以收獲一大波志同道合的技術伙伴,同時關注工作中、社區中的問題,解決這些問題可以幫助我們完善自己的知識網絡,填補自己的知識空白。從我的個人經驗來看,帶著問題去學習是最快最有效的學習方式。學而不思則罔,我們還需要養成時常總結的習慣。
最后,學習是一個持續的過程,也是一個不斷完善,不斷更新自己知識的過程,當一切做到極致的時候,你就是行業專家。
這里引用喬布斯的名言:Stay Hungry,Stay Foolish。
同時IT的行業的熱門程度,使得很多人非科班出身的人,都想嘗試一下。
小白,那么該如何自學編程呢,首先要有一個學習目標,是想要了解還是想要將其作為自身的職業發展,如果想要了解的話,那就不需要太深入,可以寫寫循環語句、寫寫運算符相關的代碼,就差不多了,推薦學學JavaScript,只需要有一個瀏覽器,然后點擊F12即可調出控制臺去運行代碼了。
當把編程作為自身的職業時,需要學習的東西就很多了,建議先學一下計算機導論,然后再開始學習一門語言。語言的選擇,不需要看哪門語言最熱,就學習哪門語言,而是你要做什么。你要做前端,免不了要學習JavaScript、HTML、CSS等等,后期還可以學習前端框架,如AngularJS、VueJS等等。如果要做后端,可以學學C#、JAVA、GO等等。學習第一步是,你需要了解語言的特性,可以看看視頻,網上有很多,然后再去嘗試在IDE上編寫代碼。
總之,自學一門編程語言要多動手、多思考,還要有足夠的耐心和毅力。最后,祝你好運。
主持人:所以良好的自學,半路出家也是能達到高水平,業界很多黑客,頂尖程序員也都是透過自學來完成一個優秀項目到開發。接觸的語言對多了框架多了,都會發現基技術的每一次release都是為了解決先前的問題,如何找到適合自己的技術呢?首先要定位自己的角色,角色不同工具,想法,領域就不同,我們可以從選擇領域跟類比技術來找出適合自己研讀以及拿手方向。
團隊力
主持人:我們從四個方向來看接觸一門領域時我們要知道并了解是什麼,而如何學習,可以從豐富的文檔來著手,為何使用,為何產生這樣的技術?是要解決什麼問題哦?能解決業務的需求嗎?還有如何應用?應用這一塊需要經驗,這需要不斷嘗試,許多業界最佳實踐,都是這樣而來。接著我們來談談團隊,當項目降臨的時候該如何操作,艾心帶多許多項目,交給艾心來分享。
艾心:IT項目更多的是團隊化合作項目,想要全流程貫通還是非常困難的,尤其是在項目趕進度的時候,所以每人負責其中一部分就成了主流的工作模式,這也意味著我們需要更好的與團隊成員進行協調溝通。
團隊協作需要我們遵守共同的規范,共同的愿景,彼此信任,并能做到友好溝通以及傾聽大家的意見。由于項目中每個人對業務的理解程度并不一致,在開發過程中的思維碰撞也會相應增多,這更需要TL去發現并解決這些碰撞點,以使項目可以沿著正確的方向推進。TL還需要在分工明確的情況下,靈活處理項目推進過程中的新問題,不可過于依賴分工。
主持人:那么好的team leader該如何來帶領項目呢?相信PM都會說可以用敏捷啊。但是你知道大部分的敏捷都是假議題,是不正確的嗎?我們跳開敏捷的思維從基礎面出發。我們應該從項目的基本面、項目目標、工具、內容、任務來看。剛剛艾心提到專案的目標是非常重要的,成員才能往一致性的道路前進。還有良好的項目管理工具列出代辦事項、處理專案內容、收斂用戶的需求,別讓天馬行空的需求讓成員叫苦他誒連天,同時傾聽成員的意見不管在實務技術面還是在理想層面,最后如果是做為成員,要回報pm負責任務的進度與狀態,讓pm能跟著項目進度調整任務優先級,達成彼此協作的目標,在團隊上還有一些重要的信息,象是代碼審查,開發習慣等。
艾心:好的項目除了要有好的團隊協作外,從個人角度來說,還需要有良好的開發習慣,不過這個話題很難在短時間說得很清楚,在這里像大家推薦一下《代碼整潔之道》,這本書向我們傳達了一種理念:代碼質量與其整潔度成正比,干凈的代碼,既在質量上可靠,也為后期維護、升級奠定了良好基礎。
從我的經驗來看,編寫好的代碼,還需要有好的設計思路,糟糕的設計會讓邏輯變得復雜,代碼量變得龐大而且穩定性欠佳。那么怎么樣才算好的設計呢,那就是越簡單越好,越是簡單的代碼,其表達能力就越強、職責越是明確,這也會形成模塊化聚集,也就是很多人喜歡說的高內聚、低耦合,其實好的編程習慣會自然而然的達到這種層次,也很容易查看到其中隱藏的缺陷。
同時,我們還需要設計良好的命名規則,好的命名可以在一定程度上承擔注釋功能。但是我們依然需要有注釋,為的是我們可以快速回溯以及方便團其他隊成員更快的入手項目。我們的注釋應該是簡潔明了的,但是不需要花費太多時間把注釋寫的面面俱到。
最后,我們還需要對我們的代碼進行良好的排版,比如合理利用換行、空格、Tab等,這些需要大家在實踐中不斷總結。
源代碼管理的必要性是無可置疑的,它可以幫助我們記錄和跟蹤項目中各文件內容的修改變化、當前修改的影響范圍以及提升團隊協作能力等等,都可以通過版本管理工具來實現,常用的版本管理工具有GIT、SVN。
很多時候,我們需要對代碼進行嚴格的審查,這里我們需要樹立一個理念,就是代碼審查并意味著能力弱,相反是個人以及團隊快速成長的需要。通過代碼審查可以降低被忽視的錯誤所帶來的風險,畢竟再好的開發人員也難免會馬失前蹄。
同時,代碼審查還可以提升代碼質量,因為集思廣益后的思路,總是會帶來很多的驚喜,比如大幅度降低代碼復雜度。
代碼審查還可以做到互相學習的作用,互相提高。
結束
到此我們對三大力進行了概括性的通盤解說,提出了一些觀點與資源含有一些你可能聽過或沒聽過的名詞術語,運用您所獲得的三大力,開啟你的在it路上的新道路。時間也差不多,我們想給大家分享的到此結束,但it是無止境的路,我們也會在公眾號上回答您的問題,只要您愿意與我們互動,我們是社群愛好者,不是盈利企業,希望對社區貢獻出一點與大家一同進步。謝謝各位今日的參與,我們下次再會了。公眾號回復:座談會資料,獲取相關連接
總結
以上是生活随笔為你收集整理的IT从业者的迷思与求解之道——座谈会实录摘选的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 程序员过关斩将--数据库的乐观锁和悲观锁
- 下一篇: 从零开始实现ASP.NET Core M