在程式競賽得獎負面相關於工作的品質

2015 的文章以及演講,最近冒出來看到的。GooglePeter Norvig 提到了用 ML 的方式分析,發現程式競賽的成績與工作品質的負面相關性:「Being good at programming competitions correlates negatively with being good on the job」。

換句話說,程式競賽的成績反而是是個負面指標 (對於 Google 內的情況分析出來的,所以是基於 Google hiring process 的前提過濾過的)。

In this talk, Peter talked about how Google did machine learning and at one point he mentioned that at Google they also applied machine learning to hiring. He said that one thing that was surprising to him was that being a winner at programming contests was a negative factor for performing well on the job.

給了一些對原因的猜測:

Peter added that programming contest winners are used to cranking solutions out fast and that you performed better at the job if you were more reflective and went slowly and made sure things were right.

YouTube 的留言處也有一些猜測,像是:

What he's talking about is the fact that several extremely important parts of software engineering are not included in these contests, for example code reusability, maintainability, decomposition of the problem using the OO paradigm, etc. All of these make a good engineer, but are not necessarily needed in competitive programming contests.

「把工作自動化」的討論

最近在 The Workplace Stack Exchange 上還蠻火紅的一篇文章:「Is it unethical for me to not tell my employer I’ve automated my job?」。

作者的全職工作是從系統上抓資料出來,貼到 spreadsheet 上 (也許是 Excel?),這份工作的薪資還不錯,然後作者寫程式自動化掉後發現他每禮拜只需要做一兩個小時了:

There might be amendments to the spec and corresponding though email etc, but overall, I spend probably 1-2 hours per week on my job for which I am getting a full time wage.

然後在糾結要不要跟雇主講,跑上來發文 XDDD 有興趣的人可以去圍觀看一看下面的回應...

Amazon ECS 可以跑 cron job 了...

Amazon ECS 上面固定時間跑某些東西,以前得自己用 AWS Lambda 帶 (或是自己架,不過這樣就要自己考慮 High Availability 架構了),現在則是直接支援:「Amazon ECS Now Supports Time and Event-Based Task Scheduling」。

Previously, you could start and stop Amazon ECS tasks manually, but running tasks on a schedule required writing and integrating an external scheduler with the Amazon ECS API.

Now you can schedule tasks through the Amazon ECS console on fixed time intervals (e.g.: number of minutes, hours, or days). Additionally, you can now set Amazon ECS as a CloudWatch Events target, allowing you to launch tasks by using CloudWatch Events.

麻州立法禁止詢問前一份工作的薪資

雖然利用談判技巧是可以避開 (在你有本錢談判的情況下),麻州直接立法禁止了,這對於求職者來說相當重要:「Illegal in Massachusetts: Asking Your Salary in a Job Interview」。

The new law will require hiring managers to state a compensation figure upfront — based on what an applicant’s worth is to the company, rather than on what he or she made in a previous position.

法案是「Bill S.2119」,可以看到「An Act to establish pay equity」的說明,應該是指目標之類的。

裡面的幾個重點,首先是生效日期:

SECTION 7. This act shall take effect on January 1, 2018.

然後是求職期間的禁止行為:

(3) seek the salary history of any prospective employee from any current or former employer; provided, however, that a prospective employee may provide written authorization to a prospective employer to confirm prior wages, including benefits or other compensation or salary history only after any offer of employment with compensation has been made to the prospective employee;

接下來應該會有更多州制定類似的條款...

美國年輕人的理想職業

紐約時報報導 National Society of High School Scholars 問了一萬八千名美國年輕人 (15~29 歲) 理想的職業,也不少出乎意料的結果跑出來:「The New Dream Jobs」。

常見的網路公司在上面,但讓紐約時報感到意外的,FBICIANSA 也在上面:

When the National Society of High School Scholars asked 18,000 Americans, ages 15 to 29, to rank their ideal future employers, the results were curious. To nobody’s surprise, Google, Apple and Facebook appeared high on the list, but so did the Central Intelligence Agency, the Federal Bureau of Investigation and the National Security Agency.

不過應該是不意外?在教育體系被灌輸愛國主義不就很容易就有這樣的結果?

英國計畫在 2018 年開始強制企業公佈男女的平均薪資及 Bonus

英國計畫從 2018 年開始,超過 250 人的公司必須公佈男女的平均薪資及 Bonus:「Companies will be forced to reveal their gender pay gap」:

The new rules, revealed on Friday, will apply to all companies with more than 250 employees.

除了平均薪資以及 bonus 外,還必須公開每個區間的人數:

In addition to publishing their average gender pay and bonus gap, around 8,000 employers across the country will also have to publish the number of men and women in each pay range.

目標是希望讓資訊更透明讓人力市場更健康:

The government is hoping that naming and shaming firms that pay women a lot less than men in the same jobs will push them to stop the practice, because it will make it harder for them to attract top talent.

可以看到目前估算出來的差異:

另外美國也在規劃類似的法案,不僅僅是性別,還包括了種族等其他資訊:

In the U.S., similar plans are also under discussions. President Obama announced a proposal earlier this month that would require companies with more than 100 employees to report how much they are paying their employees by race, ethnicity and gender.

KKBOX 徵人:軟體開發中心 (i.e. Client Team)

索引:


在寫自家的介紹時,特地跑去跟軟體開發中心的主管要 Client Team 的介紹,人家交稿的速度快多了... Q_Q

Anyway,這篇是由 Client Team 的主管所寫的介紹,一樣是所有的部門都有職缺 (人力銀行上未必有開),有興趣的可以提供 resume 到 recruit at kkbox.com 這個信箱。


軟體開發中心 (Application Develop)

在 KKBOX 裡頭,我們還蠻習慣以老派的 Client/Server Side 來稱呼不同技術背景的開發人員,Client Side 說穿了就是開發 App 的那群人,只要你喊得出來的主要平台,大概就是我們負責的。

軟體開發隨著功能的演進,程式碼就會變得又肥又大,自然免不了些壞味道,面臨設計架構的難題,我們希望內部開發者能夠清楚三件事情: Design Pattern,Unit Test,和 Refactoring。上述觀念應當不用多說什麼,幾乎都變成顯學了。我們期盼透過一些原則和流程來讓開發工作變得不會那麼難以維護。

Client Side 目前共有四個 App 開發部門和 SQA 部門:

  1. Windows 開發部: KKBOX 在早期開發時,當時主流的作業系統還是 Windows XP,所採用的開發框架是 MFC,儘管技術很老,但那是個什麼事情都可以自己打造的年代,我們也樂此不疲。會用到 C++/COM 與微軟早年推出的視窗各類技術 MFC/ATL/DirectShow 。說個秘密,我們也還最低限度的維護著 KKman 呢。
  2. .NET 開發部: 主要負責的是 Windows Store App 和 Windows Phone 的開發,採用的是微軟在下個世代主推的 Universal App 開發框架來打造 KKBOX 在三個 Windows 平台的體驗。這部門需要熟悉的程式語言是 C#,部門有兩位微軟 MVP 相當熟悉微軟的平台技術,很活躍於微軟舉辦的聚會。
  3. Android 開發部: 很明顯地,就是在 Android 手機作業系統上開發 App 的部門,除了手機之外,我們也在 Tablet / STB / Smart TV 各式裝載 Android 系統的裝置上開發。需要熟悉 Java 程式語言和 Google Android SDK。這部門的開發人員很常在 Android Taipei 上出沒,分享開發心得。
  4. iOS 開發部: 聽名字應該也不用多解釋,主要就是在 Mac/iPhone/iPad 上開發 App,為了掌握最新技術每年我們都會派人前往舊金山參加 WWDC。需要會的程式語言是 Objective-C,當然蘋果力推的 Swift 也開始加入開發行列,每個月也都在 CocoaHeads 聚會中跟其他開發者閒聊。
  5. 測試開發部: 俗稱 SQA 部門,著重依據測試的原理和方法來設計測試案例,因此像是黑箱測試方法的 BVA 和 ECP,以及 MBT … 等等都是在設計測試案例時,會用到的測試原理。內部有個小組專門負責研究與建置自動化測試框架,讓各個專案可以各自依照需求建立自己的測試系統。需要熟悉 Python 程式語言,同時我們也將日常得到的心得放在「科科和測試 Testing with KK」上,提供給同樣想把軟體測試工作做好的每個人。

順道一提,除了 KKBOX 以外,還有 KKTIX,Hami Music 和日本服務 Utapass,也都是上述開發部門負責的。所以你要真的那麼愛寫 App 的話,那這裡應該蠻適合你的。

KKBOX 徵人

索引:


下面提到的所有職缺都有在找人,有些下面說明的職缺在人力銀行上不一定會開 (招募效果不好的會暫時先關掉,再研究要怎麼改),有興趣的可以寄信到 recruit at kkbox.com 這邊,如果只是想要問些問題的可以寄給我 gslin at kkbox.com

一般在介紹我所屬的部門時會這樣介紹:KKBOX 是 Client & Server 架構,所以這兩塊分成兩個 team。

R&D 的部份,Client Team 有五個團隊,前面是正式名稱,後面「」包起來的是我習慣的分類:

  • Windows 開發部:Windows 應用程式開發與維護。
  • .NET 開發部:Windows Phone (App) 程式開發與維護。
  • Android 開發部:「Google Team」。
  • iOS 開發部:「蘋果 Team」,包含 Mac 應用程式開發與維護。
  • 測試開發部:包括了上述的自動化測試以及手動測試。

我所屬的 Server Team 有三個 R&D 團隊:

  • 平台營運處:「API Team」,包括了開發與維護 KKBOX API,以及去接唱片公司的 API (像是,唱片公司會以 DDEX 格式將音檔提供給我們)。另外 KKBOX 的各類 Infrastructure 也會與這個團隊有關,像是 Search Engine 的建制。
  • 技術開發處:「Web Team」,包括了官方網站 (www.kkbox.com) 以及應用程式內的 Web View 的開發與維護,另外與網站相關的技術 (像是 Node.js)。而很多使用 HTML5 技術開發的 App 也是屬於這個團隊在處理。
  • 資訊系統處:「Billing Team」,包括了 KKBOX 內部的資訊系統,以及所有與金流相關的系統。

然後因為我在 Server Team 打雜,所以下面全部都是針對 Server Team 的職缺在說明... (當然,Client Team 的職缺也是可以寄信到上面講的信箱)

Overall

R&D 有兩個地點,一個在台北南港軟體園區,另外一個在高雄軟體科技園區。台北南港軟體園區是總部,目前有 250+ 人,高雄目前應該是 30+ 人。

內部大多使用 PHP 5.4+ 的環境 (大多都 PHP 5.5 了),有幾台機器用更舊的版本,目前正在 migrate 到 5.5。

PHP Framework 的部份,新的專案用 Laravel 4.2,目前計畫要換到 5.0。舊一點的專案用 Zend Framework 1.12,再舊一點的就是傳統的 PHP 了。

除了 PHP 外,還有用 Java (Search Engine 這塊) 與 Node.js (Server Push 機制),不過以 PHP 佔大多數。

資料庫的部份,MySQL 都已經是 5.6 (Percona 的版本,有單機版與 PXC 版本)。

版本控制的部份都用 Git,最早期的專案放在 GitHub 上,後來的專案有些放在 Gitolite,最近則是在轉移到 GitLab 上,配合 Merge Request 用。

冨樫...

要詳細說明公司福利以及這三個部門的職缺,但沒什麼力氣了,先讓我冨樫一下吧,晚點再開新的文章來寫... O_O