當前位置: 妍妍網 > 碼農

給大二學弟的建議:技術不是用得越多越牛逼!

2024-05-17碼農

大家好,我是程式設計師魚皮,今天分享一個 90% 以上初學編程做計畫的同學都會遇到的問題 —— 做計畫時,盲目使用技術。

1

事情是這樣的,編程導航裏一位大二下的學弟前段時間找我做了好幾次咨詢,說自己已經學了很多微服務、中介軟體相關的技術,比如 Dubbo、Nacos、RocketMQ 等等,但是學完感覺沒什麽收獲,很多知識和技術感覺並沒有掌握。

這是很多初學初學編程同學的通病:學完技術不去用,結果過段時間就忘了。

所以我經常跟朋友們說,當你學完一個新技術後,要第一時間想著做計畫,在計畫中實踐,知道怎麽根據需求合理地運用技術,才算是掌握了。

因為他才大二下嘛,時間和機會還很多,所以就讓他把主要的精力放在提升計畫經驗上,也讓他去讀了我的計畫學習建議。

魚皮計畫學習建議:https://yuyuanweb.feishu.cn/wiki/Q4AdwjLDWiLZy0kAjHqcQinon8N

2

學弟很爭氣,過了沒幾天,就跟我說要作為隊長參加中國軟體杯大賽了,然後想問應該如何帶領隊友開始計畫。

我一看,這是好事啊!我也非常鼓勵大學生多參加競賽,尤其是作為隊長,可太鍛煉人了。

結果讓我有點意外的是,這位學弟想報名的賽題名稱是 「涉詐 APP 智慧辨識分析系統」,賽題要求中涉及:APK 檔的解析、特征提取、訓練基於 AI 的 APP 研判模型等。。。

然後我給了他幾分鐘的語音回復,學弟表示有點感動 hh。

我當時給出的核心建議大概是:參加比賽前首先要做的不是思考怎麽具體去實作某個賽題,而是要先想明白參加比賽的目標和意義,比如為了獲獎、為了提升自己,還是別的什麽。參加比賽是好的,但是要選擇和自己求職方向、擅長方向相關的比賽,目前這個賽題的核心難點不在於後端開發,會有更專業的學信安的同學來參加,獲獎機率也不大,所以個人認為參與的價效比不高。更何況這位學弟的隊伍只有 3 個人,還都是軟體工程專業的,基本沒什麽競爭力了。如果實在要參加,就需要找到合適的隊友,大家分工合作。

3

學弟很開竅,沒過幾天,就跟我說他們又換了一個賽題,這次要做一個結合 AI 大模型的 Java 套用。並且還參考我之前的建議,做了功能模組圖和技術選型,現在想讓我給點建議。

我看了他們的功能模組圖,設計的簡直太好了!功能簡直太全了!

但也正是因為 「功能太全了」,給我的感覺是他們要開一家公司去做成熟的產品了,而不是要參加一個小比賽。

舉個例子,他們要做的是一個 AI 工具,結果功能模組圖裏面有:使用者素材庫、數據視覺化、多媒體提取、VIP 會員、訊息通知、評論、熱點發現等等。。。

於是我的第 1 個建議是:這麽多需求,先做哪個後做哪個?有些功能真的有必要做麽?

我大學時剛開始參加競賽、包括剛開始做自己的產品時也是這樣的,總想著功能越多越好,但是常常忽略了做新功能的意義,忘記了目標。比如現在這位學弟的目標是競賽獲獎,那麽應該把重心放在能給比賽加分的、核心亮點功能的開發上,比如 AI 模組,像 VIP 會員、訊息通知這些功能,都不是核心需求,也不影響核心業務流程,對競賽來說都是可有可無的。

第 2 個建議是:找到你覺得最難實作的功能,並思考如何實作?有沒有卡點?

我相信很多剛開始做計畫的同學,是不會去做整體的方案設計和排期的,而是先把自認為簡單的功能做出來,比如使用者註冊登入。但如果最後你才發現 AI 模組搞不定,你前面的 「一頓操作猛如虎」 還有什麽意義麽?起碼對比賽獲獎這件事來說,幫助沒那麽大了。

第 3 個建議是針對學弟的技術選型來說的。這個不涉及什麽敏感資訊了,都是主流的技術選型,就先給大家看一下吧:

大家看到這個技術選型圖,是什麽感受?

個人認為,雖然畫的不錯,技術也列舉地很全面,但對於一個比賽來說實在是 「大可不必」!

因為我也是從這個階段過來的,給大家看看我大學獨立開發的、拿去參加競賽的一個作品。一個線上刷面試題的計畫,背後用了微服務、Redis 集群、甚至還搭了大數據集群和區塊鏈節點!

結果去參加比賽的時候,人家才不管你背後用了什麽技術,而是要看你是否符合比賽的要求,產品本身是否有亮點。

所以我讓學弟思考:這麽多技術,真的有必要用麽?

做商業計畫也是這個邏輯,技術是為業務服務的,應該先盡可能 減少 復雜技術的引入,完成核心功能,再去逐步引入新技術來最佳化系統和解決問題。不然只會把簡單的事情想復雜。

而且即使你真的在比賽中用到了上面那些技術,也已經不是什麽亮點了,微服務已經可以說是後端必學的技術。

4

萬萬沒想到,學弟又來找我了,這次他梳理了一些功能模組,並且問我:系統是用單體還是微服務去完成?

首先我看了下比賽要求,沒有強制要求使用微服務,也並沒有關註後端架構,而是要求開發者必須完成某些功能。而且學弟團隊只有幾個人。

所以我的答案很明確:先單體再微服務,別把簡單的事情做復雜。

結果學弟問我:單體再微服務,那為什麽不直接微服務?

老實說,這次我有點哭笑不得,感覺他並沒有理解我之前的建議。於是我反問他:你覺得有必要麽?微服務的作用是什麽?做產品的核心目標是什麽?核心功能需要用到微服務來實作麽?

思考清楚這幾個問題,我想這位學弟之後參加比賽做計畫的時候,能夠少走很多彎路吧。


大學時期,我看過太多同學認為 「技術用得越多越牛逼」(包括我曾經也是這麽認為的),結果比賽無法獲獎;工作之後,也看過太多程式設計師把 「各種高大上的技術掛在嘴邊」,結果業務需求都理解錯了。

當然,如果是為了自己學習成長而做計畫、運用技術,是完全沒問題的。還是那句話,想清楚自己的訴求,並且針對訴求去設計和安排工作吧,共勉!

👇🏻 點選下方閱讀原文,獲取魚皮往期編程幹貨。

往期推薦