国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

我是如何成為一名全棧工程師的?

開發(fā)
本文我將繼續(xù)熟悉框架、工具、語言,并繼續(xù)深入研究后端的一些技術(shù)方案和實(shí)現(xiàn)策略。

作者 | 宋奕興

經(jīng)歷了將近一年的時(shí)間,我終于階段性地完成了從iOS開發(fā)到后端開發(fā)的角色轉(zhuǎn)變。

現(xiàn)在我可以自豪地說,我已經(jīng)接近一名全棧工程師了,已經(jīng)熟悉了后端開發(fā)的各種工具、環(huán)境和一些后端工作的方式。

接下來,我將繼續(xù)熟悉框架、工具、語言,并繼續(xù)深入研究后端的一些技術(shù)方案和實(shí)現(xiàn)策略。

通用軟件開發(fā)流程

在這將近一年當(dāng)中,經(jīng)歷過太多的坑了。

幸運(yùn)的是,我們作為一名通用軟件的工程師,這個(gè)行業(yè)發(fā)展了這么多年,其工作流程已經(jīng)趨于穩(wěn)定。

所以,在我個(gè)人看來,無論是什么樣的開發(fā)角色,對(duì)于開發(fā)這個(gè)崗位來說,我們大致可以將知識(shí)結(jié)構(gòu)分為以下幾個(gè)方面:

  • 語言
  • 框架
  • IDE
  • 依賴管理
  • 測(cè)試框架
  • 編譯運(yùn)行環(huán)境
  • 運(yùn)行平臺(tái)
  • 打包工具
  • 部署方式
  • CI/CD配置
  • 性能指標(biāo)

如下圖所示,例如:

做iOS開發(fā)的語言就是OC或者swift,我們學(xué)習(xí)語言特性之后,需要學(xué)習(xí)如何使用對(duì)應(yīng)的框架進(jìn)行開發(fā),開發(fā)過程中,我們用Cocoapods做依賴管理,使用XCTest寫測(cè)試代碼,最后經(jīng)過LLVM和Mach-O的編譯打包后生成了IPA包,我們將IPA通過Xcode發(fā)布到AppStore中,然后用戶可以下載并運(yùn)行在相應(yīng)的AppleOS(iOS/iPadOS/MacOS/WatchOS…)中,并且上線后我們需要重點(diǎn)關(guān)注的指標(biāo)是崩潰率和卡頓率。

那么我們也可以將這些模塊映射到后端的學(xué)習(xí)中去。

后端開發(fā)也會(huì)大致遵循這個(gè)結(jié)構(gòu),就像流水線上的各個(gè)工位一樣,每一步都是需要做的,只是使用的工具和方式不同罷了。

接下來,比如,我們選擇JS語言進(jìn)行后端開發(fā),那么我們一定也會(huì)選擇一個(gè)框架(如果不是從底層開始寫的話),假如我們選擇了NestJS框架,那我們肯定也會(huì)問,管理依賴用什么做呢?測(cè)試用什么框架寫呢?哪個(gè)IDE好用呢?我要如何將它進(jìn)行打包發(fā)布呢?上線之后我們用什么指標(biāo)作為衡量其好壞的標(biāo)準(zhǔn)呢?

一旦我們擁有了針對(duì)整個(gè)流水線或者工作流程的認(rèn)知,我們接下來要做的,只是在尋找有什么工具能夠?qū)崿F(xiàn)這一步驟而已,如此,對(duì)于快速學(xué)習(xí)上手很有幫助。

這里,有一個(gè)網(wǎng)站,或許能有所助益,https://roadmap.sh

借助這個(gè)網(wǎng)站,我們可以清晰地規(guī)劃自己的學(xué)習(xí)路徑。

圖片來源:https://roadmap.sh/backend

開發(fā)過程側(cè)重點(diǎn)的轉(zhuǎn)變

正所謂屁股決定腦袋,作為一名前端或者iOS開發(fā),在開發(fā)過程中的側(cè)重點(diǎn)一般在以下幾個(gè)方面(按照我腦袋中的順序排列):

  • UI/UX的實(shí)現(xiàn)
  • 怎樣的數(shù)據(jù)結(jié)構(gòu)可以更好地驅(qū)動(dòng)UI
  • 如何和后端交互
  • 各個(gè)模塊之間如何更好地調(diào)用
  • 如何更好地持久化數(shù)據(jù)
  • 如何更好地使用線程,協(xié)調(diào)UI渲染時(shí)的主線程和其他線程
  • 如何讓CI/CD更有效率
  • 降低崩潰率/卡頓率

而在后端開發(fā)過程中,我的側(cè)重點(diǎn)變成以下幾個(gè)方面了:

  • 數(shù)據(jù)如何更好的存儲(chǔ),注重表結(jié)構(gòu)的設(shè)計(jì)
  • 如何和前端更好地交互
  1. contract怎么設(shè)計(jì)
  2. 怎么更好的兼容多平臺(tái),例如,Auth怎么做,BFF怎么做,數(shù)據(jù)結(jié)構(gòu)怎么設(shè)計(jì)
  3. 怎么更好地做API的版本管理
  • 各個(gè)模塊或者服務(wù)之間如何更好地協(xié)作,如何更好地設(shè)計(jì)事件
  • CI/CD怎么更有效率,不同環(huán)境的部署怎么做能更好地做E2E測(cè)試
  • 降低接口響應(yīng)時(shí)間/HTTP錯(cuò)誤率

當(dāng)然,側(cè)重點(diǎn)的轉(zhuǎn)變主要還是因?yàn)榍岸撕秃蠖说姆?wù)對(duì)象不同。

前端應(yīng)用更多的是服務(wù)用戶,所以如何將頁面做的更好是首要,然后再向后思考如何更好地為頁面汲取數(shù)據(jù)。

而后端更多的是服務(wù)前端,或者其他后端服務(wù),重點(diǎn)在于數(shù)據(jù)處理和API設(shè)計(jì),所以數(shù)據(jù)是首要,如何存儲(chǔ)數(shù)據(jù),如何傳輸數(shù)據(jù),是重中之重。

開發(fā)者思維角度的轉(zhuǎn)變

由于工作的側(cè)重點(diǎn)變了,所以思考的方式也會(huì)隨之改變。

作為一名iOS開發(fā),在日常生活中,我會(huì)習(xí)慣性地對(duì)一個(gè)正在使用的APP思考,這個(gè)特效是如何實(shí)現(xiàn)的,這個(gè)APP的頁面是如何組織起來的,或者這么多頁面同時(shí)存在切換,它是如何進(jìn)行內(nèi)存管理的?

而作為一名后端開發(fā),我開始思考的是,微博的互粉功能在數(shù)據(jù)結(jié)構(gòu)上是怎么保證高效率查找的?微信消息是怎么做到丟失率這么低的?

更加明顯的是,在進(jìn)行需求分析的時(shí)候,之前習(xí)慣性的將頁面作為錨點(diǎn),比如討論業(yè)務(wù)需求首先確定這個(gè)頁面交互如何實(shí)現(xiàn),然后確定什么數(shù)據(jù)更好的驅(qū)動(dòng)頁面,然后再定API。

而對(duì)于后端,更多考慮的是背后的數(shù)據(jù)表字段怎么定義,表關(guān)系如何管理。

但是,可喜的是,由于現(xiàn)在同時(shí)具備這些經(jīng)驗(yàn)了,所以又可以提起那個(gè)老生常談的策略:分層,或者分而治之。

所以,在進(jìn)行需求分析的時(shí)候,更多的關(guān)注點(diǎn),或者切入點(diǎn)就是BFF和contract怎么定義,用AOP的方式管理團(tuán)隊(duì)的關(guān)注重點(diǎn),大家討論的時(shí)候只關(guān)注交互的地方,以及可能變化的地方,剩下的工作都在各自的領(lǐng)域中進(jìn)行,互不影響。

這種方式同樣適用iOS開發(fā)內(nèi)部或者后端開發(fā)內(nèi)部,比如我們同時(shí)完成一個(gè)大的功能,我負(fù)責(zé)A,你負(fù)責(zé)B,于是我們先定義好A和B的交互部分,將interface先實(shí)現(xiàn),然后各自回到自己的領(lǐng)域做事,最后面向interface接洽就好。

如何更好地理解業(yè)務(wù)

隨之而來的,我可以理解頁面,知道如何做UI/UX會(huì)更好地服務(wù)客戶,現(xiàn)在也可以理解數(shù)據(jù),知道如何更好地讓數(shù)據(jù)流轉(zhuǎn)和存儲(chǔ),所以針對(duì)業(yè)務(wù),站在技術(shù)人員的角度,我們可以提供更多的建議,以及指導(dǎo)如何更好地拆解和實(shí)現(xiàn)業(yè)務(wù)。

比如,使用BFF來隔斷前端所需的數(shù)據(jù)結(jié)構(gòu)和內(nèi)部數(shù)據(jù)結(jié)構(gòu),用來避免業(yè)務(wù)變化對(duì)底層實(shí)現(xiàn)的影響,并且可以兼容各個(gè)平臺(tái),給不同的平臺(tái)分發(fā)不同的數(shù)據(jù)結(jié)構(gòu)。

業(yè)務(wù)的變化可以被隔離在domain中,前端對(duì)于domain的體現(xiàn)是不同的module,后端可以是module也可以是微服務(wù),然后我們討論時(shí)重點(diǎn)關(guān)注的是他們中間如何交互,而不是很多的內(nèi)部實(shí)現(xiàn)細(xì)節(jié)

再比如,現(xiàn)在需要實(shí)現(xiàn)一個(gè)登錄功能:

  • 作為前端,我只在乎如何畫出登錄頁面,調(diào)用登錄接口,持久化session然后進(jìn)入主頁面。
  • 作為后端,我只在乎如何進(jìn)行Auth的實(shí)現(xiàn),然后存儲(chǔ)生成的 session并記錄日志。

可以從流程中看出來,初始數(shù)據(jù)是前端提供的賬號(hào)密碼,從前端流向后端,而后端生成session,然后從后端流向前端,我們第一步需要做的就是確定數(shù)據(jù)怎么流,剩下的就是各自領(lǐng)域的事情,后端去研究數(shù)據(jù)怎么存,前端去研究頁面怎么畫,僅此而已。

在此基礎(chǔ)之上,我們就可以把握整體,進(jìn)行更好地架構(gòu)設(shè)計(jì)和分層設(shè)計(jì)了。

并且無論是前后端之間,還是前端和后端各自內(nèi)部的工作。

如何開始

前面說了一大堆,都是成為全棧之后的好處和所得。

那么,如果你也有這個(gè)計(jì)劃,你應(yīng)該如何尋找一個(gè)機(jī)會(huì),或者創(chuàng)造一個(gè)機(jī)會(huì)開始呢?

從一個(gè)純粹的前端轉(zhuǎn)到后端,并不僅僅是技術(shù)棧的遷移,還包括思維視角的轉(zhuǎn)變。

首先,我們得確立轉(zhuǎn)職的原因:

主觀上:

  • 興趣學(xué)習(xí)
  • 成為一名全棧開發(fā)
  • 成為一名TL

客觀上:

  • 項(xiàng)目需要
  • 市場(chǎng)需要

如果僅僅是項(xiàng)目需要,那機(jī)會(huì)已經(jīng)送到眼前,相信一般情況下,項(xiàng)目上會(huì)給你時(shí)間和精力專門從事學(xué)習(xí),并且還有很多機(jī)會(huì)直接進(jìn)行開發(fā),剩下的只是效率問題。

但如果沒有客觀的條件支持,那么我的處理方式是,找一個(gè)你感興趣的APP,去思考它是如何實(shí)現(xiàn)這些功能的,然后嘗試著自己去實(shí)現(xiàn),例如小紅書,微信等等。

用一個(gè)項(xiàng)目和實(shí)踐來承載你的學(xué)習(xí),這樣子,就不僅僅只是看看文檔,并且練手的時(shí)候順便分析學(xué)習(xí)了一個(gè)成熟產(chǎn)品,也不用耗神在創(chuàng)造技術(shù)的應(yīng)用場(chǎng)景上。

再接下來,確定你要點(diǎn)哪些技能點(diǎn)。

從興趣,市場(chǎng)需求,各個(gè)方面,確定語言,確定框架,然后最好跟著官方文檔進(jìn)行學(xué)習(xí)吧。

上面分享的模塊化知識(shí)和roadmap網(wǎng)站在這里就非常有用。

或者跟著某個(gè)學(xué)習(xí)視頻來進(jìn)行學(xué)習(xí)和練手,但是會(huì)有幾個(gè)問題:

  • 講解的技術(shù)點(diǎn)不一定是官方最新建議的 
  • 一般這種視頻進(jìn)行的練手項(xiàng)目都很簡(jiǎn)單,不能完全應(yīng)對(duì)真實(shí)的使用場(chǎng)景

學(xué)習(xí)方式

學(xué)習(xí)需要區(qū)分了解和使用,在這里,我將知識(shí)點(diǎn)分為三類:

  • 知識(shí)類:這種類別的知識(shí)我們需要的是記住,例如我們看到狗就知道他是狗,例如我們知道我們需要用NodeJS去運(yùn)行我們的應(yīng)用。

這類的知識(shí)主要在于主動(dòng)獲取并記住理解它。 

  • 技能類:這種類別的知識(shí),就是唯手熟爾,例如我們需要熟練地使用JS中各種語法特性,我們知道拆分?jǐn)?shù)據(jù)需要用哪個(gè)函數(shù)。 

有一些知識(shí)起初是知識(shí)類類的,當(dāng)我們知道了解后,但是一旦你運(yùn)用到實(shí)踐當(dāng)中,并且越來越熟練,就證明你徹底掌握了這項(xiàng)技能。 

  • 索引類:這種類別的知識(shí),是技能類退而求其次的產(chǎn)品,有些技能或者方式我們并不需要掌握的如此熟練,但是,我們是知道有這種方法存在的,在需要精確的書寫實(shí)踐它的時(shí)候,再去查閱就行了。例如π的前30位數(shù)字,例如八皇后的算法。 

而針對(duì)不同類別的知識(shí),我們采取不同的學(xué)習(xí)方法。

語言

針對(duì)語言的學(xué)習(xí),重點(diǎn)在于練習(xí),是我們需要不斷使用和磨練的技能:

  • 數(shù)據(jù)類型
  • 數(shù)據(jù)結(jié)構(gòu)
  • 函數(shù)的定義和使用
  • 線程

對(duì)于我而言,學(xué)習(xí)JS的時(shí)候,對(duì)應(yīng)著OC,或者Swift的一些語法結(jié)構(gòu),會(huì)學(xué)習(xí)的很快。

在這里其實(shí)也可以進(jìn)行各種模塊化,例如數(shù)據(jù)結(jié)構(gòu)其實(shí)已經(jīng)比較恒定,在不同的語言中,字符串、HashMap、數(shù)組、Decimal都有各自的處理方式方法,只是名稱不同而已,實(shí)現(xiàn)的功能是一樣的。

再比如,無論是什么語言,都需要進(jìn)行函數(shù)調(diào)用棧的管理,只是實(shí)現(xiàn)方式不同罷了。

而一些特殊的地方,例如JS中的類型解構(gòu),也可以找到對(duì)應(yīng)的概念去理解,例如Swift中的元組。

框架

針對(duì)框架,重點(diǎn)在于對(duì)控件的使用和對(duì)其文件組織方式的了解。

我們根據(jù)需求和興趣選擇某一個(gè)框架后,在這個(gè)框架中,構(gòu)建運(yùn)行應(yīng)用,使用其提供的工具進(jìn)行需求的實(shí)現(xiàn),例如在NestJS中使用TypeORM或者接入Kafka非常方便,它使用module-controller-service的方式來組織文件。

練習(xí)

在上面的陳述中,我提到可以選擇一個(gè)成熟的APP進(jìn)行仿作練習(xí),在這個(gè)過程中,使用TDD,并且使用ChatGPT來進(jìn)行結(jié)對(duì)編程簡(jiǎn)直是絕佳的選擇。

TDD可以幫助我們快速了解框架,語法和API的使用,而結(jié)對(duì)編程能夠幫助我們更好地了解它為什么這么寫,為什么能夠適用這個(gè)場(chǎng)景以及獲取一些經(jīng)驗(yàn),尤其在有了chatGPT之后,就算沒有一個(gè)大佬或者共同學(xué)習(xí)的小伙伴跟你結(jié)對(duì)編程,但是我們依然可以假裝在結(jié)對(duì)編程。

寫在最后

在這快一年的時(shí)間里,我接觸了PHP,Typescript,React,React-Native,最近開始研究研究ES的標(biāo)準(zhǔn),從一名iOS純開發(fā)慢慢轉(zhuǎn)型到后端甚至全棧,在這個(gè)過程中不僅僅是提升了自己的技術(shù)能力。

更多的是了解了不同崗位之間思考的差異,能夠更好的作為TL拆分需求,跟各個(gè)崗位的同學(xué)們進(jìn)行溝通。

并且,經(jīng)過發(fā)現(xiàn)總結(jié)后,又提升了一點(diǎn)點(diǎn)自己快速學(xué)習(xí)的能力。

現(xiàn)在只是想寫出來,和大家共勉,其中當(dāng)然有很多不那么恰當(dāng)甚至錯(cuò)誤的理解,也希望能夠得到大家的指正。

責(zé)任編輯:趙寧寧 來源: Thoughtworks洞見
相關(guān)推薦

2016-02-25 11:42:19

2017-04-14 10:37:21

2021-01-18 09:00:00

人工智能機(jī)器學(xué)習(xí)工程師

2016-01-28 11:18:09

卓越前端工程師

2017-11-10 19:00:37

華為

2018-03-29 11:23:25

IT人員云計(jì)算工程師

2019-03-05 09:57:08

php編程語言工程師

2012-11-29 10:05:20

2015-07-09 09:33:18

全棧設(shè)計(jì)師

2017-07-05 11:09:35

華為開發(fā)云

2017-03-13 18:19:43

2015-05-20 10:02:02

程序員全棧工程師

2015-07-29 09:42:09

工程師全棧工程師

2021-02-01 22:23:06

前端工程師開發(fā)

2021-07-29 11:14:03

DevOpsLinux工程師

2021-05-10 17:22:49

工程師代碼技術(shù)

2015-11-30 10:54:38

2013-08-22 10:23:15

程序員開發(fā)

2015-12-09 14:37:30

2012-05-28 09:31:04

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

久久精品女人| 一区二区在线免费视频| 三级毛片在线免费看| 午夜精品久久久久影视| freemovies性欧美| 亚洲精品视频二区| eeuss鲁片一区二区三区| 国产国产精品人在线视| 91久久夜色精品国产九色| 永久免费精品视频网站| 久久综合九色综合欧美亚洲| 国产主播福利| 日韩一级黄色大片| 综合久草视频| 国产精品视频在线观看| 日韩黄色免费电影| 九热视频在线观看| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 国产夫妻在线播放| 欧美性受xxxx白人性爽| 丝袜美腿亚洲综合| av免费网站观看| 欧美丝袜丝交足nylons图片| 国产乱子精品一区二区在线观看| 国产欧美一区二区三区四区 | 欧美人与性动交a欧美精品| 少妇精品久久久| 日本精品一区二区| 国产亚洲精品aa| 欧美96在线| 97高清免费视频| 日韩黄色免费网站| 日韩中文字幕在线免费观看| 亚州欧美一区三区三区在线| 国产精品麻豆久久久| 大片免费在线看视频| 麻豆乱码国产一区二区三区| 一区在线免费观看| 天天激情综合| 久久久久久国产精品免费无遮挡| 在线精品高清中文字幕| 亚洲欧美亚洲| 成年人视频观看| 欧美天天综合网| 久久精品亚洲成在人线av网址| 日韩一区免费观看| 午夜精品久久久久久| 欧美成人精品午夜一区二区| 欧美日韩三区四区| 午夜精品久久久久影视| 老司机午夜网站| 日本日本精品二区免费| 亚洲精品99久久久久| 最新欧美精品一区二区三区| 天堂va在线| a级片在线免费| aⅴ色国产欧美| 最新成人av在线| 日本不卡视频在线| 欧美成人aaa| 超碰97人人射妻| 丝袜美腿高跟呻吟高潮一区| 爱草在线视频| 欧美激情2020午夜免费观看| 人禽交欧美网站| 免费看美女视频在线网站| 国产91九色视频| 国产视频一区二区在线| 国产 日韩 欧美一区| 欧美在线视频二区| 欧美精品vⅰdeose4hd| 香蕉久久网站| 孩娇小videos精品| 久久99热精品| 久久综合久久综合久久| 福利一区在线| 成人午夜精品久久久久久久蜜臀| 亚洲伦理中文字幕| 国产一区 二区 三区一级| 国产偷倩在线播放| 亚洲第一导航| 亚洲福利视频在线| 久久成人精品无人区| 国产精品69xx| 一本一本a久久| 精品久久久久久久久久久院品网 | 成人一区在线看| 欧美一级鲁丝片| 日韩亚洲欧美精品| 精品少妇一区二区三区免费观看| 欧美一区不卡| 一区二区三区视频网站| 亚洲精品中文在线| 99国产精品免费网站| 乱子伦视频在线看| 久久免费视频网| 亚洲精品久久久蜜桃| 国产精品午夜一区二区三区| 久草.com| 日韩一区二区三区在线| 欧美视频国产精品| 精品国产一区二区三区av性色| 国产香蕉97碰碰久久人人| 欧洲一区二区在线| 欧美 日韩 国产一区| 欧洲一区二区在线 | 加勒比一区二区三区| 天堂资源中文在线| www.成人影院| 欧美日韩hd| 国产成人精品免费| 麻豆乱码国产一区二区三区| 成人午夜电影在线观看| 久久国产免费看| 91精品国产入口| 免费看黄色一级大片| sm国产在线调教视频| 奇米影视777在线欧美电影观看| 九九热线有精品视频99| 亚洲国产网站| 亚洲精品国久久99热| 午夜免费在线观看精品视频| 91精品一区二区三区在线观看| 色婷婷综合成人| 奇米视频888战线精品播放| caoporn免费在线视频| 天堂美国久久| 亚洲欧美日本韩国| 国产精品青青在线观看爽香蕉 | 免费萌白酱国产一区二区三区| 丰满的护士2在线观看高清| 自拍偷拍欧美视频| 自拍偷拍欧美一区| 国产99精品一区| 欧美日本亚洲韩国国产| 午夜精品剧场| 日本亚洲三级在线| 久久久精品影视| 中国av一区二区三区| 91国偷自产一区二区使用方法| 亚洲综合久久av| 91九色精品视频| av色综合久久天堂av色综合在| 亚洲精品字幕| 婷婷六月综合亚洲| 韩日欧美一区二区| 欧洲精品久久| 免费成人av电影| 网友自拍区视频精品| 亚洲男帅同性gay1069| 色偷偷成人一区二区三区91| 欧美va亚洲va香蕉在线| http;//www.99re视频| 青草视频在线免费直播| 91老司机福利 在线| 久久久久日韩精品久久久男男| 亚洲视频精品一区| 成人性生活av| 亚洲免费观看高清| 在线精品播放av| 日本激情综合网| 亚洲精品影视| 制服丝袜亚洲网站| 亚洲欧美中文另类| 国产精品直播网红| 国产精品va在线观看无码| 天天干天天玩天天操| 欧美性爽视频| 激情欧美一区| 亚洲国产精品av| 精品少妇一区二区三区 | 色爱综合网欧美| 欧美日韩高清一区二区三区| 成人亚洲欧美一区二区三区| 午夜免费高清视频| 精品三级在线观看视频| 狠狠做深爱婷婷综合一区| 91香蕉视频在线| 国产一区二区三区视频在线观看| 成人夜晚看av| 亚洲人成人77777线观看| 美女毛片在线看| 国产69精品久久久久按摩| 久久精品亚洲| 色综合天天天天做夜夜夜夜做| 欧美一区二区视频观看视频| 欧美猛交免费看| 日本手机在线视频| jizzjizz亚洲| 9999国产精品| 亚洲午夜久久久久久久久电影院| 亚洲电影免费观看高清完整版在线| 久久久水蜜桃| 久热久精久品这里在线观看| 国产欧美自拍| 国产精品久久久久久久久妇女| 国产综合色产在线精品| 51精品国自产在线| 亚洲乱码一区av黑人高潮| 色综合色综合色综合色综合|