上次的訪談,介紹了下可愛的依雲醬,回憶傳送門。不知看了上期訪談的小夥伴對依雲醬有什麼印象,清蒸就一個印象:可愛。可愛的人和事物老是受你們歡迎的,好比,可愛的 Gakki,被 SF 前端小姐姐親切地稱呼爲老婆,固然喜歡可愛事物的不止是前端小姐姐,還有清蒸認識的其餘程序員 -- 豪大大、傳奇老師等等,今天的訪談的社區用戶也是一個喜歡可愛事物,混跡 ACG,給他灌一個稱謂:在 ACG 界混的最好的 developer,在 Coding 界混的最好的 ACGer,不服來戰。php
有請本期嘉賓:mcfog ?html
做爲本期的嘉賓,mcfog 兄弟走個流程,先來個自我介紹下吧前端
你們好,我叫 mcfog,現居上海,悶騷傲嬌屬性,{技術|動漫|遊戲}宅,自己是全棧工程師,近兩年主要作後端方向。比起解決純技術問題,更擅長的仍是抓業務和技術的結合點,語言方面按照我的經驗和水平來排的話 PHP >= JavaScript > CSS > 其餘吧python
清蒸認識幾個程序員都是自帶二次元屬性的,貌似 mcfog 我的主頁也打了一個 acg 標籤,最近可有追新番?有什麼推薦嗎?git
年紀大了已經從追新番退化成追完結了,今年一月番質量實在高,致使如今看四月番都挑不出幾個感興趣的呢,一月番給萌豚推薦「龍女僕」和「加百列」,給非萌豚推薦「昭和」(第一季沒看務必補上)和「獸娘動物園」吧。程序員
這裏簡單地介紹下「龍女僕」,全名「小林家的龍女僕」,爲何介紹這部劇呢?由於 SF 設計獅 -- 顏值同窗也安利了這部。github
劇情簡介:在獨身又勞累的小林(劃重點:一名程序員
)身邊忽然出現的穿着女僕服裝的美少女托爾。長着犄角和尾巴的她,有着正如龍娘同樣的身姿。說是被喝醉酒的小林邀請到家中來的托爾,在一陣手足無措中竟然開始做爲小林家的女僕工做…web
不知道 mcfog 有沒有收藏什麼手辦,能夠放幾張照片讓清蒸舔舔屏嗎?面試
手辦坑太大太深,我徹底沒有跳坑的膽量…平時也就弄點小小的周邊宅物,好比這種,如字面意思的每天舔。express
我司的前端小姐姐最近沉迷農藥不可自拔,不知道 mcfog 你是否也是身中農藥之毒?除了農藥以外,你更傾向玩哪類遊戲呢?
啊,同事都已經開農藥聯賽了,被帶着前兩天下載了試玩了,已經卸載。從分類上我即便不算 core gamer,至少也是最接近核心的那一撥類型的,一個遊戲沒有背後的世界觀、文化背景,同時又沒有真正意義上的競技價值的話,我是徹底提不起勁的。哦,只有競技價值的由於我手殘因此也提不起勁
除此以外個人狩獵範圍倒還挺普遍的,各類各樣的主機掌機遊戲基本都有玩,按照 MRU 來算最近最常玩的大概是家裏玩屁股和 FIFA,路上玩火紋和塞爾達吧。
我逛了你的我的主站,首頁效果很是酷炫,你的我的主站搭建過程當中用到了哪些技術呢?
就 impress.js,沒了。看到這個庫感受蠻來電的就拿來搞了個 about 頁面。最後出入 #/overview 的時候 radial-gradient 配上 transition 的效果我還挺滿意的,發現我源碼沒貼,最近有空更新一波順便把源碼也傳一下吧,有興趣的關注 mcfog@github 吧。
你在問題:怎麼衡量前端達到了什麼水平中談到編碼是咱們最不重要的工做,思考,概括,演繹纔是我輩本職,該怎麼理解這句話呢?
臺上三分鐘, 臺下十年功。做家把書稿寫到紙上也好,歌手在舞臺上演唱也罷,程序員把程序敲到電腦裏編譯調試也罷,都只是最後出成果的那一下而已。做家書寫的好很差看的是他寫書以前的素材、靈感積累,文筆磨練,歌手歌唱的棒不棒看的是他臺下的練習試唱彩排,程序員也同樣,臺下部分的思考、概括、演繹這些工做纔是平常,你看別人,若是隻看上機編程熟練無比代碼寫的又快又好,就像你做爲一個外行看做家寫的書感人肺腑,歌手唱的歌餘音繞樑同樣,那是外行看熱鬧而已。
最近有個小話題【十年的老代碼,你敢動?】,mcfog 你是怎麼看待這個問題的呢?你以爲怎麼樣的代碼纔是優雅的呢?
怎麼搞老代碼我還真的在有一次團隊分享裏聊過,不過那次路徑是反的,先從好代碼長什麼樣聊起,最後才提到的老代碼怎麼辦。
大概講一下個人觀點吧,「代碼是給人看」這句話的潛臺詞,實際上是代碼除了機器要能運行,符合需求以外,須要包含足夠的信息,好比技術方面的,你的總體架構,你的模塊粒度,解耦的邊界,也包括業務方面的,哪些東西是常常變的業務規則(夏季大促滿100減25
),哪些東西是偶爾變的參數配置(類目樹
),哪些東西是業務上不會變的核心((訂單金額-代金券) * 優惠規則+運費+支付手續費=支付金額
)
優雅的代碼就是這些信息高效而規則的彙集在一塊兒,我知道我想看你怎麼承擔高併發能夠直接看數據層到最終落地存儲的過程,想看下單業務邏輯能夠去看下單 service 的校驗方法和下單方法等等
所以我以爲最優雅的代碼就是能作到很清晰的分紅三部分:
這樣基本能作到「技術需求」好比提升併發能力之類的只管第三部分,「業務需求」若是不突破原有的 DSL 限制,能夠只改第一部分,若是有突破,那麼先加強第二部分的 DSL 能力,再在第一部分裏描述。
我把這種理想狀態叫作「CODE AS PRD」,代碼即需求文檔,隨便你產品怎麼改需求,我均可以不動腦筋地跟上你修改的速度,跟不上算我輸;隨便哪一個開發來接個人項目,我都告訴你這幾個類就是需求文檔,至於他爲啥能跑,本身 trace,句號,交接不順利算我輸。
(扯的好像太遠了)最後關於處理老代碼的問題,我有上中下三策和一個核心關注點:
核心關注點:你必須接受老代碼最重要的優點:it works。雖然是老代碼,但那是生產上運行的,千錘百煉的老代碼。作任何事情以前,都和你的QA部門做好溝通和計劃。專業的程序員是必定不會號稱「重構基礎架構」結果搞出一堆生產問題的
mcfog 前東家 ifaclub 是主打金融類產品,能夠談下你加入團隊的初衷嗎?以及產品開發過程當中使用的技術棧嗎?
做爲本科生加入騰訊,初始職級實在過低(後來已調高),升級路太遠,前老闆拉我創業,項目當時看也有很好的機會,因而就去了…
技術棧的話,標準的 LNMP,Redis 這些以外,咱們選擇了 RabbitMQ 來作消息隊列,除了活躍度、生態、性能等因素之外,主要看中他在數據一致性方面相對可靠。
金融類產品都至關注重數據的安全、可靠性,大家團隊是如何確保數據的安全性的呢?
編碼角度來講,作好兩件事:貫徹防護式編程風格,產生任何反作用(寫數據也好,請求外部接口也罷)前必定完整檢查全部前提。完善日誌體系,確保全部關鍵節點的日誌,作好日誌的收集概括等自動化工做,持續優化告警體系,當心不要讓告警數量超出必定範圍,頻繁的告警儘快整理方案系統性解決
還有就是架構角度和 QA 角度的支持了,完善的監控告警體系,備份體系,測試和自動化測試的用例覆蓋等等
固然,線上問題是防不勝防的,「亡羊補牢」也是很是重要的環節,在出現生產問題,解決以後的總結,尋找同類問題,重構系統,也是咱們能把整個系統越作越好的重要方式
在PHP開發中,選擇合適的框架有助於加快軟件開發,而你在文章【如何挑選PHP框架?】 中談到要從團隊、項目、框架自己等三個方面考慮,能夠從框架自己的基本素質談一談 Yii 和 Laravel 嗎?
就我我的的角度,向將來看,Yii2 和 Laravel 都是即將過期的框架了,可能你們以爲我有些狂妄,但我是基於很是理性的總結思考得出這個結論的
固然我不是說 Yii2 和 Laravel 會掛,實際上 Yii 從 1 到 2 就已經跨了一個世代,但相對 Yii1 是 2008 年的東西了,我相信到 2027 年咱們回頭來看當前的 Yii2 和目前的 Laravel4 和 5,必定和咱們如今看 CI2 看 Yii1 是同樣的心情和見解
就 Laravel 和 Yii2 二者之間比較的話,首先就社區生態來講,Laravel 完勝(能媲美的也就只有 Symfony 社區了),這讓 Laravel 在周邊的擴展、模塊等佔上風。Laravel 的問題在於,它堆疊了不少的概念,其中不乏真正的好東西,但也有花架子,若是要用,請帶上你的思考,切記生搬硬套。而 Yii 的核心要簡潔明瞭一些,這讓 Yii 偏向中庸一些,是個很是安全的選擇。
我眼中將來的 PHP 「框架」,就概念上就必定和如今的框架有區別(目前的兩個世代大體是按命名空間和 composer 來劃分的,概念上並無本質區別),再也不是「全家桶」式的單體框架,而是走向差別化。大概能夠分爲三類,一類是真正在技術上(而不是語法糖或是 convention 層面的)提供基礎能力的,好比 Swoole 提供異步、協程的能力,好比 Zephir( Phalcon 的底層)提供的很是容易整合系統底層能力和 PHP 上層能力的中間語言
另外一類則是真正相似 Express、Koa 這樣的,核心中間件協議+大量周邊中間件的框架生態羣。目前看來彷佛反而是 ZF 家的 Zend-expressive 在這方面稍稍領先,另外一個不得不提的是 StackPHP,他們跑的太早,快於 PSR,因此如今面臨永遠用 adapter 繼續堅持 symfony/http-kernel 體系,仍是轉戰 PSR 體系和 zend-expressive 競爭。目前看來這樣的轉變還須要一段時間,我以爲你們也能夠和我一塊兒關注一下這個趨勢。順便,我以爲雖然這波趨勢很明顯地像 Express,但生搬硬套的效果可能並很差,畢竟比起 JS,PHP 在語言層面其實一直在接近「動態的 Java 」
第三類則是 Drupal,Wordpress 這樣的,帶基礎功能實現的「框架」,快速支持實現相對標準的需求,對這類框架(系統)來講,Composer 的出現反而是個很好的機會,能夠經過 Packagist 快速造成社區生態(而無須像 Drupal、Wordpress 那樣經過商業公司運做來養生態),這也是一個「穿越牛熊」的,不管PHP如何演化都會持續存在的類別
固然實際上 PHP 的生態演化的速度其實並不快(我以爲適中,Laravel 這樣的速度做爲最快的那個夠了,如今很多社區跑的比Laravel快的,開發者追的太辛苦),因此目前來看選擇單體框架仍是很是現實的選擇,我心目中一流的選擇,除了 Laravel 和 Yii2 以外,還向你們推薦 Symfony2 和 Slim3 吧,哦,提到 Slim3 也就還應該加上 S 和 L 兩家的派生小弟弟 Silex 和 Lumen。
不知道 mcfog 的新東家是如何的,以及新東家是否還在招兵買馬呢?
實際上在收到訪談的這兩天,我已經敲定了離職和新東家,Amino Apps 是業務在國外,研發中心在國內的移動端興趣社交公司,36kr報道,咱們招高級前端和全棧(語言不限,嗯,我這兩天在惡補 python,哈哈),咱們走的是精英小團隊的路線,你得有足夠的技術能力和責任心來單獨 cover 一條線。簡歷請發 bWNmb2d3QGdtYWlsLmNvbQ==(補充說明:有關於郵箱的解釋請看本文的劇場版之硬廣時間)
小劇場之封面設計
(清蒸):(一本正經地諮詢)你有什麼想法嗎,對你的封面圖?每一個專訪都會設計一個封面圖的
(mcfog):沒啥特別的想法……(來自清蒸的解讀:總以爲這個省略號隱藏着什麼信息…)
(清蒸):那,我能夠用艾斯的背影當元素嗎?
(mcfog):艾斯是啥
(清蒸):- -。海賊裏面的哥哥啦
(mcfog):[捂臉]海賊王不算動漫
(清蒸):(╯‵□′)╯︵┻━┻ 海賊怎麼了
(mcfog):死火海和柯南都不算啦
(清蒸):(勉強維持的微笑)請舉例說明它們不符合動漫的緣由 1 2 3
(mcfog):(一言不合甩連接)民工漫
(清蒸):(一言不合甩需求)給設計師妹紙寫了一個設計需求
卒
小劇場之硬廣時間
(清蒸):mcfog 大兄弟,咱們給你留了一個廣告位,須要嗎?啤酒花生隨便賣
(mcfog)思考狀
(清蒸):不要浪費啊,你看看隔壁公子,賣牀位招人,如今有一個免費的廣告位預留給你,好好珍惜呀
(mcfog)招聘,眼前一亮
(mcfog):那就爲新東家 Amino 招我的吧,簡歷發送至:bWNmb2d3QGdtYWlsLmNvbQ==
(清蒸)一臉懵逼:這個郵箱沒給錯嗎?
(mcfog):郵箱是對的,看不懂的程序員不要[傲嬌臉]
以上,就是對郵箱的解釋,且看且珍惜,祝大家好運~
爲何忽然增長了這麼一塊內容呢?由於清蒸對 mcfog 大兄弟的某些言論深表贊同
下一期的訪談對象是清蒸認識 coding 時間最長的一名程序員:@邊城 ,聽說 97 年開始寫代碼,20 年的碼齡,且看他如何 Coding Twenty Years , Learning Twenty Years。本期訪談到此結束,下期見~