軟體工程師應該如何自我行銷?

https://softnshare.wordpress.com/2017/01/14/softwaredevelopermarketing/

 

工程師也需要學習行銷?

如果行銷的定義是-讓需要解決問題的人找上有解決方案的人

你覺得呢?

Soft Skills: The software developer’s life manual 的作者 John Sonmez在他第33個生日前就已經財富自由,常獲得公司自動送來的工作合約、演講等的邀約。 但他也曾經有很低潮的人生,這個課程是他人生十幾年的經驗匯集,希望能幫助跟他一樣是軟體工程師的你在求職與職業發展上有最棒的成果。

Your development stack is cutting edge—for 1999

Your coworkers laughed when they
caught you learning on your lunch break…

Your boss is only “agile" when he’s
dodging questions about that raise he promised…

And as you wedge yet another bug fix into that
monster 10,000-line class you wonder…

Am I Trapped In This   “Code Monkey" Job  For The Rest Of My Life?

Or can you finally find work that energizes you…

Solving challenging, real-world problems

With a team of professionals who take pride in their work…

And even get paid what you’re actually worth?

你知道連John Sonmez都有過找不到工作為錢煩憂的日子?
你以為技術很強就一定找得到好工作?
你需要看看John Sonmez在從生命谷底爬上來的故事

購買課程

這兩張照片都是 John Sonmez 喔 ^_^
 johncomparison.png

我還記得被我的老闆搞到快抓狂的那時刻。 “一分鐘”,我的老闆Tom Shirkey正在拉我進入會議室為了一個小小的“邊欄”聊天…   接下來我所知的事情是…我的心正被咬傷中,讓我大聲地對著他的臉尖叫- 他也不甘示弱。

我非常非常地克制自己不要…但仍一拳打到這凡事都要管的傢伙臉上!

現在我不會為這個大喊比賽感到自豪。這絕對是我軟體開發生涯中的谷底。但他真是罪有應得…

Tom 非常可能是我所有工作中最糟糕的部分。每天早晨,當我走過前門時,我腸子緊緊揪結。我每天數著每一秒,一到下午5點左右,我便很快打開那扇門往外跑…

回想 Tom 讓我每天都像生活在地獄中,在那我無法期待任何未來。

那時,我不知道有一天我會成為開發人員社群的領導者,這都歸功於Simple Programmer-我的部落格,一年達到超過100萬個開發者參觀。

我也不知道我將去製作55個 PluralSight 培訓課程,從 Java、iOS 到 GoLang,或寫出最暢銷的書- Soft Skills: The Software Developer’s Life Manual (軟技能:軟體開發人員的生活手冊)。

我不知道我有一天會在像 Ordev 和 Xamarin Evolve 這樣的國際開發者大會上擔任要角,或者像Verizon 這樣的大公司來敲門,以每小時500美元的價格向我諮詢。

我真的不知道我會實現一直夢寐以求的提前退休夢想 – 在33歲生日之前達成這目標。

回想當時,我覺得…

辦公空間”不再只是一部好笑的電影 – 它已是我生命的紀錄片

說實話,我只是因為太過絕望才去做這份工作。那時我已經離開工作崗位3個月了。我的妻子和我跟我的父母住在奧蘭多附近,在我找工作時一直窩在他們客廳的沙發床上。經過幾個月散彈槍似地發履歷作戰,沒收到任何回覆,只有震耳欲聾的沉默,你開始相信…一整疊的牌對你不利…

這幾年由於我身為世界各地軟體開發者的導師,我聽到很多開發者跟我以前一樣的經歷。

這裡我告訴你真正的問題是什麼:

程式設計這技術已經被視為一種商品。 如同,一個秤斤論兩的產品,通常來由最低價者得標

軟體開發的機會已經遠近馳名許多年。 這真的個很棒的職業選擇…

你能到哪個地方找到這種機會:在工作時間追求具挑戰性的工藝,解決現實世界豐富且重要的問題,創造改變世界的產品,與一些最好和最聰明的腦袋瓜一起工作…每天學習和伸展…享受時尚的辦公空間,免費小吃和休息室、乒乓球比賽…並在過程中快速致富?

難怪年輕程式設計師如“淘金熱”般紛紛湧入這就業市場。 這種趨勢仍在繼續 – 每年有40,000名新計算機科學的學生進入美國就業市場,這還沒包含自學而成和集訓學成的開發人員

現在仍然有很多真的很棒的工作。

但是,一旦你碰壁幾次,你開始意識到這些機會、薪資和津貼在軟體開發職場的“不對稱”

我的意思是…

前3%的開發人員在你還不知道有這些工作機會時已經掃過最好的機會

讓你和越來越多剛畢業的學生決戰,但他們可以為了獲得入門票只為花生工作。

且使這一切更加困難的是…軟體開發人員的招聘過程完全是失能的。

讓我為你掀開秘辛,告訴你這過程是多麼糟糕…

當一個公司在 Monster 或 Dice 網站上發佈一個工作時,就像把大量的血腥魚類扔到水中,引來一大群大白鯊 – 爆發激烈的搶食。第一個工作申請在幾秒鐘內到達。他們繼續放送幾天,直到徵才截止日。

平均每個招聘工作公司會獲得250個申請,這只是一般行業的平均水準。

好的開發者工作可以吸引更多,因為像我這樣的絕望求職者,只要在 Monster 這類網站以"軟體工程師"字眼搜尋到的,就不管是否合適如發垃圾郵件般寄履歷給這些公司。 75%的場合,他們甚至不合格。

想想面對所有那樣的噪音。你認為公司會找他們最好的工程師來仔細考量每個申請嗎 ?

當然不是。你的履歷將被對軟體開發一無所知的人力資源低階人員“濾過”,這些人可能以為"for loop"是高爾夫術語之一…然而,他們決定你的履歷是否能到達招聘經理手中…或被扔到“不合格”的爐渣堆。 由於人力資源審查員無法分辨誰是真的會寫程式或假裝會寫程式,他們只是掃描專用語,平均每個履歷只花6秒。

這裡有一個可怕的統計數據:98%的候選人被剃除基於他們履歷! 這意味著你被面試的機率甚至僅有50分之一。 且你實際獲得錄用的機率只有250分之一。 再次,這說的只是平均數。 想在Google工作嗎?祝你好運 – 找到這份工作比進入哈佛更難上10倍。

狀況還在惡化中嗎? 幾乎每個星期都有傳聞像微軟、雅虎和IBM這樣的大型技術巨頭進行另一輪大規模裁員。 且根據Business Insider(商業內幕),行業領導者預期最近隨時都有可能爆發“技術泡沫”。為什麼沒人告訴開發人員這新的現實?

這就是為什麼我花了幾個月睡在我父母的沙發上,一個工作一個工作申請,從沒收到幾個禮貌性拒絕的回覆… 這就是為什麼我同意接受遠在紐澤西的諮詢公司的面試,在那遇到了Tom。

那個功能失調的小隊似乎決心讓我從第一分鐘就開始淒慘。他們迫使我穿一整套西裝和領帶去面試 – 在一家中國餐館邊午餐邊做。 他們整個時間都在嚼蛋捲,沒有問我一個技術問題。 後來我意識到,他們根本不在乎我是否會寫程式- 他們正在招聘我做替死鬼,一分鐘內你會知道更多。:)

當我在演示他們的壘球問題時,我告訴我自己: “我不想要這份工作…我不想要這份工作…"

你知道我當然拿了這份工作

且每小時的工時對於像我這樣落魄的開發者來說太好了。畢竟我的家人都指望我來撐起這個家。 所以我們打包了擁有的一切到我們的Xterra(車),並沿著海岸向上開到紐澤西 – 從而開始我度日如年的11個月軟體開發生涯。

第1天:歡迎來到地獄,我們有T卹。

我的新老闆 Tom 是一個前高中足球教練,有個茂盛的棕色鬍子 – 刻板且霸道的繼父樣子。 他讓你像個後衛一樣跑你的劇本,如果你沒做好,Tom 會讓你極速衝刺,直到你疲憊不堪。 Tom 的腰帶段數剛剛好有足夠的Visual Basic基礎,讓他成為軟體開發各方面的認證專家。 在我提交程式碼前一定要通過他的檢驗- 即使他不知道其中有來自他的矢量…嗯,反正…

在我可以在我的開發盒上安裝任何新工具之前,必須先得到他的祝福—他曾因為我沒先讓他先跑過.NET框架就自行安裝而大發雷霆。 後來我發現,當我沒有在他"父親"的眼睛下,Tom 甚至想要控制我所有行動… 

無論如何,我的第一天工作,還沒有完全搞清楚這一切時,Tom 開始向我解釋我的任務,我幾乎不能相信我聽到的。 我開始意識到…這整個演出從開始就已設局 – 他們期望我失敗。

他們的小伎倆像這樣:接個齷齪但利潤豐厚的諮詢專案,裡面有一整組不可能做到的需求。然後僱用第一個以小時計算的顧問,正在街頭流浪的那種,做為你的替死鬼。 當他失敗,即可馬上開除他。

你和你的"好男孩"全職員工無責逃脫,且你一路笑到銀行 (領錢)

Tom 並沒有跟我做這提示。

相反地,他給了我一些來自Xerox專屬列印機格式的檔案,稱 Metacode。

我的工作是解開這些大塊的二進制檔案,以原始十六進制程式碼兆位元又兆位元地輸入跑過,最後找到一種方式很快拉出字體和圖像 – 不可訪問源檔案或 Metacode 本身的任何文檔。

“祝你好運,小子!"

我會讀矩陣。第一次我在 UltraEdit打開破解其中一個Metacode檔案時,看著這些純十六進制無意義的東西我覺得噁心。但過幾分鐘我對自己感到抱歉,我重拾我的 QA 訓練…

在大學時,我曾在惠普擔任列印機驅動程式的測試員。我的工作包括研究大量的列印輸出並從中尋找模式,所以這正是我擅長的。 最後我注意到了某些東西: 模式“1A 1B”,一遍又一遍出現 – 標題! 我在堡壘牆上發現了一個裂縫,2週後,我寫了世界上第一個 Metacode 反編譯器

現在,你會認為在這之後 Tom 和他的跟班們終於會給我一些尊敬。

但相反地,他們指責我作弊。我不得不給他們完整的展示。 “看,現在我正在提取一個字體檔案,看到了嗎,沒作弊!"   

“好吧,如果我們不能開除他,也許我們可以讓他自己辭職"

回想起來,我意識到我讓他們變得很緊張,因為他們從來沒有計劃讓我在那裡長期工作。

但是,由於我剛剛推出這 “Metacode奇蹟”(這對公司價值數百萬),他們完全無法拿我怎麼樣。 所以 Tom 把握每一次都可以把螺絲擰得更緊的機會… 如狠狠地訓斥我一頓-在我早點完成一個專案,並決定花時間添加一些“如果有會很好”的功能,我知道,用戶會真的很感激的。 以及到長島的客戶據點做艱難的全天旅行,全程看護安裝人員並換掉CD。 湯姆試圖磨我到底。

相對於他在我的屁股下點火,我決心成為全國最好的C ++程式設計師。我用每一“空出的”分鐘學習。我學會了一切有關指針和向量和記憶管理的知識。我掌握了高級演算法。我甚至建立了我自己的應用程式 – 魔法聚會的生活櫃檯(a life counter for Magic the Gathering)。

當煙消雲散,我變成頂尖程式設計師-世界排名最高的C ++開發人員之一。 我對我的技能的信心急速上升。 但在每天的工作,湯姆總故意冷落我,提醒我誰是老闆。最後,他們真的對我太過分了。有一天,Tom 宣布整個團隊必須要參加一個長達一週於英國曼徹斯特的培訓旅程。 而我是團隊中唯一的合約人員 – 其他人都是領薪水的全職員工,我以每小時計價。那時,我都在老英格蘭Jolly這地方,遠離我的家人和我非常重要的業餘專案。

所以我把 Tom 拉到一邊。 “你打算在這次旅行每天24小時支付我嗎?“ 我問。 湯姆笑 “不,你得到了去倫敦的免費旅程” 他說 :“你會去,且你會喜歡的,sonny。”

那時點就是我無法控制情緒高聲喊叫的起點。在我知道這之前,Tom 和我就像在一齣卑劣的戲後面對面講人壞話的後衛。 我被判出線,做為合約人員,在這情況我毫無槓桿的支點,我受夠了被擺佈。我不可能去上那架飛機。

“喔!  好樣的, 現在我們可以開除他。"

我在後來的7天坐在空蕩蕩的辦公室,自己一個人,在嗡嗡的熒光燈下。 每個人都知道我在那的日子不多了。 他們留一兩個星期給我讓我覺得有面子,然後釜頭終究砍下來了。 即使那時我沒有任何工作前景了,我終於鬆了一口氣。

我們跳上車,第二天早上2:30到達我父母的房子。“驚訝吧,老爸! 我回來了! " 這一次我"知道"一切都將會不同。 歸功於我每天在 Top Coder 的訓練,我的C ++技能日益茁壯,相信在技術面試將有好運相伴。我羅列所有完成事蹟,相信這些將讓招聘經理印象深刻。 我回到了很熟悉的職缺網站 Monster 和 Dice 例行掃描,打出求職信並寄出我的履歷,提交線上表單。

我告訴你,當我發現又碰上同樣堅實的沉默時,我非常地震驚。 沒有任何來信告訴我已收到我的申請。我的追蹤詢問電話和電子郵件也沒收到任何回覆。 也沒有收到任何拒絕的通知。

你開始懷疑,“我是該死地被放在拒絕往戶嗎?” 這時聽到的只有時鐘一分一秒踢踢躂躂的聲音,我又陷入絕望中。

不過,我申請惠普的兩個不同崗位邀請我去面試。 我打理好我的西裝去,但卻被判出局,雖然我在這兩次面試表現都是A等級的。 所以想像當收到拒絕信時我受到的衝擊! 這就像把一桶冰水波往臉上 – 當頭棒喝。

這是我第一次意識到:

最好的工作很少給最有才華和知識的開發者

我第一次瞭解到,你的技術能力無法像你自以為那樣在獲取好工作上加分很多

這個發現使我的世界翻覆。

至今,我已經投入幾個月的生命努力學習並忙著做業餘專案… 但最終,效果不大。

這場子的遊戲規則真的是被操縱了

即使我在惠普的“面試”也完全是個幌子。 惠普是個好男孩俱樂部(身家背景符合:名校畢業…),我只是做他們外部候選人的代表。 他們浪費我的時間,給我希望,但實際上我毫無機會。大多數公司也是如此。

有個“影子就業市場”是外人看不見的。 因為根據美國勞工部...85%的工作從不廣告最好的工作在放到 Indeed 或 Monster這種網站前,幾乎總是早被內部候選人或內部推薦找到人選。

當你在搜索這些網站時,你只是在刮桶底剩下的。

事實上,一個很好的經驗法則是:如果一個工作出現在徵人廣告上,你實際上不想要它

在我的手指被門砸過後,我決定看看我是否能運用“影子就業市場”成為我的優勢。

所以我尋找我的前老闆,因他的僱用我第一次到惠普。 他還在那裡,詢問結果,他正在尋找一個品保主管。 我接受了他提供給我的工作 – 每小時35美元(降低自尊)的費率。

我終於有份工作了,但我還是相當灰心,因為…在短短四年,我從在加利福尼亞少年時期的“奇蹟男孩”每小時$ 75 下降      一頭栽入新英格蘭地獄 一小時$ 45 …然後…

甚至作為一位全國最頂尖的C++開發者之一

我被迫接受這 QA 的工作,以我本來價值的1/3工資。 這一點道理都沒有。

為什麼似乎沒有人重視我的程式技能?

我終於開始越來越了解,我因此明白…

你需要一個“入場券”以獲得的工作

那麼,這個糟糕的QA工作是我的“入場券”,我對自己發誓,我要很快再次重回寫程式的工作。

有一天,我聽到一個名叫 Brian 的開發人員談論他正在努力解決的問題。 Brian 是位新的開發人員,這問題已經超出他的能力範圍。 所以我出現在他的座位旁,我們一起討論出解決方案。 不久,我成為了開發團隊的“隱形成員”,並且是一個值得信賴的導師和顧問。 最後,他們去找他們的老闆,說:“你必須僱用 John,沒有他我們無法趕上最後期限。

我發現了決定職業生涯的原則:

首先為他人帶來價值將為自己創造真實、可改變生活的機會

givevalue

任何各行各業最成功的人都是因為他們為他人創造了巨大的價值而成功

以一個“著名的”軟體開發人如Robert“ Uncle Bob ”Martin 為例。 Uncle Bob 因在 UseNet 上分享他的智慧建立了自己的聲譽,現在他是該領域最值得信賴和最有說服力的專家之一。 你覺得 Uncle Bob 今日的諮詢費是多少?

或者看看 Scott Hanselman,他以部落格、播客和研討會演說教學他所知的一切,建立了龐大的追隨群眾。 如果 Scott 明天決定離開微軟的工作,你認為他需要多長的時間找到一份新工作?

在每個工作,我提升我的目標,超越“只是寫程式",並提供越來越多的價值

當我與愛達荷州政府簽訂合同時,我為自己訂了一個任務:幫助我團隊中的每一成員更有生產力、成為更充實的開發人員,我開始了 Simple Programmer 這網站,作為一種與我團隊分享學習的方法。

我的部落格口碑頻傳,很快地每個月有成千上萬的人閱讀。

這些開發者開始把我當成這領域的領導者,發言與意見都受到尊重。

結果,我被晉升為專案的主管 – 在愛達荷州歷史上任何外包商中以最高小時費率簽約。

然後有一天我又上了另一課:

當你成為公認的權威,機會將追逐你

authority

當我的電話響時正坐在桌邊。這是來自一家多媒體公司招募經理的電話。 “嘿   John,我們都在讀你的部落格且都很喜歡。 我們有個職缺,希望可以聘用你來做。” 我那時並沒有在找工作,但聽起來很酷。 “什麼時候方便面試?” “面試?不用啦,你不明白,我們並需要你申請工作 – 我們想直接聘用你,這份工作是你的,如果你想要的話。”  這真讓我受寵若驚。 多大的轉變!  才幾年前,我不能讓雇主多看我的履歷一眼,就算我求他們…

當我開始尋找方法在我的職業生涯中提供更多的價值,我突然有更多的機會,不用對什麼都說“ 好的”,且那些機會可任我選擇。 以前就算我在技術方面的面試表現優秀,也仍被淘汰出局。 而今我獲得自動送上門的工作機會

正如戴爾卡內基寫道:當你專注於始終給予價值時,你正在做“感情銀行帳戶的存款”

當你這麼做,不會太久人們將視你看為專家、權威,甚至領導者…你將開始吸引更多機會,甚至在你還沒有嘗試想要的時候,意外的工作機會、 有利可圖的自由職業和諮詢出席、 演講邀請、 出版社出書邀約、商業夥伴關係…接踵而至。

這是獲得最棒的軟體開發工作和機會的真正秘密 – 你知道,你有時聽到的“神話獨角獸”工作…

在那兒你會與一群跟你一樣熱情的團隊成員共同學習與…構建軟體並解決真實有趣的問題…在那兒你接受挑戰並成長和發展你的技術能力…再者,薪酬和工作津貼都是頂尖的。

當你成為一個知名和受尊敬的權威,舊的“規則書”已不再適用於你

在這令人驚訝的工作機會送上門之後,機會如雪片般飛來,且越來越洶湧。 當你有多很多的機會後,你不用只說"好的", 這意味著你有更多的選擇。 你將位於司機的座位,這給你很高的安全感與信心。

你知道這感覺有多棒-如果你可以漫步到老闆的辦公室,說:"我要辭職!"  因為你毫無怯懦的陰影,確信自己可以發送幾封電子郵件,明天上午就能走進另一個新的工作辦公室。 

當你有這樣的選擇,面試不再可怕。你充滿信心,因為你不需要他們,他們需要你。

簡言之…

替代追逐"獎賞",你本身就是獎賞

這裡告訴你幾件後來幾年發生於我的事:

  • 一個創業公司聯繫我為他們建立一個測試框架。我真的不想要這工作,所以我給了個我認為瘋狂的高小時費率每小時300美元。他們的回答是:"你什麼時候可以開始?" 我現在已經將我的諮詢率提高到每小時500美元,且我經常拒絕請求。
  • 我受邀到 Ordev、Xamarin Evolve 和 TiD China 等會議上發表演講。
  • 一家軟體開發領域的頂級發行商,O’Reilly Media 與我聯繫並建議我出版一本關於我想寫的任何主題的書。一年後,他們出版了 Soft Skills: A Software Developer’s Life Manual (軟技能:軟體開發人員的生活手冊),這本書已成為最暢銷的軟體開發書之一。
  • 一家名為PluralSight的創業公司邀請我做線上講師的試演。他們喜歡我的試鏡,於是我花了兩年時間開展了55門課程。 這些課程的專利使我在32歲時能以百萬富翁的身價退休。
  • Simple Programmer 的業務已羽豐翼滿,每年產生6位數收入的數字,僱用3個員工。

雖有所有這一切,我仍然有相當大的比例是同樣那個無法獲得許多公司看我的履歷一眼的那個傢伙

不要誤會我,我一直在學習和了解新的程式語言和平台以及架構模式。

有段時間,我的職涯停滯沒長進,直到我做了個轉變,從總是試圖成為具有最熱門技術的“搖滾明星”程式設計師移轉…將我的注意力集中在 依雇主真正想要和需要 提供價值。 當我盡可能多地與許多人分享價值,他們將尊重我並把我視為權威他們因我能給他們更多幫助而來找我

這裡有的術語形容這樣的狀況,但對於大多數的軟體開發者,會覺得“骯髒”。  但我們都是成年人了,我知道你可以理解。

準備好了嗎?

這叫

“行銷"

“什麼~ 行銷?!?"    每提及這詞兒就收到這樣的反應

讓我們對此做個完美的澄清

有很多討厭的東西,在“行銷”的旗幟下。 你不想與任何這些有關聯,我也不想。  但是不要讓那些騙局的戰術盲目了基本真相…

“行銷”只是意味著連接一個需要解決問題的人與一個有解決方案的人

marketing

行銷在根本上是幫助人們解決問題。

而這不正是我們軟體開發人員所擅長的嗎?

當你以我告訴你的方式做“自我行銷”,總是想辦法提供巨大的價值,一切都變得很自然。

事實上,甚至令人滿意。

讓我告訴你,這比把你老是讓自己經歷工作尋找過程中低劣的絞肉機要好多了。

我完全意外地走出這一切。

我在這裡與你分享的每一個原則…這些推動我達到成功彼岸的想法,在以前我從來沒想過有可能…

我花了許多年去嘗試和犯錯才發現這些

如果在我19歲時,剛做開發人員時,有人把我帶到一邊,並教我一步一步了解今天我所知道的…

這將非常容易省了我十年的掙扎、沮喪和被拒於門外

而不是老覺得被困住卡住,不懂為什麼似乎沒有人認出我是個有才華又勤奮的開發人員…

我現在有個明確的計劃,建立我最想要的事業。

對我來說,真的是有點晚。但對你而言不會…

因為我已經做完了所有道路測試的功課也累積了17年以上難得的經驗…把這一切收集成為整體的培訓計劃,我希望我20年前就曾接觸過…

藍芽低功耗傳輸(Bluetooth Low Energy; BLE)

藍芽低功耗傳輸(BLE)是一種頻率介於2.4~2.48GHz間的藍芽訊息, 相關技術可參考wiki說明

https://en.wikipedia.org/wiki/Bluetooth_low_energy#Technical_details

BLE最大的特性在於相當省電, 一顆電池可使BLE運作長達一年, 非常適合運用在大眾廣播上.

世佳資訊開發的行動式門房服務app, 藉由BLE技術來告知房客飯店內相關優惠訊息, 房客無須參觀每一間精品店或設施, 便可完全掌握所有消息.

 

你的絕望我懂!工程師找 Bug 時一定有過的 30 句崩潰 OS

轉貼至http://buzzorange.com/techorange/2016/02/26/30-common-reactions-when-programmer-know-something-wrong-in-code/

開發應用程式是一個非常有壓力的工作。沒有人是完美的,因此在這個行業中,代碼中出現 bug 是相當普遍的現象。面對 bug,一些工程師會生氣,會沮喪,會心煩意亂,甚至會灰心喪氣,而另一些程式師會依然保持冷靜沉著。因此,如何處理修復 bug 的過程也值得我們細細琢磨。

我想分享一些工程師修復他們的原始程式碼時所經歷的想法。這是事情變得緊張時所觸發的輕鬆幽默。通常說來,應用程式終將可以工作,然後你也可以進入到下一個偉大的任務。我相信很多 web 開發人員和軟體工程師經歷過這些艱辛,然後在事後一笑而過。

  • 「我不知道是要刪掉還是要重寫它」

回顧從前舊的原始程式碼,會有一種想要重寫成較大塊集群的衝動和誘惑。醜陋的邏輯語句,還有冗長的語法,導致代碼非常難以閱讀!但話又說回來,如果代碼沒有壞掉的話,那就不要去修復它。這種洶湧澎拜的鬥爭是我經常要面對的,而且顯然會困擾許多軟體發展人員。

  • 「對於起始框架我應該查看Github

我想大多數開發人員都知道Github,上面每天都有數量驚人的開源項目發佈。任何語言的工程師都可以通過網路參考現有專案,加入維基討論,或者創建自己的代碼庫。它是各種專案所需外掛程式和範本的超棒資源。

 
  • 「為什麼這個腳本需要這麼多庫?」

尤其是一些比較大眾化的語言,如JavaObjective-C,庫的數量可能變得異常兇猛。當構建一個需要大量基礎的框架時,所需的庫的數量就變得顯而易見得多。即使是一些適用於JavaScript的外掛程式,也會額外需要無數的檔。有時,這會讓人覺得煩雜惱人但至少是有用的!

  • 「在網路某個地方一定已經有了解決方案。」

我面對棘手問題的第一反應是上網查。工程師會將他們遇到的問題發佈到論壇上,然後這個問題最終得到解決並歸檔。Google 可以指點你往正確的討論方向走。不幸的是,有的時候卻是因為手頭沒有特定問題的更多資訊,最後而找不到方向。

  • 「有沒有這個功能的外掛?」

為什麼要重新發明輪子?外掛程式是擴充任何程式或網站使用者介面的偉大資源。此外,它們還為開發人員提供了一些自訂和獨特的選項。萬一真的沒有可用外掛程式的話,沒什麼不自己構建一個呢?

  • 「雖然網站可以工作,但我害怕IE瀏覽器。」

Internet Explorer中渲染網頁的歷史充滿的艱辛考驗,是我們有目共睹或親身體驗過的。從5.5版本升級到IE9-IE10,總是需要爭取到更高級瀏覽器的支持。web開發人員可能會害怕 debug,因為在IE6中打開頁面是一個渲染噩夢。值得慶幸的是,這樣的日子正在慢慢成為過去。

  • 「對於邏輯運算式而言,這似乎並不怎麼合乎邏輯。」

對於if / else迴圈,for迴圈,while迴圈,do迴圈等等,都有邏輯運算式。當瀏覽示範代碼時,我試圖指出我的邏輯是如何工作的。NOT運算子和比較標記的數量又是如此之多。我經常回過頭去更新我自己的邏輯以便於更好地適合未來的做法。

  • 「我用30分鐘寫函數,花2小時讓它工作。」

這難道不像我們自己的程式設計故事嗎?你正興致勃勃地在構建著什麼,但是函數突然輸出致命的錯誤。所以,現在你必須回過頭去刪除一些代碼塊,以找出錯誤發生的行號。當你終於找到罪魁禍首,並解決它時,雖然有種精疲力竭的感覺,但也滿心安慰。

  • 「在閱讀多篇文章之後,我意識到,我之前全都是錯的。」

我常常會一開始就根據自己的程式設計思想,一頭紮進去研究,但是這可能會導致麻煩,如果事情不像原先設想地那樣順利的話。已經有很多次在我啟動一個項目之後,陷入了困境,然後只好尋求網路文章和其他論文的支持。然後我發現我的整個方法實際上是錯誤的,而且從頭來過更容易!如果我開始的時候能先做一番研究的話,從長遠來說,反而節省時間。

  • 「Stack Overflow 上和善的人或許願意幫助我。」

我已經數不清有多少次我通過Stack Overflow解決了難題。社區裡都是和善和聰明的人,他們非常願意提供幫助,如果你邁出第一步的話。在所有的線上論壇中,Stack Overflow絕對是對軟體程式設計以及前端/後端web開發支援最廣泛的網路。

  • 「花費大力氣才找出問題的原因是缺少了右括弧。」

調試是你必須要採取的步驟。進兩步,退一步。盯著代碼數個小時,以為函數名或變數作用域中有哪裡搞錯了,最後才發現是遺漏了一個括弧,這滋味,酸爽得不要不要的。所有這些時間都因為一個小小的語法錯誤而浪費。

  • 「喝杯咖啡,休息一下!」

有時候,你只是需要站起來,遠離螢幕。將滑鼠懸停在鍵盤數個小時,反而有助於打破常規。大多數健康指導都會建議我們每隔30-60分鐘休息一會。但是這一切都取決於你的需要,如果你覺得在程式中間休息更令人懊惱的話,那就不要中斷。

  • 「我應該把這個項目束之高閣,以後再來處理它。」

休息的另一個選擇是離開你的項目,而不僅僅是遠離你的電腦。如果還有其他工作需要做,那麼不妨去做其他工作。相對於已經花費了5個小時來解決問題依然不得入門而言的話,這將能更好地分配時間和資源。

  • 「我很懷疑古典音樂能否激發我的程式設計能力。」

有一種說法是,古典音樂可以在生命的早期階段促進植物生長。我個人非常喜歡在寫複雜筆記時聆聽古典音樂。爵士樂、鋼琴、大樂團,優雅的音樂在全世界的人類文化中都有一席之地。那麼,在程式設計的同時傾聽智慧的音樂真的能夠讓你更智慧地調試嗎?可能不會,不過希望它不會讓你變得更笨拙。

  • 「喝點酒吧,也許現在是檢驗峰值理論的好時機。」

很多讀者都聽說過峰值理論,簡單地說,這個理論認為程式師的編碼能力在喝了一定量的酒之後,會達到一個峰值。作者名叫史蒂夫·鮑爾默,他的行為古怪,就像是一個醉漢,這有一定的諷刺意味,因為鮑爾默在微軟從來就不是一名真正的程式師。也許我們需要等待別人來實踐證明這個理論吧。

  • 「是不是有人動過了我的原始程式碼?」

這聽起來有點妄想和偏執,但有時你會不由自主地懷疑,是不是有人在你補眠的時候,寫過這個東西了。回顧過去幾周或幾個月做的項目會讓你的心不斷地往下沉。有時候你會發現一些你已經不記得添加的東西——甚至這個項目你最近一周才剛剛瀏覽過!我為代碼而瘋狂,但你永遠不會知道

  • 「我不知道這意味著什麼。」

你能遇到的最壞情況是,你對你正在瀏覽的原始程式碼完全不知道該怎麼做。可能是你自己的項目,也可能是別人的專案,但問題的根源是相同的。現在,你必須決定是否值得花更多的時間去搜索替代方案,或仔細檢查腳本以瞭解它是如何工作的。

  • 「我需要Google錯誤資訊」

PHP中工作了多年之後,我不得不說,Google是我調試問題時的最好的朋友。使用Objective-CC ++JavaPython和其他主要語言,也是如此。錯誤資訊非常有説明,但是除非你記得不同的代碼意味著什麼,否則它讀起來更像是翻譯過的電腦語言。值得慶倖的是,有很多線上支援可以説明我們確定這些錯誤資訊的真正含義。

  • 「我應該停下來,收工……但我真的很想解決它!」

我們都有過極度灰心喪氣,想要放棄的感受,但總感覺半途而廢不是正確的選擇。於是,你繼續埋首鑽研,並嘗試新的解決方案來調試。但是,如果這還是意味著另一個小時的浪費呢?對於這樣的情況我並不陌生,令人非常令人沮喪。

  • 「噢,天哪,我以前為什麼不寫點注釋呢?」

當涉及到比較基礎的前端HTML / CSS / JS時,我們沒有必要寫注釋。但更複雜的腳本和程式卻需要一定形式的條理組織,當你在幾個月後,甚至若干年之後需要再回過頭來看的話。有時你會忘記注釋函數及其參數、輸出格式,和其他的必要資料。這在一段時間之後無疑會導致混亂,而且,當bug開始出現時,你必須調試整個腳本來尋找解決方案。因此,要是有一些有幫助的注釋就會讓你獲益良多。

  • 「20 分鐘前它還可以工作的……

在構建程式時,可能最令人沮喪的部分就是,它從能工作到不能工作——而你沒有更新代碼的任何部分!我發誓這是真的。而且這是沒有任何意義的事情——也許是其他程式正在運行緩存版本?有很多次你更新了一丁點代碼,卻導致了整個程式崩潰出錯,完全停止了工作。恢復到最近可工作的複製檔,然後從那裡開始一步步前進。

  • 「只是忘記了一個分號,然而整個程式卻因此而轟然倒下」

幾乎所有我使用的程式設計語言都需要結束符。雖然不是所有的語言都有,但在C/C ++中是很常見的。忘記添加結束符,不過是一個很顯然的錯誤!但是解析器不知道這一點,它會拋出一個致命錯誤。於是,你不得不額外花20分鐘去搜索技術故障,而原本只需要用1秒鐘補上那個缺少的分號即可。嗯,這就是調試軟體的樂趣。

  • 「我不知道讓別人來修復我的代碼,得花多少錢?」

聘請另一個開發人員的點子是挺誘人的,但從財政上看顯然沒有那麼可行。而且如果你不親身體驗的話,又怎麼能從這些錯誤中學到東西呢?當你在經歷多次失敗之後,終於理解了某個程式設計概念的時候,那感覺真是棒極了。儘管如此,我的腦海裡依然時不時地有一種「讓別人來修復代碼」的沖頭。

  • 「快速瀏覽Hackers News可以提高我的工作效率」

很多工程師最喜歡閱讀Hackers News頭版。它有很多關於自由業、時間管理、軟體發展、以及創業發佈和融資的大量資訊。雖然HN可以通過自我教育讓你感覺自己變得更有效率,但同時它也會浪費你的時間。但每隔幾小時去快速瀏覽下Hackers News也不是那麼糟糕。

  • 「這個API怎麼沒有文檔?!」

在使用帶有壞文檔的外掛程式或框架時,最令人沮喪的是,你必須靠自己去深入鑽研原始程式碼。我喜歡開發人員花時間去專門設計可用文檔頁面的專案。所有的參數和選項都解釋得清清楚楚,甚至可能會被用在一些示例代碼片段中。但可悲的是,事實並非總是如此。所以最簡單的方法是遠離不良文檔,不自找麻煩。

  • 「我真希望我保存了那個資料庫的備份副本……

在編寫和 Debug 代碼時,我不會想到要備份。然而,資料備份提供了允許我們回過頭去修改的踏腳石。這在即時的伺服器環境中尤為有用,因為有什麼變化會立即執行。以防萬一,我們應該記得保存網站檔和資料庫的本機複本!雖然這會是一個惱人的任務,但其惱人程度遠遠比不上重建損壞的SQL資料庫。

  • 「讓它正常工作的最快解決辦法是什麼?」

在花費數個小時苦苦思考自訂的解決方案之後,很明顯你需要一種新的方法。在設計漂亮的介面之前,程式師率先想到的是讓功能正常工作。確定最快、最準確的解決方案,並實施這個解決方案讓其工作才是100%利用了時間。然後,再轉移到漂亮美觀方面。

  • 「我敢打賭更新我的軟體將解決這個問題。」

管理程式設計語言依賴和外掛程式的團隊並不需要經常發佈版本。有時,在你從電腦傳輸檔到即時伺服器的時候,更新PHP /Ruby/ Python / SQL版本可以解決調試問題。本地更新很少能夠幫助修復原始程式碼中的bug,除非你的版本已經過時得無可救藥。所以,值得一試!

  • 「我應該更有條理並且去學習Git ……下周就去研究它。」

開源版本控制包Git在程式師中非常受歡迎。相對于其他的競爭對手,它提供了更容易的學習曲線,並且被許多線上代碼倉庫,如Github上和Bitbucket使用。開發人員很容易拖延去學習Git的行動,因為它對於初學者而言顯然是有難度的。但是一旦你知道了基本命令,那麼Git就是小菜一碟。而且它還能使調試版本控制更加清晰。

 
  •  「算了,我還是從頭再開始吧。」

有時候,在你絞盡腦汁花費數個小時之後,可能要做的只是將你的工作檔移動到歸檔目錄(或刪除它們),再從頭開始就可以了。但是,考慮到先前已經耗費的時間,你很難下定這個決心。但是,當我一籌莫展時,我往往會選擇從頭開始,因為這樣才有可能找到完成項目的正確道路。

(本文獲《碼農網》授權刊登轉載,圖片來源:dumbledad CC Licensed,未經授權請勿轉載。)

決定開發原生 app 還是行動裝置網頁前,先釐清這 10 個問題

決定開發原生 app 還是行動裝置網頁前,先釐清這 10 個問題

評論

原生 app(native app)與行動網頁(mobile web)孰憂孰劣,一直是爭論不休的話題,考量自己的公司、預算、以及團隊技術等條件,您該開發原生 app 還是響應式網頁呢?以下為美國網頁開發與設計公司 Table XI 繪製的圖表 1,或許有助您評估作出選擇。

1. 產品將運用到智慧型手機的功能——原生 app

螢幕快照 2013-07-30 下午5.56.01

您想創造的服務是否會用到相機、GPS、掃描或其它手機功能?如果手機網頁無法滿足您所希望提供的獨特功能或內容,原生 app 大概是不二選擇。

2. 希望帶來獨特的使用者體驗——原生 app

螢幕快照 2013-07-30 下午5.56.11

原生 app 直接與手機銜接,因此能夠在較小的限制下,為使用者帶來獨特的體驗。

3. 設計與使用者介面(UI)很複雜——原生 app

螢幕快照 2013-07-30 下午5.56.19

HTML5(響應式網頁)固然能夠對應各種不同裝置,不過遇到複雜的設計與 UI,它可能會令人失望,相較之下,原生 app 可以創造出更契合的使用者體驗。

4. 預算低——響應式網頁

螢幕快照 2013-07-30 下午5.56.28

一般而言,由於開發和部署速度快,把點子帶進市場時所需的資源也比較少,而且基本上靠著一套程式碼走天下,因此響應式設計的成本較低。

5. 產品內有商業行為——原生 app

螢幕快照 2013-07-30 下午5.56.35

如果您想為自己的產品提供小額購買的功能,請選擇原生 app 。網頁上的購物車難以取代 app 內購買系統。

6. SEO 很重要——響應式網頁

螢幕快照 2013-07-30 下午5.58.41

假設您希望增加產品在搜尋引擎上的可見度,並吸引更多流量,請選擇響應式網頁。app 屬於封閉式環境,無法被搜尋引擎擷取,所以不會對基本搜尋(organic search)排名造成影響。

7. app store 有可能審核不過——響應式網頁

螢幕快照 2013-07-30 下午5.58.48

蘋果要求 app 必須通過其所設定的條款才能上架,審核過程有可能得耗好幾個禮拜到好幾個月。有些領域的規範比其它更嚴格,例如 app 內購買或 app 內訂閱。

8. 必須傳送、接收大量數據——原生 app

螢幕快照 2013-07-30 下午5.59.32

app 不像網頁一般需要高度仰賴網路速度,因此運作速度通常較快。不過響應式網頁或許已經快趕上這個差距。

9. 經常更新——響應式網頁

螢幕快照 2013-07-30 下午5.59.39

每次更新,原生 app 都得一再歷經冗長的審核,假如您的產品需要頻繁更新設計,想確保使用者立即看到最新版本,響應式網頁或許是最簡單的方式。

10. 跨平台通吃——響應式網頁

螢幕快照 2013-07-30 下午5.59.46

如果想將產品放到所有裝置上,響應式網頁是最簡單直接的答案。

完整圖表web-versus-native

台灣資深 Android 工程師葉承達:為什麼老闆應該僱用 App 人才?

轉貼至http://buzzorange.com/techorange/2016/03/16/interview-android-part-3/

為什麼老闆應該僱用 App 人才?

為什麼學會 App 很重要?

在提倡「Mobile Only (行動唯一)」以及萬物聯網的當下,螢幕已經無所不在,手機更成為了近乎主視覺的地位。面對這樣的趨勢,很多人可能選擇 RWD 一勞永逸;再加上很多公司一貫的一人當三人用、60 分就可以的心態,常常會為了降低成本,忽略了專門開發團隊、專精人才的需求。

 

但隨著行動的勢大,我們在全球都可以看到原生應用的需求越來越重要。專門的開發團隊將會成為趨勢。(可參考此篇《台灣 App 開發者現況》)

  • 為什麼我們需要專門的應用開發團隊?

資深 Android 開發者葉承達直言,首先就是因為「體驗」!

舉例來說,現在最常見的就是:你用手機分享一個網址到臉書,你的朋友用電腦從臉書打開這個網址,出來的頁面卻跟手機版的一樣,整個介面完全沒有依照「載具」的改變而改變,這樣的使用經驗其實很不好。

過去曾在 17Life、friDay App 等國內知名品牌做 App 的葉承達,分享了他在業內所看到的趨勢:

身在業界,我很常會關注身邊市場的應用開發趨勢,像是中國、歐美的應用,看看他們是否有針對不同裝置做不同的界面、設計、驚喜等。

舉例來說,中國的介面到現在,多數還是很像雜貨店,很擠很雜;歐美、台灣比較講究簡潔風的,也比較有設計感,現在的確成為趨勢,最明顯的例子就是 Airbnb。

現階段其實也可以看到台灣有不少公司為了跟中國接軌等等因素,只要模仿中國模式就好,做出來 App 就很奇怪,因為這種界面其實是適合中國市場的,台灣不一定適合,反而讓使用者跑掉了。

 

另外,現在車聯網、物聯網已經離我們越來越近,而他們所提供的服務都是應用的一環,那這些應用該怎麼呈現?

這時候「原生」就很重要了。而如果你有在關注相關的訊息,其實已經很多人在嘗試這一塊,畢竟誰先進來,這就是誰的。這環境一定需要人,所以我認為如果不趁現在先了解、進入,會很可惜。

 

當然很多人會說但老闆就覺得「現在能用就好了」,但是當人家做出好的東西時,我們的機會自然而然過去了。

以下,葉承達提供了幾個他認為做得不錯的案例:

● KKTOWN(Android

1

● CM Security(Android

2

● Expedia(iOSAndroid

葉承達特別推薦 Expedia 他們有針對手機、網頁不同介面做出原生開發。有了這樣的開發投入,會發現不管用戶是從哪個載具登入,都可以享受到有針對性的優質介面。

3

最後,葉承達再一次呼籲,想要搶占先機做好產品,有專屬的開發團隊很重要。應用不會消退,它會是從今天開始很重要的開發標的。想要加入?那就快點開始,加入學習  coding 的行列吧。

____________________

不開始寫 Code,想再多都是枉然!意志力不夠,省錢自學 Coding 也沒用!

如果你也跟我一樣:渴望抓住科技時代潮流不被淘汰,請不要錯過超紮實 24 小時的開發訓練。

臺北 Google 開發者社群共同發起人、資深安卓 Coder 手把手教學,快點來報名吧

app_600x100

關鍵 2,700 秒 你真的就要這麼浪費了嗎? 圖 / 空中美語提供
      • 延伸閱讀

專訪台灣資深 Android 工程師葉承達:App 不紅了?10 點告訴你為什麼現在應該學

台灣資深 Android 工程師葉承達:為什麼上課比自學 Coding 好?