沒有熱情就不夠格當開發者嗎?

許多研究都指每週 40 小時是最有生產力的工時,不過 Malcolm Gladwell 在《異數:超凡與平凡的界線在哪裡?》(Outliers, the Story of Success)中也提到,要邁向成功需要一萬小時的練習。而我的合氣道教授則說,練習愈多你就會變得愈強。
評論
評論

原文為《Is There Any Room for the Not-Passionate Developer ?》,作者為自由開發者 Philippe Bourgau,INSIDE 獲授權編譯。

作者依自身軟體開發的經驗,加上整理比爾蓋茲、Peter Thiel 等各大名家曾經提過的理論及其中的矛盾,試圖找出軟體設計生涯中該付出的努力、熱情以及私人生活的平衡。

在《工作大解放:這樣做事反而更成功 》(Rework)這本書裡,Basecamp 的  David Heinemeier Hansson 和 Jason Fried 說要「開除工作狂」,但《從 0 到 1》的作者 Peter Thiel 卻說絕佳的工作條件,(比如像 Google)是需要超過十倍的技術力來支撐的,沒有其他捷徑。

比爾蓋茲則是在 1983 年的時候說過:

你必須覺得這個產業很好玩。你得晚上回到家還找電腦雜誌來看,否則你的波長會跟不上(在微軟的)這些人。

所以我們該相信誰?你的人生一定要活在程式設計中才能當個好的開發者嗎?

許多研究都指每週 40 小時是最有生產力的工時,不過 Malcolm Gladwell 在《異數:超凡與平凡的界線在哪裡?》(Outliers, the Story of Success)中也提到,要邁向成功需要一萬小時的練習。而我的合氣道教授則說,練習愈多你就會變得愈強。

John Somnez 在《Soft Skills: The software developer’s life manual》一書中,一樣強調努力的重要性。儘管他認同「聰明工作」就夠了,但也承認他比尋常付出了更多努力,才在職涯中創造了驚人的改變。

在一場對談中,Ruby on Rails 首位創作者,知名程式設計師 DHH(David Heinemeier Hansson)也曾和連續創業家 Jason Calacanis  一同探討 工作和生活的均衡。 Calacanis 認為創業必須全心投入,而最後他們倆都同意「熱情」才是最重要的。

以我個人的經驗來說,當我做自己熱愛的事時,我會:

  • 更有生產力
  • 覺得充滿活力而非被工作淹沒

我周遭的優秀開發者個個都充滿熱情,而且每週工作超過 40 小時。我也觀察到,熱情和努力是發展未來技能的關鍵指標。

但是一個充滿熱情的人要怎樣在每週工作超過 40 小時的狀態下,依然維持生產力?

在  《Pragmatic Thinking and Learning: Refactor Your Wetware (Pragmatic Programmers)》一書中,Andy Hunt 提到了我們平常在背景執行的 R-mode 工作之外,還要找一些空閒來做一些「跳出框架」的創意方案。

加入一些創新點子來維持活力

極限開發法鼓勵大家維持 可持續 的開發步調,《無瑕的程式碼 番外篇:專業程式設計師的生存之道 》(The Clean Coder)作者 Robert C. Martin 又叫我們每週工作 80 小時才能保持「專業」。

對我來說,持續在一個專案上做結對程式設計(Pair Programming)6 -- 8 小時就是極限,超過的話,造成的瑕疵就會大於做出的貢獻,讓我變成「 淨負生產力程式設計師 」(Net Negative Producing Programmer)。但如果我同時做一點業外專案,那我一天可以堅持寫程式的時間就會變多。

我猜有熱情的人大概就是這麼做,他們會在主要的工作之外安排一些不同的主題來點綴。

  • 他們看關於程式設計的書。
  • 他們有自己的業外專案。
  • 他們會讀程式設計的文章。
  • 他們可能還會寫程式相關的部落格,他們可能會參加、舉辦或是主講一些聚會。

大部分的時候,做這些都不是為了完成更多工作,而是為了學到更多。我發現身邊的傑出程式設計師都充滿熱情,而且盡力去增進自己的技術,同時也注意到純粹過勞的工作狂通常生產力都不高。

為人父母的挑戰

我認為比爾蓋茲 1983 年的那段話還是沒錯。如果你沒有熱情,那程式設計師很難做得久。

保持熱情的好處在於,我們可以擁有一個活力四射的工作環境,充滿變化和新奇。但反面來說,要跟上這樣的節奏可不容易。

當開發者愈來愈有經驗,就會開始對麻煩的工作失去耐心,然後想要擁有:

  • 強大的程式語言和技術。
  • 有效率的工作環境。
  • 聰明的同事。

不幸的是,當你為人父母,你可能只想有份穩定的薪水來養家,還有一些自己的時間來陪孩子。

這時候就開始有點棘手了。你既不能跳槽到很酷卻高風險的新創公司去做出一番事業,你也沒辦法熬夜擠時間出來增進你的技能。雪上加霜的是,儘管你擁有 10 年的工作經驗,懂得各種語言和技術,你的履歷表上要是沒有亮眼的關鍵字,很多公司連看都不看一眼。這簡直就是開發者版本的創新者窘境(The Innovator's Dilemma),你就像那些老牌公司一樣要保證自己不會被新技術擠出市場。

缺乏熱情和養小孩,這兩點應該能解釋人們停止當個開發者的部分原因,而且我馬上就想到這種現象帶來的兩種後遺症:

  • 我們常常要重新發明像輪子一樣基本的要素(就是你,那邊那個在開發 .js 框架的)
  • 隨著老手的離去,我們可能會在沒有意識到的狀態下,忽視了一些可以讓我們更有效率的人際互動流程。

蛻變敏捷開發組織並不難! AWS Amplify幫前端工程師從雲端快速建立REACT程式

台灣企業勢必需要明確轉型策略,搭配適合的雲端工具作為入場券,一來降低數位化門檻、二來減少摸索資源的浪費。
評論
shutterstock_1451794139.jpg
評論

打造敏捷開發流程、加速前後端工程師的協作效率,是許多企業在面臨疫情之後,認為亟需將彈性元素納入為企業文化當中。雲端運算服務領導業者 AWS 台灣,觀察到前端工程師主要負責處理最貼近用戶的 Web、行動應用程式,但他們往往需要與後端團隊合作過程,遭遇耗費大量討論時間,才能處理使用者介面事項。

為了降低前後端的溝通成本,有些前端工程師在掌握介面管理能力之後,開始橫跨到後端的伺服器、資料庫開發經驗,甚至進一步培養技能,成為能負責測試、安全、效能多面向的全端工程師。

有的人會透過 Side Project(利用業餘時間開發有興趣的專案)或參加 Hackathon(黑客松)方式,運用 AWS 雲端工具嘗試自行擴展後端,並建立簡單易用的工具程式。究竟,AWS 平台提供哪些資源幫助前端工程師擴展更多元的技能樹?

掌握入門教學!前端工程師如何將 REACT 程式快速上雲

前端工程師運用 AWS Amplify,快速在雲端建立 REACT 應用程式

事實上,AWS 的入門課程指出,運用 AWS Amplify 在雲端建立 React 應用程式及服務集,只需五個學習歷程,包含建立 React 應用程式、初始化本機應用程式、新增身份驗證、新增 API 和資料庫、新增儲存體。如果想快速了解 REACT 程式快速上雲的方法及示範教學,本文節錄 AWS QUICKSTART 學習資源內容,幫助前端工程師更快掌握重點。

首先,何謂 AWS Amplify?AWS Amplify 是一項全托管 Front-End Web & Mobile 服務,採取無伺服器模式,在後端建立、部署和託管單一頁面 Web 應用程式或靜態網站的 Git 型 CI/CD 工作流程,加速開發過程直接整合其他 AWS 服務。舉例來說,像是整合封裝好的 Library 資源、或運用一些 Components UI 軟體去配置後端,以及利用 Admin 的 UI 做資源上的管理。

透過 AWS 增加雲端技能 在組織發揮你的影響力

AWS Amplify加速Develop、Deliver 與 Manage流程

AWS Amplify 主要優勢展現在三大項工作階段,分別是 Develop、Deliver 和 Manage。Develop 部分可利用 CLI(Command-Line Interface)或 Admin UI 設定後端,使用 GraphQL 或 REST API 設定也是可行的,進而快速建構一個前後端專案。此外,開發者還能搭配 AWS 其他服務,例如使用 AWS Authentication 全托管認證服務,或 DataStore、Storage 等多項 Feature Categories。

到了 Deliver 階段,若是要透過 AWS Amplify 執行 Web Hosting 任務,可拆解出三個流程。首先是將 Repository 與 AWS Amplify 進行連結,這邊可整合 Amplify Console 提供的支援資源包含 Github、Bit Bucket、Gitlab、以及 AWS 的程式碼代管工具 AWS CodeCommit。一旦連結以後,開發者可透過自己的 Configuration,决定在各個不同的 Build 要執行什麽樣的指令,最後再透過 Deploy 方式,幫助工程師進行前端的 Hosting。

在最後一個 Manage 階段,開發者則可利用 AWS Amplify 的 Admin UI,以開啓瀏覽器方式,透過視覺化介面統一管理資源。例如在 Admin UI 介面左側選單,涵蓋 Content、User Management 的區塊,讓參與專案但沒有 AWS Console 權限的使用者,可利用 E-mail 方式邀請使用者進到 Admin UI,進行一些設定或觀看其他相關資源;甚至在 Set Up 區塊還有相關選項,例如要針對 Data Modeling 或 APP User 做權限管理,以及可連結到 AWS 其他服務。

運用開放資源 AWS Amplify Framework,打造高效能應用服務

AWS QUICKSTART 學習資源還介紹到另一個 AWS 提供的開放資源 Amplify Framework,一樣可利用 Amplify CLI 的方式,配置 Web 和行動應用程式的前後端,以及開發者需要用到的服務,讓應用程式更易於構建,並獲得安全、高性能的使用體驗。

Amplify CLI 一樣有支援多個不同 Category,例如較常使用的幾個 Comment Line,像是Amplify Init 指令做初始化或創建幾個不同資源;或是 Amplify Status 指令,隨時在開發過程查看各個 Category 狀態;甚至專案結束後,可利用 Amplify Delete 直接把 Amplify 所創建的資源做一次性删除。另外也可透過 AWS Amplify Client 利用比較抽象化方式,讓開發者直接利用 Component 實現想要完成的項目。

填寫表單 找到適合你的快速上雲服務與工具!

實際示範給你看,設定 React 程式可以如此簡單

假設前端工程師現在要快速部署一項有驗證功能(Authentication)還要搭配 Rest API、GraphQL、Analytics 等服務的應用,如何快速設定 React 程式?在 AWS QUICKSTART 的學習資源後半段,有詳細說明要啟動這類型專案的操作方法。

開發者可以先利用 AWS Lambda Function 結合 Amazon API Gateway 方式,創建出一個 Rest API,到了 Authentication 階段,則使用到 AWS Cognito 的服務,接著針對 GraphQL 需求,可利用 AWS AppSync 服務,以及最後如果有 Analytics 的需求,也可以串聯 Amazon Pinpoint 工具。Amazon Pinpoint 是一項彈性而可以擴展的行銷通訊服務,開發人員可利用 Amazon Pinpoint API 追蹤 Web 使用者的行爲,或是針對 APP 推送、電子郵件、簡訊點擊行為蒐集到具體的資訊。

在這整套流程示範之後,值得特別強調的是,AWS AppSync 是一項全托管的服務,能及時更新,甚至在使用者離線時仍可以持續去創建和修改數據。一旦設備連上線之後,這項應用程式就可重新連線,並接到後端同步數據,達成彈性、自動化擴展或減縮各式 API 的請求。

打造第一個你在 AWS 上的應用程式

AWS 最後強調,Amplify 是相當適合建構出一個靜態 Web、Apps 服務模式,例如說像是打造部落格,或者是一項 APP 內的代辦事項應用等;加上 Amplify 具全托管服務特色,可串聯上述 AWS 在雲端所提供的資源,都能在部署過程加以整合,加速開發流程及效率,並且有效節省開發資源。如果想用低門檻的雲端解決方案,其實前端工程師是能在開發流程更靈活配置資源,甚至為公司的商業、服務模式挖掘出創新價值。

了解更多:AWS 開發者系列