前言
百度多了 你就明白:它也許有用铣焊,但它封印了你精進(jìn)計(jì)算機(jī)英語的機(jī)會(huì)。
Google多了 你就明白:各地大佬們的文章很Nice罕伯,但它們僅是你技術(shù)知識(shí)體系的精華補(bǔ)充曲伊。
開始讀書了 你就明白:你以往東拼西湊幾十篇爛文才明白的事,書上那幾頁紙都寫著追他,而且詳細(xì)的很坟募。 接觸到國外大社的書后岛蚤,你就明白:國內(nèi)那些21天寶典,7周速成婿屹,都是些什么玩意灭美,誤人子弟! 圖靈牛逼昂利,動(dòng)物牛逼届腐,Manning牛逼。
好書讀多了 你就明白:技術(shù)是一環(huán)扣一環(huán)的蜂奸,有牢固的技術(shù)知識(shí)體系犁苏,學(xué)啥都事半功倍。
書不夠看扩所,還可以看論文围详,經(jīng)典的如 raft論文,rest論文祖屏,算法同學(xué)也是不斷地在看頂級(jí)期刊的最新論文
多做業(yè)務(wù) 你就明白:所學(xué)的技術(shù)該用在哪助赞。
多做用戶量大的業(yè)務(wù) 你就明白:光會(huì)用技術(shù),和用好技術(shù)是兩碼子事袁勺。
多找第三方開源 你就明白:原來工作摸魚不是夢雹食。
太隨便用第三方 你就明白:某天需求一變,它兼顧不到期丰,可以把你往死里坑群叶,坑到你得去看源碼。
第一次看完源碼 你就明白:開始還是很討厭的钝荡,等全盤搞明白了街立,發(fā)現(xiàn)“咦~有點(diǎn)意思”。
源碼看多了 你就明白:自己的查克拉莫名的增多了埠通。而且吐槽文檔不全的習(xí)慣也漸漸少了赎离,一個(gè)不服就跑去觀摩別人的源碼,順便偷個(gè)師端辱。
再往后蟹瘾,或許你的技術(shù)確實(shí)突飛猛進(jìn)了,然而你卻只會(huì)覺得編程本來就是這個(gè)樣子的掠手。
https://www.zhihu.com/question/356351510/answer/913928066?utm_source=com.tencent.wework&utm_medium=social&utm_oi=38551810998272
編程是最重要也是最不重要的事
這是因?yàn)椤熬幊淌亲钪匾彩亲畈恢匾氖隆边@是因?yàn)榫幊套鳛榘阉季S變?yōu)閷?shí)現(xiàn)的這個(gè)循環(huán)的最后一步(然后寫好的程序會(huì)成為新的思考輸入和基礎(chǔ)憾朴,開始新的一輪迭代開發(fā)),它和一個(gè)項(xiàng)目一個(gè)系統(tǒng)的所有其他方面都息息相關(guān):需求獲取喷鸽,問題抽象众雷,測試,監(jiān)控,部署砾省,框架運(yùn)用鸡岗,系統(tǒng)間集成,靈活性编兄,未來拓展性轩性,易用性,系統(tǒng)健壯性狠鸳,多版本實(shí)驗(yàn)性揣苏,高層業(yè)務(wù)決策等等,這使得編程變得無比重要(所有的一切都需要編程來最終落到實(shí)地)件舵,也毫不重要(編程被所有其他一切所約束和指導(dǎo))卸察。能夠支撐這些所有上層思考的程序才是“好程序”,能夠支撐所有這些思考的程序員铅祸,才是好程序員坑质。學(xué)好/學(xué)會(huì)編程這件事是把所有需要思考的東西都弄明白都學(xué)好之后的自然結(jié)果。而把這些思考留給別人临梗,自己只做思維和程序的翻譯器(區(qū)分創(chuàng)造者和工具人的關(guān)鍵)涡扼,根本無法寫出好的程序來。這也是DDD(Domain Driven Design) 的精神之一 (關(guān)于DDD的精神盟庞,參見此文的最后一段壳澳, 阿萊克西斯:在做程序員的道路上,你掌握了什么概念或技術(shù)使你感覺自我提升突飛猛進(jìn)茫经? )
鏈接:https://www.zhihu.com/question/356351510/answer/945352381
為什么CTO不用寫代碼,他們的核心競爭力是什么萎津?
https://time.geekbang.org/column/article/92540
優(yōu)秀的開發(fā)=扎實(shí)的計(jì)算機(jī)基礎(chǔ)(How)+產(chǎn)品化思維(What)
扎實(shí)的計(jì)算機(jī)基礎(chǔ)=計(jì)算機(jī)原理+網(wǎng)絡(luò)原理+數(shù)據(jù)結(jié)構(gòu)+算法(包括機(jī)器學(xué)習(xí)深度學(xué)習(xí))
產(chǎn)品化思維
什么是產(chǎn)品卸伞? 只有投放系統(tǒng)或者微信app是產(chǎn)品嗎?
spring锉屈、mysql荤傲、redis、hadoop颈渊、spark遂黍、tidb、zookeeper(raft)俊嗽、設(shè)計(jì)模式都是產(chǎn)品雾家,只不過他們的用戶是程序員。
甚至java本身就是產(chǎn)品绍豁。
滿足需求的都是產(chǎn)品站叼。
對(duì)于程序員來說校镐,我們的每個(gè)方法恕汇,每個(gè)接口都是產(chǎn)品
算法面試題在考我們什么评汰?
面試題1:字符串轉(zhuǎn)換成數(shù)字
Integer.parseInt(str)
面試題2:1億個(gè)數(shù)字找Top5
hadoop clickhouse
如果第一個(gè)數(shù)字是英文怎么辦,如果中間不是數(shù)字怎么辦哭懈。如果結(jié)果大于int.max怎么辦
算法和產(chǎn)品是隔離不開來的,有好的技巧工具,也得有好的產(chǎn)品化思維带到,去確定這個(gè)產(chǎn)品會(huì)遇到的各種場景、邊界然后去合理地組合安排它們英染。
我們說的各種設(shè)計(jì)模式揽惹,不是出于計(jì)算機(jī)性能的考慮,而是我們的產(chǎn)品決定了用哪種設(shè)計(jì)更合理
產(chǎn)品化思維的利器1:抽象思維
抽象是什么意思税迷∮浪浚總結(jié)和提取客觀規(guī)律,發(fā)現(xiàn)共同特征箭养。
消滅重復(fù)代碼就是在做抽象慕嚷。
DRY原則、KISS原則本質(zhì)就是抽象毕泌。
高內(nèi)聚低耦合的前提也是抽象能力喝检。
從3個(gè)以上重復(fù)代碼開始。
例子:訂單和支付單撼泛,要在合適的階段做合適的抽象挠说。
Spring抽象了什么,Mysql抽象了什么愿题,TIDB抽象了什么损俭。
差的抽象思維會(huì)導(dǎo)致什么? 邊界模糊潘酗,各個(gè)領(lǐng)域互相滲透交叉杆兵,系統(tǒng)變的臃腫難于追蹤重構(gòu)
MVC結(jié)構(gòu)的代碼,service代碼全都在controller
好的抽象會(huì)帶來什么仔夺?
高深莫測的機(jī)器學(xué)習(xí)真有那么難嗎琐脏?未來的機(jī)器學(xué)習(xí)可能只是個(gè)封裝好的接口,輸入數(shù)據(jù)得到預(yù)測數(shù)據(jù)(函數(shù)式編程缸兔?) 深度學(xué)習(xí)的本質(zhì)是什么日裙,萬能函數(shù),有了算力的抽象和模型的抽象
產(chǎn)品化思維的利器2:全局思維(需要結(jié)構(gòu)化思維輔助)和可預(yù)見性設(shè)計(jì)
設(shè)計(jì)了效果廣告就夠了嗎惰蜜,將來需要品牌廣告怎么辦昂拂?
光設(shè)計(jì)了投放和計(jì)費(fèi)就夠了嗎? 還有展點(diǎn)銷抛猖,還有用戶負(fù)反饋還有app喚起這些一條鏈路上要關(guān)系的過程和數(shù)據(jù)政钟。
你需要結(jié)構(gòu)化思維把影響到的各個(gè)環(huán)節(jié)都列出來路克,定義好主次、定義好順序养交、定義好邊界精算,才能確定你自己產(chǎn)品的最終形態(tài)。
差的產(chǎn)品的眼界也會(huì)狹隘碎连,只會(huì)滿足一時(shí)灰羽、部分用戶的需求。但是開發(fā)缺乏了預(yù)見性就會(huì)被帶坑里鱼辙,背鍋的還是開發(fā)廉嚼。
產(chǎn)品化思維的利器3:數(shù)據(jù)思維
一個(gè)產(chǎn)品是用來做什么,是為了滿足用戶的需求倒戏,但實(shí)際上我們想要什么怠噪,可能自己都無法確定,太主觀的描述杜跷,無法定量傍念,而且個(gè)人也不能代表群體。
數(shù)據(jù)是后端的下游葛闷,好的產(chǎn)品開發(fā)憋槐,會(huì)站在用戶分析的角度,去設(shè)計(jì)合理地產(chǎn)生數(shù)據(jù)的邏輯淑趾。
ABtest阳仔,MVP(最小可行產(chǎn)品)、敏捷開發(fā)用數(shù)據(jù)驅(qū)動(dòng)產(chǎn)品扣泊。
產(chǎn)品化的最高級(jí)形式:服務(wù)化近范、DDD(領(lǐng)域驅(qū)動(dòng)設(shè)計(jì))
DDD的一些概念:
領(lǐng)域:領(lǐng)域相對(duì)于軟件系統(tǒng)來說,就是系統(tǒng)要解決的現(xiàn)實(shí)問題延蟹,一個(gè)領(lǐng)域?qū)?yīng)一個(gè)問題空間评矩,是一個(gè)特定范圍邊界內(nèi)的業(yè)務(wù)需求的總和。領(lǐng)域來自于需求等孵,但它卻高于需求,相對(duì)于善變的需求而言蹂空,領(lǐng)域知識(shí)和領(lǐng)域模型本身是“靜止”的俯萌,是“不變”的
通用語言(其實(shí)就是產(chǎn)品化思維,設(shè)計(jì)語言要跟業(yè)務(wù)語言一致)
分層:
限界上下文:“限”的意思就是劃分上枕、規(guī)定咐熙,“界”就是界限、或者一個(gè)邊界辨萍,上下文就是業(yè)務(wù)的整個(gè)流程棋恼,總的來說返弹,可以稱限界上下文為業(yè)務(wù)流程在一個(gè)劃定的界限中;限界上下文爪飘,是一個(gè)顯示的邊界义起,領(lǐng)域模型存在于這個(gè)邊界內(nèi)。在邊界內(nèi)师崎,通用語言中的所有術(shù)語和詞組都有特定的含義默终,而模型需要準(zhǔn)確地反應(yīng)通用語言
實(shí)體和值對(duì)象:面向?qū)ο蠛秃瘮?shù)式編程的區(qū)別?
阿里中臺(tái)實(shí)踐
學(xué)習(xí)方法
知乎(關(guān)注大牛和相關(guān)話題)犁罩、掘金齐蔽、頭條(科技卡片)、跟優(yōu)秀的人學(xué)習(xí)床估、公眾號(hào)
獲取書單還是挺重要含滴,看書是系統(tǒng)性學(xué)習(xí)
未來的方向:
云原生,F(xiàn)aaS丐巫,業(yè)務(wù)架構(gòu)師