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