前言:最近收到很多讀者朋友私信,問我如何學習編程,這個問題其實很難正面回答,而且本人也確信自己達不到指點別人學習的高度,這篇文章基于作者自己這幾年趟過的路,和大家聊聊編程學習的話題,僅供一些感到迷茫的朋友做點參考,
一、面對選擇
1、編程語言
學習編程的第一件事就是面對語言的選擇,編程語言五花八門種類繁多,不同的技術型別適應不同的應用場景,所以語言本身沒有高低之分存在即合理,學會做選擇才是入門的關鍵;
【建議】 在選擇之前對主流的技術選型做對比了解,熟悉不同編程語言的學習成本、難度、適用場景、市場需求等基本情況,具體如何選擇可以從如下幾個方面思考:
- 興趣使然:自己感興趣的東西才能更加容易的持之以恒,技識訓累最需要的就是堅持不斷的沉淀,沒有其他所謂的捷徑可走;
- 主流語言:在單純做語言選擇的時候,更推薦從主流中選取,市場的作業機會多,這樣求職壓力就會減少,從各大招聘網站上搜索即可得到參考性資料;
【建議】 在時間允許的情況下,除了深入學習一門主流語言,還可以對其他技術做入門級的學習即可,如果時間不允許,那就一定要專注在一門語言上,以提高專業水平和市場競爭力,
2、入職公司
作業上對于入職的公司選擇,網上各種分析帖已經說的十分透徹了,通常來說,如果真的具備選擇不同公司的能力,都不會糾結于如何選擇,首先看如下幾種型別的公司:
- 創業型:有資源、資金、好的想法的創業團隊,加入的門檻是最高的,如果能在公司初創期加入,可能3-5年就會成功的走出職場;
- 大公司:復雜的業務模式,龐大的系統架構,嚴謹的協作流程,這是大廠的基本標簽,所以在大廠不夠鍛煉人的說法有點迷,職場絕不單看技術能力;
- 小公司:小公司與創業型公司有本質上的區別,這里更多的指業務模式單一體量較小的公司,很容易出現一個人擔任多個角色的情況,確實鍛煉人;
以上說法只是大概率的普遍現象,不針對個別不同的情況,通常主流的建議都是推薦選擇對自身發展有影響的公司,以便于更快的積累專業能力,這樣后續有更寬闊的選擇空間,在職場初期也大多會這樣選擇,
【事實】 上在職場沉淀幾年之后,多數人再次面對選擇的時候,首先考慮的就是薪水高低,人一但嘗過生活的五味雜陳,就能體會到經濟能力才是對選擇的最大支撐,用一句經典的話來解釋:人到中年身不由己,上有老下有小,基于普遍的真實狀況來看,薪水的高低與公司入職門檻的高低成正比,
3、發展路線
職場上發展路線是至關重要的,作業的前2年,需要不斷積累專業的技術能力,隨著經驗的積累薪水的提高,尤其是心態上的不斷變化,堅定不移的走技術路線的人很少,這與當下互聯網的環境有最直接的關系,這里說幾個常見的發展路線:
- 技術路線:需要對技術追求抱有持續的興趣,技術既要具備深度也要具備廣度,大多數開發在職場初期可能都具備這種心理,但是隨著職場的不斷磨練和環境的影響,追求技術的熱情,也許會被磨的平淡;
- 管理路線:技術向管理角色的轉變,因為互聯網的環境原因或多或少存在一定的被動因素;多數公司站在需求與成本平衡的角度,對于極具技術深度的人才需求并不強烈,技術能力較好同時具備業務和團隊的管理能力更受職場的歡迎;
- 創業路線:在互聯網領域中機會還是比較多的,各行各業都在提倡互聯網+的背景下,如果在職場中有了足夠的能力、資源的積累,會有相當一部分選擇嘗試創業;
【注意】 如果把技術當成解決業務的工具,即使對技術深度的追求不多,也要對技術的使用做到細致與熟練,對于專業范疇內的能力是不能打折的,遇見過少數的技術面試這樣解釋自己的綜合能力:因為追求于專案管理或者業務解決能力,所以欠缺技術細節方面的沉淀,這種思路當真是清奇,
二、技術堆疊整理
上面聊編程中關于選擇的熱點話題,這里來說具體的技識訓累,作為一名Java編程選手,下面主要圍繞相關主流的技術堆疊與進階程序做梳理,大致分為基礎、進階、高級三個階段,受到作業經歷與經驗的影響,所以在劃分的時候存在諸多主觀因素,
1、基礎篇
在衡量一個開發人員的能力時,通常會提到一句話:技術深度與業務高度,這里說的技術深度,至少有6-7成的因素是指基礎能力的深度,經常閱讀框架的實作原始碼會發現,都是對于JDK原始碼、設計模式、結構演算法的排列組合,從而形成解決某類場景業務的組件,

【建議】 在有大量模塊化空閑時間的階段,把主要精力持續放在以上基礎模塊,是收益最大的選擇,這里更多指大學階段,編程中越是基礎原理就越復雜,這是普遍認可的共識,所以這個模塊在學習的時候對于時間成本要求較高,一旦進入作業階段,很難在抽出整體的時間細致的回顧基礎模塊,
假設Java的集合容器模塊,用1-2周的時間,從API使用到原始碼邏輯,分析內在的擴容機制,涉及的演算法與資料結構,進而再上升到設計模式的實踐,流程這樣走下來對于基礎的理解就具備一定的深度了,也自然達到觸類旁通的效果,那么對于IO流與并發也就是相同的原理,
2、進階篇
這里羅列的是當前技術選型中常用的框架與組件,當進入作業階段之后,會接觸到各種不同的開發組件,學會熟練使用不同的組件去解決不同型別的需求是不可缺少的能力,這時候對于框架原理的理解,完全依賴于基礎能力的積累程度,

【說明】 一下,最近幾年隨著對互聯網資料的重視,很多公司都在做資料的采集沉淀與分析,同時大資料領域的開源組件推出,已經榷訓了Java工程師與大資料工程師的邊界,所以對于大資料技術堆疊的了解,對于管理海量的業務資料是至關重要的,熟悉3-2個資料存盤查詢的組件,會提供更開闊的技術選型思路,
3、高級篇
當能力到達這個階段,基本上就是架構師級別的水準了,同樣的道理這個階段依賴于基礎和進階能力的沉淀,鑒于作者本人沒有歷經過架構師的職位,所以無法給到主觀的建議,只是對于團隊中架構師的職責做的分析,主要在于提供技術堆疊的選型和復雜業務的解決方案,流程自動化是分布式系統的必要支撐,

【注意】 這里只是單純的技術進階的角度,關于衡量開發人員的另外一個核心因素:業務高度,站在客觀的角度去看的話技術與業務能力需要一比一提升,業務管理也是走出開發角色的基本要求,
三、業務管理
從入職場開始,因為沒有待過純技術型的公司,所以都是在圍繞業務場景做編程開發,能感覺技術能力有較大提升的階段,都是在解決復雜業務之后的反思,業務的底層邏輯是流程管理與模型建立,如何認知復雜的業務并進行抽象設計是技術水平的直接體現,
【然而】 在公司的日常面試作業中,時常會遇到少量求職者表達自己單方面的訴求:一種是希望公司可以提供技術發展路線,而不是常年累月的業務版本;另一種則希望公司能提供業務發展路線,入職之后可以慢慢脫離技術方向,如果站在招聘需求的角度去考慮,建議在求職面試時不要表達這種個人發展路線的追求,因為多數公司的招聘目的都是:需要技術人員來實作業務需求,
【誤區】 職場上的新人選手,很容易產生這樣一種心里:每天都是理不清的業務需求,改不完的坑坑洼洼,然而換個公司和環境之后,會發現依舊是這種作業節奏,所以在新手階段就用樂觀的心態去面對各種業務模式,并且持續的學習和總結各種業務解決方案,這是開發同學技術轉型的核心競爭力,

【通常】 來說,業務是關聯公司各個角色的連接點,對于業務解決方案都會以各種檔案的形式記錄并沉淀下來,這也是團隊常用的一種管理手段,也方便以后在類似的業務中提供借鑒參考,不斷提升業務落地的能力和效率,實際上大部分開發選手都會選擇技術與業務同時積累的方式,盡量放大自己職場的可能性,
四、拓展能力
拓展能力作為職場上必備的軟技能,并不是程式員才需要具備的,對于常說的管理能力、流程規范等都是經驗積累的體現,至于這些能力如何去積累很難一概而論,因為不同的環境經歷的不一樣,好的多借鑒,差的作為反面教材即可,這種能力通常在一段經歷之后花點時間總結反思就會明白,

【特別】 說一下關于認知這種抽象的話題,因為存在于產品開發的各個環節,在職場上也會經常聽到,認知導致思路對不齊,所以不管是產品、開發、專案經理;如果認知角度單一,看法就會片面,如此在流程協作中很容易產生極大的分歧,
五、學習與積累
專業的作業能力和經驗積累包括多個方方面面,技術、業務、軟能力,這種沉淀是一個持久的程序,以樂觀的心態去學習遇到的冷門技術堆疊,用平靜的心情去研究熱門的新框架,并且不斷的總結業務實作的方案,最后祝大家:風平浪靜、揚帆遠航,
同系列推薦
- 3天準備5天面試,跳槽完成
- 跳槽之后,如何平穩走過試用期
- 作業五年之后,對技術和業務的思考
- 個人成長中,關于規劃設計的思考
- 站在面試官角度,看求職與內卷
- 簡簡單單的總結,意如生活的平淡

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/412942.html
標籤:其他
上一篇:簡簡單單的總結,意如生活的平淡
下一篇:MongoDB 索引
