1. 程式人生 > >一個公式告訴你為什麼程式設計師要轉演算法工程師

一個公式告訴你為什麼程式設計師要轉演算法工程師

原來的標題是:演算法工程師工資調查 20170611

今天(2017年6月11日)爬了某招聘網站的十大城市的演算法工程師職位。

演算法工程師

這裡的演算法工程師包括比較廣泛。有做資料科學的,有做圖形的,有做訊號處理的。之後會統計更細分的領域。

十大城市

以下按照演算法工程師的需求量,找出十大城市。因為演算法工程師向大城市集中比較明顯,所有這十大城市基本可以代表全國的演算法工程師了。

城市 需求 城市 需求
北京 1048 成都 149
深圳 353 南京 92
上海 312 西安 91
杭州 226 天津 67
廣州 184 蘇州 60

需求量在50人左右的還有武漢,長沙,合肥,濟南和鄭州。

從表中可以看出。北京以1000多人的需求量,成為當之無愧的一超。其需求量相當於後面的四個城市的總和。

杭州作為非一線城市,其需求量不僅遠遠超過非一線城市裡的第二名成都,而且還卻超過了廣州。其實,杭州的網際網路產業,屬於二線城市裡比較發達的。之前的統計也表面杭州的程式設計師工資高於深圳和廣州。
http://blog.csdn.net/juwikuang/article/details/72891659

工資分佈

十大城市的演算法工程師的平均工資為18912元。而之前調查的一線城市的程式設計師的平均工資只有11770元,可見演算法工程師在程式設計師裡屬於高工資。工資中位數為17500元。如果你的工資超過22500元,你就已經超過了75%的演算法工程師,算是優秀的演算法工程師了。(吳軍老師說的)如果你同時具備第二項技能,比如架構師,並且也做到25%。那就是傑出人才了。

工資和人數

教育

和程式設計師不同,演算法工程師的學歷要求,明顯提高了。

學歷分佈

受教育水平對工資有著顯著的影響。看下圖。

教育水平和工資

請注意這裡的中間線是工資中位數,不是平均工資,下同。

大專,本科,碩士,博士的平均工資分別是13677, 18727, 20981, 23194。中位數分別是9000, 17000, 17500, 22500。有趣的是,碩士和博士的平均工資差距並不顯著。最優秀的25%的博士和碩士,他們的工資,都在25000元以上。但是不排除有些博士並沒有走社會招聘而是成了什麼長江學者,也許還有房子分。

工作經驗

工作經驗和需求

工作1到5年的演算法工程師需求量是最大的。

工作經驗和工資

資料顯示,工資會隨著工作經驗的增長而增長。

城市

平均工資方面,由高到低依次為北京(21332),上海(20162),杭州(19138),深圳(18621),廣州(18016)。

這裡寫圖片描述

而工資的中位數排名,則讓這五個城市調換了次序。從上圖可以看出,北京還是最高(20000),上海和深圳排第二(17500),杭州和廣州並列第四(15000)。

統計(Oneway Anova)顯示,北京和上海的平均工資沒有顯著的差異。北京和其他地方的差異都是顯著的。

演算法工程師工資計算公式

比較了北京,上海,杭州,深圳,廣州所有程式設計師的平均工資和和演算法工程師的工資。發現他們兩者的correlation是接近於1,二者高度相關。

from scipy.stats.stats import pearsonr   
a = [21332,20162,19138,18621,18016] #演算法工程師
b = [13854,12213,11009,10655,9503] #所有程式設計師
print pearsonr(a,b)

它們之間的pearson r值達到了0.995,p-value為0.0003,顯示他們之間有很強的線性正關係。我們乾脆把他們的線性關係找出來吧。

from sklearn.linear_model import LinearRegression
lr = LinearRegression()
X = [[13854], [12213], [11009], [10655], [9503]]
y =  [21332, 20162, 19138, 18621, 18016]
lr.fit(X,y)
print lr.coef_
print lr.intercept_
print lr.score(X,y) #r^2

輸出值分別為
[ 0.78846586]
10428.3889601
0.990631312216

也就是說我們可以得到以下公式:

S¯a=10428.39+0.788S¯p

S¯代表平均工資。S¯a代表演算法工程師工資,S¯p代表程式設計師工資。

這裡的R square非常高,達到了0.99。表示模型解釋了99%的變化(variability),即模型非常準確。

我們把迴歸線打出來看看。

import matplotlib.pyplot as plt
cities = [u'北京',u'上海',u'杭州',u'深圳',u'廣州']
plt.scatter(X, y,  color='black')
plt.plot(X, lr.predict(X), color='y',
         linewidth=3)
plt.title(u"程式設計師和演算法工程師平均工資")
plt.xlabel(u"程式設計師平均工資")
plt.ylabel(u"演算法工程師平均工資")
for i in range(5):
    plt.text(x=X[i][0],y=y[i], s=cities[i], color='b')
plt.show()

演算法工程師工資和程式設計師工資

因為這個公式是按照地區來算的,所以我們可以說,(Technical/literally speaking),這個公式是“放之四海而皆準”的。:)

公司

選擇一個什麼樣的公司,也決定了工資收入。

公司性質和工資

事業單位工資明顯低於其他,但是。。。你們懂的。

公司的規模,對於工資同樣影響有限。

公司規模和工資

你想開始轉了麼?

如果你現在想轉演算法工程師,我這裡可以提供你的第一課。就是用我們上面提到的程式設計師和演算法工程師的工資關係,求一元線性迴歸模型。具體見《手把手教你用Python寫線性迴歸》:
http://blog.csdn.net/juwikuang/article/details/78420337