CODING 職場做了什么?

工作對于大部分人而言,是個人時間分配的大頭。也是個人付出精力最多的一部分,同時也不僅會對現(xiàn)在的生活,自己的未來產(chǎn)生潛移默化深遠的影響?所以不僅自問,付出了這么多的精力,拋去薪酬,工作中到底做了什么?這與自己對于自己的定位是否一致?站在現(xiàn)在這個每天都發(fā)生很多變化的時代,自己的工作在其中是個什么角色呢?我想,這是自己對于自己工作意義的梳理,也是自己將自己從日常的瑣碎中跳出來,嘗試宏觀角度觀察的一種嘗試。

編碼工作,在工作類型定義中屬于技術類。對于技術類工種,由于專業(yè)門檻的限制,對于門外人常常來講是很難理解。大多數(shù)情況下,就是雞同鴨講?!度朗锾一ā放c《動物世界》般的不在同一個頻道。

先來點準備工作,技術基礎知識簡單一覽。

語言。以Java為例,首先是語法。在我看來第一重要的是就是幾種判斷分支。

1 順序模式,也就是作完一件事之后,接下來做什么。

1 if else 模式 ; 在什么條件下,執(zhí)行什么操作,并且可以考慮到多種條件.

2 for 循環(huán)模式;這是機器運算與人腦思維很大不同的一個方面。對于計算機而言,假如要尋找100個人中手里,誰有超過1000塊錢的零錢。使用遍歷模式,取出每個人有多少零錢,然后進行判斷。瞬間搞定。而對于人類思維而言,使用同樣的方式效率是很低的。對于機器而言,100還可以繼續(xù)往上累加。1000,1000區(qū)別也僅僅是毫秒級別的區(qū)別。而如果在循環(huán)中嵌套使用循環(huán),可解決的問題就更多了。

第二:如何進行運算?這里包括邏輯運算與數(shù)學運算。邏輯運算,就是非,且,或。數(shù)學運算就是加減乘除,或者使用數(shù)學公式進行計算。

第三:書寫方式,書寫規(guī)則。

第四:語言本身的設計。Java是面向對象的語言。在java中新建對象。每個對象都有很多屬性。比如定義一臺電腦。這個從不同的角度來看就會有不同的內容。對于有些人來講,電腦就是一堆硬件的組合,顯示器,鍵盤,攝像頭,主板,內存條…那么這個時候電腦就是由這些組成它的硬件屬性組成的。打開這個電腦對象,里面就有這一堆硬件。對另外一些人來講,電腦是其工作生活的工具,有文字處理軟件,有視頻播放器,有各種游戲軟件...那么對于這些人來講,打開電腦,里面的屬性就是這一堆堆軟件。估計很多人會立馬反應過來,這不就是按照不同標準就是分類的,是的,就是這樣的。按照每個人不同的場景,建立對應的對象。從而可以調取到自身需要的屬性。

作為語言而言,最核心的也就這些了。

對于自然語言而言,上面列舉的內容更像是在進行想法梳理時候使用的邏輯工具及最終的文字展示。但是這些想法是如何對應到程序的世界中的。那就是數(shù)據(jù)。處理數(shù)據(jù)的保存與提取有專門的工具就是數(shù)據(jù)庫,這就像倉庫,存儲著很多貨物,并且對外提供很多調取貨物的方式。數(shù)據(jù)庫也是一個廣闊的領域,這里面的內容也是需要花很長時間能慢慢接觸到與掌握的。

算法,提到程序不能不提到算法。算法這個詞不僅僅在IT圈閃閃發(fā)亮,也是社會生活中,媒體報道中經(jīng)常出現(xiàn)的詞。最簡單的解釋就是:“解決一個問題的方法”。在很多程序員的心中,算法就是IT領域的耶路撒冷,誰算法牛逼,誰才是真正的大牛,也是衡量一個人智商是否是真高的硬邦邦的指標。

上面提到的語言語法,數(shù)據(jù)庫,算法。是進入CODING世界第一扇門。這個門在每一個方面都有需要很多精力才能研究明白的內容,不過其實有個粗淺的認知,也是可以繼續(xù)下面的路了。這就像剛拿到駕照的新手與職業(yè)賽車手的區(qū)別。拿到駕照只是第一步。

接下來進行第二波。構建在最基本語法上的社會化協(xié)同與共享。這才是IT工作門檻降低,與整個開發(fā),研發(fā)效率提高的原因,社會信息化程度加速提高最重要的助推力。

先說框架,框架就像一個工具包,提供系統(tǒng)級支持與特殊工具。就像開始建一棟建筑之時,工地上各種設施與人員。因為這些無論是建造任何一個建筑都需要的。所以建造完這棟建筑之后,這批人又可以到另外一處,再建造新的建筑。這不由讓我想到某某施工單位,包工頭。對,他們就類似IT世界的框架。正因為有了他們的存在,建筑設計師才有更多的精力去在設計上去思考整個建筑如何設計,而不是去想在哪搬磚,誰來搭這塊玻璃?;诖耍绦騿T們才可以將更多的精力去面對市場的需求,去思考如何實現(xiàn)需求,實現(xiàn)業(yè)務。而不是從頭到尾什么都得再來一遍。

對于框架,大的公司都有自己的框架。滿足本公司的開發(fā)需要,開源社區(qū)的壯大,造福了很多小公司與初創(chuàng)公司,讓他們沒有必要再造輪子??焖倜鎸κ袌龅男枨?。

開源社區(qū)的壯大,為很多公司,個人提供了一些基礎服務,這些服務都是免費的。同時對于程序員個人來講,更是加速了個人的成長?;ヂ?lián)網(wǎng)上大量優(yōu)質的源碼很多都來源于此。同時極大的提高了整個世界的信息化程度。非程序員只要學習能力強,也可以快速成長。同時,不斷又有著來自世界各地優(yōu)秀的人才對此的貢獻,讓整個開源社區(qū)的社會影響力越來越大。在我看來,這一切促進了信息不同區(qū)域,不同國界的流通。是對傳統(tǒng)世界權威性,集權化的不斷挑戰(zhàn)。

對于上面提到的工具有個基本的了解,就可以工作了。

大部分程序員從事的都是業(yè)務需求的開發(fā)。從事科研性質的開發(fā)只占少數(shù)。接下來就說業(yè)務需求的開發(fā)。

肯定會遇到哪些糾結?

剛開始從事開發(fā)的時候,會經(jīng)常面對一些簡單的錯誤,找半天找不到。找到了就有一種捶胸頓足的感嘆!比如大小寫,比如分號寫成冒號,這些不太注意有時是很難發(fā)現(xiàn)的錯誤,每一個程序員都會經(jīng)歷這個階段?,F(xiàn)在由于開發(fā)工具的日益強大,語法檢查,高亮展示,debug模式的快速定位,編譯時進行的語法檢查。這種情況也越來越少了。這就像,剛進入一個行業(yè)之時,幾個老手與一個新手一起喝酒聊天,新手沒有意識到自己說了傻話。

接下來,就是對于分解后的需求的理解。剛開始也許都會天真的以為,需求就是組長所說的那樣,在開發(fā)過程中,一看之前的源碼,怎么與需求有矛盾的地方。是我理解能力有問題嗎?這個時候,要么是自己對于需求理解的不全面,沒有想到邏輯中另外一種情況,要么是組長本身沒有考慮到這點,更大的可能是也只有在開發(fā)時,才能意識到這個問題。

還有一種可能,就是面對的需求過于復雜。對系統(tǒng)所針對的業(yè)務需求缺乏必要的基礎理解。這會有一段怎么想都想不通的時期,這是一段焦慮,被迫學習業(yè)務的時期,也正是由于這段經(jīng)歷,導致很多程序員對自己所接手功能的了解,甚至已經(jīng)超過業(yè)務人員相關業(yè)務的理解。畢竟,誰是一手讓這塊業(yè)務系統(tǒng)化運行的?

這期間還會遇到技術性問題,不是所有公司都采用相同的技術組合方式,期間就要去掌握項目中所遇到的技術,這又會經(jīng)歷一段糾結期,不過這類糾結期,隨著經(jīng)歷的次數(shù)越來越多,每次持續(xù)的時間就會變得越來越短。因為,慢慢的學會把握其中的設計理念與設計思路。

上面提到的幾種糾結,基本錯誤的糾結,需求解釋過程中信息損耗造成的糾結,歷史代碼造成的理解糾結,業(yè)務需求理解的糾結,技術學習遇到的糾結。是每個程序員從事這個工作必須經(jīng)過的挑戰(zhàn)。

其實還有種糾結,面對未來的焦慮。新的技術不斷涌現(xiàn),大牛怎么能達到那種程序?社會化標簽的不斷報道,比如將程序員和直男掛鉤,年紀大了從事不了編程工作。并且由于程序員是與互聯(lián)網(wǎng)連接最緊密的一群人,所以更容易接收到更多這樣的信息。

盡管有如上種種糾結,但是大部分人都過去了,甚至在之后獲得了一些快感,基本工具用熟之后,基本錯誤越來越少的快感。需求溝通時,本能的知道這里面會有哪些坑,假如這就是傳說中的那個“項目經(jīng)理”,就知道其靠譜不?這個需求的編碼實現(xiàn)方式,被自己以一種牛逼的設計方式解決了。而這種設計靈感竟來源于很久以前不知在哪看過的一段話?或者自己不想再使用之前的寫法了,換個方式寫寫。

這個階段的掙扎于成長與很多行業(yè)的掙扎與成長是具有很多相似點的。剛開始,總是搞不定客戶,總是不知道原由?一段糾結期,尋找答案,定位問題??蛻粜枰裁矗课夷芴峁┦裁??我提供的界面是真的友好嗎?一步步調整,直到拿到第一單。會計,面對大量繁瑣的事情,奇葩們的反應讓人總是不能讓人保持Inner Peace。有時甚至還會觸碰到法律邊緣的取舍。面對的事情不同,復雜度不同,復雜的方式也不同,政治正確也不同。不過,都得經(jīng)歷這些掙扎與自我審視,自我突破與自我成長。

程序員到了這一階段,可能就要分叉了。不是復雜的科研性質的編碼,隨著理解能力與熟練程度的上升。業(yè)務需求的編碼工作會慢慢駕輕就熟,提不起興趣。有人走向了項目管理崗位,有人走向了更專的技術研究領域,有人對于業(yè)務的理解日益精深,逐漸轉崗到其他崗位。在我看來,如果處在這個階段,不進則退,幾年之后就沒意思了,還不如搞其他工作了。

近水樓臺先得月。由于平時大量的工作,是不斷分析需求,想如何實現(xiàn)需求。這一過程中培養(yǎng)了解決問題的耐性與習慣。個人心智在這方面模塊是經(jīng)得起考驗的。

另外一點,也是很重要的。讓我們眼光看向市場,市場每天都在傳遞各種各樣的需求。自己有這樣的基礎,有機會去實現(xiàn)這種需求。肯定不會面對“我什么想法有了,就只差一個程序員了”這種情況。就要將自己的目光面向信息源,去分析信息源的需求,無論自己將來走向了哪條道路?這個歷練過程也將會是一個啟發(fā)個人心智,定會有潛在收益的個人投資。

人是社會關系的總和,開源社區(qū)的發(fā)展正是借助于不計其數(shù)的程序員或者愛好者的共同協(xié)作。所以最有意思的事情,讓自身融入到時代之中,莫讓自己成為工具,工具會讓我們看的更加清楚,而不是管中窺豹。有時甚至,需要拋棄手中的工具。看懂這個時代的需求,長久以來的訓練是為了讓我們看的更懂。所以要學會使用自己的能力。不可辜負大好年華!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容