LV. 40
GP 1k

【心得】想進入程式領域前,先思考為什麼寫程式

樓主 麻弱 y6117daniel
787 -
前言

嚴格來說,我程式經驗莫約一年多左右,目前專攻java(java8),輔助為javascript,
個人是習慣以原生程式為主,所以javascript框架只有略為沾邊。

小弟目前是在中部某公司擔任軟體工程師,至於薪資我稍微說明一下,
可能是比較多人好奇台灣軟體的薪資,
在工作之前有收到幾間面試邀約,最好的應該是聯發科,
但是,其一是覺得自己還不夠格,再來是因為在中部先待,所以沒有去面試。

這份工作,目前薪資約為4萬多,加上年終為15個月,其他獎金另計,
基本上不常加班(視專案),六日周休,工作主要開發系統網站,
我初學淺,所以下了很多功夫,看了很多文件,
這是目前的概況,目前年齡今年滿26,真正進入職場一年多,雖然掛資深工程師,
事實上不敢這麼說,現在程度只能開發一些簡單的lib。

打這麼多是因為,有些人可能覺得我沒資格講述關於入門程式的概況,
所以我簡述一下,畢竟高手多,我僅只是初學者,
當然我其實也是靠作品得到工作機會,如果覺得我很廢得多多包涵。

以下會講述我在從無到有轉變成工程師遇到的心得與方法,
不敢說完美,但是是真實經驗談。

這一篇目的是讓有興趣接觸it產業的人,或者想學程式的人一個入門思考概念。
我不會講劈哩啪啦的程式,而是,在你想寫程式前要的思考。
很多人說自己興趣是程式,但為什麼寫不好呢?
我想可能是有些基礎沒做好,不妨往下看看。

當然這是一篇長文,我會以標題來區分,有懶人包的。

為什麼想寫程式?

通常想接觸程式的人,大部分是覺得,可以找到一份好的工作,
可是基本上,能夠走下去的都是對於程式的目的有熱忱的比較多,
舉個簡單的例子,fb的共同創辦人、youtuber的共同創辦人、apple還有微軟都是不少都是程式起家,
因為這些平台創辦人往往不只一個,有些人可能會反駁他們並不會寫程式,
但這得追朔到源頭,他們通常對於計算機或者科學有一定的涉略,這也是我想表達的。

首先,寫程式其實並不是因為熱愛寫程式而去寫,
在我認識得大部分程式的高手,基本上都是"為了什麼去寫",
譬如你想做一個網站、想做一個app、想開發人工智慧等,其實都是符合"為了什麼去寫?"這件事情。

如果你想寫程式,通常個人會認為,最好是有一個目的性在加入,
因為,軟體工程師的工作不是只有寫軟體而已,
程式涉略得相當得廣泛,寫程式只是一個起頭,最後還是以目的為主。

而目的性其實很多多,以不碰硬體來舉例就好,像是爬蟲、遊戲、系統,都可以去寫,
程式就只是這些東西的一個基礎而已。

簡單說如果你想要做這些事情,雖然可以透過工具,但是不熟悉基本的程式,
想做出多樣化的東西時,就會非常受到限制。

用個簡單的想法,現在流行手機遊戲跟大型社群網站,
但是在幾年前則是單機遊戲還有電腦網頁遊戲當道,
其實這些都建立在程式的基礎上,這也包含你我現在在用得這個網頁,
換句話說,基礎不變的狀況下,其實可以產生出來的東西也是千變萬化的。

至於所謂的基礎是什麼呢?

萬物基本上都符合一個原則,就是循序漸進,相信這個道理大家都知道,
程式也是一樣,更是強烈得符合這個原則。

說穿了,就是教你正確的思考方式。

難道其他方式不是正確思考嗎?或許有人這樣疑惑,

舉個例子,兩個人組合同一種機器人,假設這台機器人只有一種組裝方式,
結果一個人組出來,另外一個人組不出來,
你們覺得誰是正確的呢?
換個角度,今天程式作用在無生命的物體上(電腦),是否這個物體也只能明白它所能明白的東西呢?

這跟我們賺不賺錢、能不能中樂透的原理可是差很多,
然而再把機器人組出來的狀況下,就是一種正確的思考方式。

換句話說,程式的思考就像組機器人的過程,
所以大家應該有發現為什麼世界都在推崇寫程式吧?
寫程式其實不代表比較聰明,而是教你正確思考的方式.

回歸正題,所以,學習程式只是基礎的思考,
有了基礎的思考你才能做遊戲網站之類,
重要的在於你想用程式做什麼。

這就是為什麼要寫程式,你的目的雖然是想做遊戲想做什麼,可是,
在那之前,程式只是一個起源。
這一段是要告訴想踏入程式的人,如果你沒有想用程式做的事情,
其實很難走下去,所以建議先以"想用程式做什麼"為出發點。

懶人包:

為什麼學程式?
要先有想用程式完成的事情,例如遊戲、網頁、系統等,
有想用程式做的事情學程式才會容易。
而程式是建立在思考上,有了程式才能完成你想做的事情
程式學的是思考,而思考透過程式去實踐出目標。

怎麼開始寫程式?

有了目的之後,你也知道要先有基礎思考,下一步就是要怎麼開始學習程式,
新手最常問的問題不外乎就是,我要學什麼語言?我該上課嗎?我可以買書來看嗎?

就個人經驗,語言沒差、看書你很難看下去,上課要很認真。

那豈不是直接叫人放棄呢?
不是,我前面有先講到第一點有一個重點在

你想用程式做什麼?

這裡就直接延伸,首先你要先清楚你要寫什麼,
常見的就是網頁、遊戲、系統、大數據、爬蟲、app程式等等,
如果問我說哪種語言可以辦到,我會回答其實大部分語言都可以辦到這些,
差別在於哪個語言比較好做到。

如果你只是想做ui設計,那麼就從css、html下手,進階一點javascript,
如果你是一個前端網頁,那麼就從css、html然後專精javascript,
如果你要寫安卓系統,那就得從java下手,
如果你想寫遊戲,那可以從c#語言下手,

其實每種語言都有自己的特性,而這些語言在市場都有一定的價值,
有些程式人會建議新手去學javascript,個人認為,js雖入門容易,
但對於什麼都沒有的新手,其實很困難,或者說是易學難精。

有人推薦台灣最好找工作的php,則是太雜基礎不好穩定,
寫比較好懂得ruby或者萬用得python,則是工作有點難找,
所以我個人認為,最好可以從java或者c#這兩個語言入門。
當然,如果是想做網頁為目的,或者前端,就挑js或php入手也可以。

而我推薦兩個語言
是因為這兩個語言是所謂強型別語言,很多規定,但是可以減少新手的失誤率,
強制讓你一定要照"正確思考"的方向前進。
對於基礎其實有很大的幫助,
當然如果再拿java跟C#比,c#語言是比較好學習得,工作機會也不少,
或者有些人很有自信,直接挑戰typescript(javascript),這是一個很強的語言。

至於怎麼開始,雖然我是資策會畢業,可是我不認為上課是正確解答,
因為程式基礎很簡單,但卻是很雜不容易入門,
其實上課或者是看課程都可以,
可是困難的地方其實是,你很難知道步驟,該從哪裡學起,
當你翻開一本跟字典一樣厚的java,你從一開始看到就昏了,根本看不下去。

所以我簡述學程式大概要先怎麼了解。

1.先了解基本型態:你要知道變數、字串跟數字的加減乘除,布林值是什麼?
2.了解陣列與迴圈和判斷式:這些東西可以讓你真正的去寫程式,
3.了解架構與規範:這是我認為最重要的,是你寫程式的"方式"
4.達到目的性:最後就由這幾個東西達到你的目的。

型態與陣列迴圈就是你程式的怎麼寫,
架構就是讓你能夠用型態+陣列+迴圈和判斷式這些東西去產生完整的程式邏輯,
在映射到畫面上,
其中架構與規範是每個語言最大的差異,

我用程式做舉例

語言 javaScript java
變數(型別表示) var int String boolean
判斷式 if(a === b) if(a.equals(b))
陣列 var array = []; String[] array ;
迴圈 for(var i = 0; i<=5 ; i++) for(int i; i<=5; i++)
類別 var Main = function(){} public Main{}
方法 Main.prototype.sayHello = function(){} public void sayHello(){}
基本輸出方法 alert("hello world"); system.out.print("hello world");


仔細看可以發現,這兩者其實都有型別陣列 迴圈類別方法這些東西,
差別就是使用的規範,
所以同樣的,其他程式語言也是如此,這也對應為什麼我說語言不是這麼重要。

但是真正差異與困難的就是規範,這也會是學習的一個重點,
常見的像是物件導向、MVC架構之類。

當然其實一開始就是要讓機器(電腦)去閱讀你的東西,
所以會不斷的輸出東西,
這個階段會很無趣,你根本不知道這些東西跟你的目標有什麼關係,
所以國外會推崇javascript是因為,這個語言可以直接跟你的"畫面溝通",
這樣可以讓你很清楚畫面與程式的關係,藉此產生出你要的目標作品。

透過javascript去寫程式,直接得控制html產生畫面,
所以網頁就是這樣來的,通常會配合css跟html,
一般建議入門從網頁,因為網頁是最容易也是最廣泛讓你抓到畫面得程式方式,
至於html跟css個人並不認為那是程式,因為寫現在程式幾乎一定會接觸到的。

在學語言前你可以分析兩個方向

第一個是你想做什麼?什麼語言適合你要到的目標?
第二個是你的語言市場性與是否好學、參考資料多不多?

然後,選好語言,入門則推薦

1.C#語言 : 概念清楚,但是又很好寫,跟微軟綁定所以很好操作
2.javascript : 萬用語言,要入門很容易,精通稍微難
3.java : 市場性強,架構物件導向清晰,缺點是比較不好學習

最後怎麼寫程式?

看線上課程或者實例,一步一步了解並且把那樣東西做出來,
不用挑太難的,從最簡單的開始,
像我們第一個程式通常都是99乘法表然後在計算機,
最後生出一個登入畫面,基本上你的基本功就差不多了。

這三個語言因為很熱門,網路上資源非常的多,
可以選擇去上課,或者免費的線上課程其實都足夠基礎,
但是不建議一開始直接看書不實做,比較難掌握到重點,
不可否認的一點是,有蠻多人慧根很好,看書就會,這也是一種方法。

我關鍵則是多練習,像我不太會讀書理解力又差,個人就是靠不斷練習,
當我先做出九九乘法表,在做出計算機的時候,就會慢慢熟悉,
然後生出一個簡單的登入系統,就會很有感受。

懶人包:

先決定要學的語言,以想做的事情為基準,再決定語言要什麼,
如果沒特別,就以c#、java或javascript為入門,
再來可以選擇看線上課程,然後邊實做邊練習,一步一步的扎實訓練,
重點是要好好實作與練習,弄懂每一步,多寫最重要。

哪種程式語言好?

終於做好決定選了程式之後,進入學習階段時,過程中就會有這個疑惑,
就是會看到網路上再討論哪個語言好。

在最早網頁購物車開始火紅時,php當令,成為市場網頁主流,
前陣子有一個去微軟化運動,所以當時的C#這個語言被戰得很慘,
後來,python與ruby崛起,現在則是一個go語言再開始蓄勢待發。

對於初學者,開始錯亂,學哪個語言才是有價值的呢?

如果仔細去探討我的第一點與第二點,到了這邊其實會有一點答案,
但是,語言不會被淘汰嗎?
這是一件很有趣的事情,
就拿我的java來說,java至今已經有20年,幾乎都在世界程式語言佔有一席之地,
但是問題是這個語言很老,老舊的語言還是有缺點,

而c#這個語言的特性,則是跟微軟綁定,拿到mac上就會陣亡(這裡不探討網路),
至於ruby語言個人倒是沒啥研究,我自己的作品集則是用python架上來的,因為最快生成,

但是這些語言的特色在於,他們活得很久,而且都是有一定的脈絡。
基本上是不太容易淘汰,但是未來其實不好說。
可是就算某種語言淘汰,只要掌握重點,很快就能在學習另外一種,這也是程式的特色。

程式沒有好不好,只有優點與缺點,
我有些同事選擇java的原因,是因為他分析出java錢最多,
但實際上,撰寫php照樣能夠拿到非常高的薪水。

所以我想表達的重點其實是,
關鍵在於精通一個語言而不是什麼語言,因為熟悉一種語言,要跨別的語言就會很容易。

我曾與一些很強的同事討論,有些人認為語言只是工具,幫助你完成想做的事情而已,
確實,大部分,包含fb、twitter、amazon等網站,其實都只是一開始雛形,後來才這麼強大,
但是同時也有同事認為,真正強的工程師,就是專精語言為主,
所以如果去google面試,就可以知道精通一種語言多重要。

可是回到這邊,就得在探討目的性,
如果只是想賺錢,那就是找賺錢的語言,
如果有目的性,把語言當作工具,那可以以目的為方向學習,
如果想成為神話般的工程師,那就是一種自我實踐,那就可以朝一個語言專精去做。

到這邊,應該就可以很清楚語言怎麼去選,
至於有種語言進化到可以從頭打到尾,暫時不探討,那又是另外一個故事了。


懶人包:

哪種語言好在於選擇的目的,目的不同,對於程式的選擇也有差異,
語言不再於哪個好或不好,如果要賺錢就盡量找熱門語言,
但最重要的還是對於語言的深入了解程度。
然後再往想要的市場方向前進會比較好。

軟體工程師思考與平常人的思考

我相信大部分的人覺得軟體人很難溝通,
但同時很多軟體工程師很討厭跟一般人溝通,於是常常有對戰的感覺,
一邊覺得工程師很自以為,工程師則覺得對方沒腦袋。
但是程式是學習思考與正確思考,卻並不一定會有更多財富。

就是要解析這個部分。
當我在做設計的時候,總覺得程式人難溝通,走到軟體的時候,我才明白原因是什麼。
先來看一個例子

有A籃子跟B籃子,A籃有50個紅球,B藍有30顆白球,請問要怎麼讓A跟B的球交換呢?

簡單啊,把A籃跟B籃交換就好了啊.
那我就問,如果是程式的話要怎麼寫?

於是就出現這樣的結果
A=B;
B=A;

乍看之下沒啥問題,因為把B放到A了。
問題是B呢?

所以正確的方式是
要先拿出C藍,把A或者B的球放進C,再把C放到另外一個,也就是

C=A;
A=B;
B=C;

很多人都說自己邏輯很好,但是當轉換成文字與數字時,就會出現這種狀況,
而這只是一個最基本的舉例方式,

原因很簡單,多數人思考都強調結果,管它過程是什麼,反正過程不重要,所以就變這樣。
但是沒辦法,因為反正看結果,照樣能夠賺一堆錢,那我幹嘛思考呢?
這會在後續解釋,多數程式高手都是在做所謂自我實現而不是賺一堆錢。

但這就呼應了為什麼程式會教人思考,因為你一定要正確的寫法才會運作。

在舉個例子,現在生活方便,有許多好用的軟體,
拿adobe的flash來說,在這幾年,flash淘汰改名為animate,
於是我放映了兩部一模一樣的動畫,一個是flash做的,一個是animate,
結果大部分的人都覺得這是一樣的東西,
確實,只看表面看起來是一樣的。

所以,這時我會問,那他幹嘛把flash改版變成animate?
答案是flash無法在手機裝置上運行,但是animate可以。
那為什麼呢?
因為flash語言是actionscript,而animate開始支援javascript了.
但這時又有人開始反駁,阿反正我都能做出一樣的東西,是有差嗎?

這邊就要講回為什麼程式基礎重要,而不是運用工具重要。
就以flash來說,
有一個題目是做一個泡泡往上飄,如果你只懂得操作軟體,你可以用內建去拉補間動畫,
配合淡入淡出就會有泡泡上升的效果。
可是,請問泡泡每次出現都會一樣嗎?
如果不碰到程式,你能做到隨機產生泡泡嗎?
但如果你懂得程式,只要加入亂數,結果就可以變成隨機的產生泡泡,畫面就更自然。

會有這樣的狀況,也是因為太多人幫我們完成工具,
確實,站在商機的立場,我們不一定要會創造這些軟體,只要會用就好,
但是這樣,就沒辦法創造出更新的東西,因為只能運用別人的東西,而少了思考去改善的機會。

其實我再成為工程師的日子,
也是不斷的被資深工程師洗臉來的,原因是一開始我太過於注重自己的思考,忘記步驟這件事情。

這邊對於有工程底的人其實很容易,但對於沒接觸工程領域的人在寫程式的時候,
因為思考問題,所以很容易開始卡關,
我記得老師開始講物件導向,把程式物件化,類別方法繼承,台下幾乎死了一遍,卻不知道這只是基礎而已。

但是,我認為大部分的人其實能學好程式,
前提是你要先拋棄主觀的思考方式,去學習機器的思考模式,
這不表示程式是死的,而是你要用死的方式讓它活起來。

所以講這麼多,怎麼提升程式的思考方式,
在我的小經驗來說,就是步驟,
一步一步來,扎實的踏穩每一步,而這也是為什麼現階段我雖然程式不是很強,
但我還是能開發一些簡單的lib。

有一個重點就是,其實很多初學程式的人,或者說他們根本不打算弄懂,
最喜歡複製貼上看不懂的程式碼,
當然可以認為理所當然,反正會動就好了,
所以造就一大堆技術債出現,
假使今天有人要維護,要增加一個需求到你貼的程式碼,就會直接炸裂,
畢竟看不懂,如果我要在上面增加新功能,誰知道從哪加呢?
這種狀況在一般網頁設計公司最常見,因為只強調結果論,
那這個結果,最後可能造成整個網站重弄。

那麼,關於與工程師溝通,
因為現在公司幾乎都有工程師,很多人覺得工程師難溝通(我只有指軟體或者寫程式的工程人員),
必須要說,蠻多人覺得工程師很蠢,
但是真正厲害的工程師通常都會把客戶當猴子,對工程師來說很多簡單的東西客戶都搞不懂,
要跟工程師溝通很簡單,就是把你要講的重點步驟化,
因為真正軟工的思考很細膩,他考量的點可能比你多非常多。

可是,這樣為什麼很多人覺得工程師會被騙,
倒也不是,因為許多工程人員的思考比較單純,都是一條線的,往往少了跳的機會,
因為工程講的是正確思考,但是這個社會不會跟你講思考阿..

懶人包:

程式思考跟一般人思考差別在於步驟的細分程度,
程式是一種一步一步,步驟式的思考,
如果不搞定好思考,你就會搞不好程式,間接就無法實作出想要的東西,
所以在程式卡關時,不妨停下來先思考是不是自己哪裡想錯。

程式的目標

在開始踏入寫程式的時候,其實就只是覺得寫程式蠻有趣的而已,
但是其實後來越寫才明白,這一條路不是只有寫程式,還有非常多細膩的東西要學習。

當初,問我寫程式的人,大部分都是看在「錢景」,那前景好嗎?
程式的目標到底是什麼?總要有個目的性吧?
這不是從我身上發生的,而是從我認識一些程式的高人學習到的。

先從基本狀況來說,

最基本的你已經會一種程式語言,但是這樣就想踏入職場,其實機會不大,
正常來說要先懂資料庫,先以單一面拆出來的目標討論。

在你會程式之後,通常會有兩種狀況
一種是實現需求,譬如寫遊戲、寫網頁、寫軟體
一種是自我實現,譬如演算法、開發框架、爬蟲
這樣舉例很多人會不明白差在哪,我用兩個例子會比較清楚一點。

第一個是我前公司的四大資工同事,他教我蠻多東西的,
可惜他在中部起薪也是27(別懷疑),一年後到百大企業起薪高些,約4萬,
現在則是等簽證被日本找過去。

在第一間公司他是寫java的,到了百大之後撰寫c#,而到了日本則是寫php,
有發現嗎?

他使用的語言三種都不同,這個概念就是把語言當工具,去實踐社會上要做的事情,
這樣通常不會以專注寫程式為主,可是,像我前面提到很多像比爾蓋茲、馬克祖柏這類的人,都是這類的人。

而這就是以工具為主,不是限制在某種語言發揮上,
換句話說,以程式為核心去發展出不懂程式也能使用的軟體(網站等),基本上都是朝這個方向。

另外一個,也是我前公司的同事,他很厲害,高中畢業而已,自學程式之後到公司去寫java,
已有多年經驗,薪資都落在35左右,這一間也是27起手。
那他的方向比較不同,他是以專研某樣技術為主,譬如說怎麼優化系統,怎麼讓cdoe完整性更高,當然我前面提到另外一位同事也是有做到,只是不是這麼專攻。

這類的人就是我們常說高端的工程師,他們通常喜歡用linux去操作系統,
對他來說,就不會一直轉換程式語言,他一直鑽研java,譬如java8的浪打語法,等等對於工程領域本身有幫助的東西。

通常,學程式都是以第一種入門,後來慢慢可能會兩者混合,
如果要說更好的舉例,
用程式來說,如果接觸程式有一段時間後就會遇到framework、library、api這種類名詞,
這種framework之類的,是建立在原生程式之上,
像是java的spring、python的django、javascript的react等,

差別在哪?

我想了很久,一直沒有很好的舉例方式
就用一台車來說,原生語言像是組合汽車組件的材料,你可以組合用材料組出引擎、輪子、馬達等,
所以你會有材料—>組件—>車,
用引擎來說就好,如果我每個引擎都要自己從頭做不是要很久嗎?
於是框架就是,類似有人幫你設定好引勤,你只要告訴他你要哪種引擎,就可以直接生給你。
也就是,一個方向是生產出車子為主,另外一個方向是研究車子的零件提升為主。

有人會說,如果這樣我只要會呼叫組件就好了,
但問題在於,組件是別人幫你設定好,你要照對方的"設定",所以這顆引擎都是別人的邏輯,
你可以去調整它提供給你的設定,但這顆引擎就是基於原本材料出來的。

換句話說,程式的兩個目標就像是,
一種是能夠呼叫與設定"組件",最後目的是生出車子。
另外一種是負責生產"組件",可以研究怎麼做出更強的引擎、更好的輪胎,但是不負責生出車子,車子最後變怎樣與我無關,但我希望我的引擎可以很強。

雖然用車子舉例不是百分之百吻合,但是意義大致上相同。

所以回歸目標來,其實在我一路上遇到的,
絕大多數能在工程領域有一番作為的都是像是研究組件的人,
原因是要生產出組件你的深度要非常足夠。

可惜現實來說,我必須要講,要賺錢的還是以生產出車子的人比較賺,對吧?
因為客戶是要成品,誰要聽你的引擎研究有多厲害呢?
我只要能找到一顆別人做好很強的引擎然後裝上去就嚇嚇叫了阿!

但不可否認,在語言上,
假使你想要生產出更好的軟體,對於語言的深度還是要有一定的涉略。

一般在語言上會講說,底層程式,
而我也要講,實務上很少用原生語言做開發,因為太底層,
這個底層程式就像車子的材料,他可以開發各種組件,
如果你不懂材料,你就很難挑選好的組件,
基於程式,如果你不懂底層,在學習框架上就會很困難。

進入程式領域,都會慢慢涉略到這些東西,
但是我個人建議可以先找好方向,如果想要專注目的性,那在基本語言後,
就可以專注在框架的學習,呼應前面的系統,
如果對於程式很瘋狂的,就專注在底層的開發。

懶人包:

程式通常有兩個方向,一種是目的性的,另外一種則是深入開發,
目的性的範圍很廣,只要是軟體都算是有目的性,
而深入開發是偏向功能面,主要是協助開發的工具為主軸,
但通常兩者可能會共存,只是說可以看看要以哪個方向為主,
如果是想賺錢的,想想怎麼做出有商機的程式比較重要。

未來性與發展

這一部分是我把上個部分拆開講的,也是我整篇這麼長最想表達的重點。

第一個重點是,學習語言不是只是為了當軟體工程師,
其實在這爆炸性的時代,除非你不用電腦,否則你就是在跟程式做溝通。

絕大多數來接觸程式的人多是想可以多賺些錢。
但如果我開頭就跟你說,我在中部,領27k的程式設計師還不少,你信嗎?

必須承認一件事情,在台灣對於各行各業都不太友善,程式也沒有例外,
就拿我四大的同事,他實力強,日本直接找他過去,問題是..在台灣他在跟我同間公司的時候也是27k。

但我不是要潑冷水,
而是我要介紹,學了程式你會有那些未來可能?

基本上你學了基礎程式,是無法變成工程師的,因為真正的細節很多,
不然很容易成為領低薪的工程師,
我個人抱持實驗性的精神,所以我選第一間當跳板,並且在第二間直接跳出去,
確實,我的同事都是軟體工程,基本上可以說全部都是資訊系的為主,
但這過程其實也不是很容易,碰壁不少。

可是,有人想過如果把程式跟你原先的專長結合呢?

之前資策會有學長,財經專長,後來去寫金流系統,因為有財經概念又有程式專長,嶄露頭角,
另外一位學姊是數學系,很會計算公式,後來直接寫遊戲去算圓周率,也是嚇嚇叫。

那如果程式不強怎麼辦?
其實有基礎就可以了。
有沒有人聽過會程式的企劃呢?
不少企劃都要跟工程人員溝通,是否有人想過如果你懂程式概念,會是什麼結果呢?

我的意思是,程式不過就是很多東西的底層,只要你碰到電腦,基本上就一定會有工程邏輯,
所以找到方向很重要。

談到薪水,薪水不過就是這樣而已嗎?

我先以一般軟體工程師來講就好,指的就是純粹像我開發系統的,
一般軟體工程師的工作幾乎是"負責公司的軟體",既然是這樣,因為時間久了你熟悉度會提高,
就算再沒天分的人也會慢慢熟悉這個架構,
舉個常見的狀況,通常公司會選擇一種框架來做開發,也就是實務上很少用原生語言開發,效率問題,
但一開始因為你不熟悉這個框架,所以薪水很慘很正常,
隨著時間過去,你會發現到在程式上的開發邏輯其實差沒多少,所以加速了開發時間,
再來一點是,如果有接觸工程的人會發現,每間公司的"框架"其實差沒多少,
而且開發的難易度,也差沒多少,換句話說,不用擔心技術不會進步,
因為這一行是靠經驗增加開發速度的。

當然,我講的是一般的工程人員,
工程人員到達百萬千萬是有可能的,那就是在開發產品上,
譬如最近較紅的旅行青蛙,多數資深工程師基本上都大概可以猜到怎麼開發的,
可是卻沒啥人想過,原因就是在我第一二點,
換句話說,一個資深工程師在工程領域的技術一定夠好,可是想法卻不一定好,
拿我自己來說,我一直有在增加自己的技術,可是在想法上卻沒特別去琢磨,這就是差別。

如果以北部的狀況,目前我的資料是,
你在程式設計寫了五年,大概會有百萬左右的程度,或者你可能會升上主管,
這是以軟體工程為例,而且是最鬼島的台灣,國外我相信薪資應該更為可觀。

我還是要解釋,地區還是有差,像我中部,要到那個薪水,是很困難的。

不過這個狀況是建立在你在工程領域待了五年,
因為其實很多人在第二年第三年就失去熱忱,或者麻木,你熬不過兩三年,
基本上薪資也就不會往上,
一直以來都有人想學工程,只是我個人的經驗都是強調,到底你要學程式做什麼呢?
如果沒動機,其實你很難在工程待下去。

我前面有提到除了為了薪資,另外一種是自我實踐,
就我接觸的工程領域,很多都是對工程領域有貢獻的人,
這樣人就像是永遠在尋找不同的引擎,他不在乎車子是什麼。
例如一位大師叫良葛格的,可以說是java台灣的宗師,技術應該台灣首屈一指的,
但他可沒有超高的財富,這就是自我實現,他是真正熱愛工程的人。

所以在工程中,如果以財富去衡量一個人,那才是最無知的,

在進入工程的時候,可以考慮,想要靠工程賺錢,就要想想賺錢的程式,
程式很多變,而我前面說的都只是基礎而已。

再轉回來,前面有提到,將程式與自己的專長結合,才是我覺得最重要的目的,
把你的專業加上程式,你可以有更多想法與想做的事情。

但說這麼多,如果是純工程呢?
前面有提到五年為一個標準,
先說我的經驗,扣除我的薪資來看,在台北,有同事約兩年經驗起薪是6萬左右,
在台中是四萬左右,其他地區我比較不清楚,
可是我先說,在台灣這個薪資,是要有條件的。

1.熟悉一種程式語言
2.熟悉版本控制
3.會使用資料庫
4.對於環境部屬有一定的程度

這些東西是在你走程式"撐下去"的前提下,
所以應該發現很多人途中就炸裂,因為要學很多東西。

這邊我並不會神話寫程式、說這是一條光明的道路,
而是想告訴大家的重點是,寫程式可以讓你在未來的方向更多變化,
像我舉例四大的同事就是個好例子,他並沒有讓自己局限在寫什麼程式阿!

至於會不會加班,我坦白講,軟體工程師加班其實在專案多的狀況下,會是一種常態,
但是不忙的時候其實不太需要加班。

總之,程式的未來其實很多方向,不是只有侷限在工程師,
重要的還是在於想法。

懶人包:

程式的未來不是侷限在於工程,而是可以跨領域的,
就像前面提到的,這只是一種思考方式,
如果想要走工程,就要好好地鑽研並且往下,
就算只是小職員時間久了薪資還是會不差的,
但誠心還是建議去想個能夠賺錢的程式鑽研才是最好的路。

沒有經驗怎麼投入職場

這也是我自己的一個很深的體悟,
其實在一開始上完課的時候,幾乎可以說是被叮得滿頭包,
說句現實一點,人家看你不是資工底,不是四大碩,基本上就是直接淘汰你,你再優秀也沒用。

我的條件是設計系+私立學店+沒有門路只能靠人力銀行,
這應該是最爛的條件了吧?

雖然有些人覺得我現在還ok,但是其實在面試我也是不斷被淘汰的。

在工程師領域有一個很怪的現象,非常喜歡考試,
這對於資工底的人來說或許容易,可是像我這種東湊西湊出來的,基本上考題幾乎都會直接被秒殺居多。

再加上多數人只以學歷看你,求得一份工作其實不太容易,
因此其實一開始我也是非常失落的,
畢竟在你經歷一大段努力後,發現好像沒什麼用。

雖然其實還是有一些公司會願意給機會,可是其實薪資一開始都很低。
所以我個人認為如果第一優先,還是要能把你的第一專長與程式結合,這樣比較容易投入職場。
至少我看到雙專長的,第一份工作就很驚人了阿..

沒有的,也不用灰心,我個人在實驗找工作的時候就捨棄了我的專長設計,
這個翻轉的關鍵在於---作品

也就是從一開始,我所提及要有目標,就是要讓你能夠在最後一定要生出作品來,
換句話說,扣除那些考試、學歷企業,只要掌握作品,其實還是有機會,

第二個則是熱忱,這個熱忱是對於你想做的事情有熱忱,這點很重要。

我前面有提到的另外一位自學的同事,他只有高中畢業,現在依然可以嶄露頭角,
他有這兩個特質,他的作品不差,而且早上上班晚上上課,假日也在上程式,
這就是熱忱最可怕的表現方式了吧?

看到這裡,可能有人說,這樣是不是製造更多奴工,
其實如果看到我前面的敘述,就明白,這樣是塑造更多的創造,
因為作品跟熱忱是每一間公司帶不走的,
我前面有提到想法這件事情,假使你一直沒想法,但時間久了你技術深了,別人也無法取代你,
就算一間公司倒了,只要這世界電腦還在,你就有工作,
更好的是如果有想法,有更多好的機會可以選擇。

至少對我來說,一直保持這兩者,就會有機會。
作品也是展現一個人熱忱的表現,不過我還是不建議複製貼上,這樣很多東西不明白。

當然如果你很擅長考試,那考試也是不錯的選擇,
至於百大企業,我覺得還是得看看有沒有那個命,
這是很現實的一面,
我個人是學店出生,我也很直白承認我的學校不好,條件不好,
所以要翻轉就要靠努力生出作品。
雖然我後來收到幾間百大的企業,也很心動,但是我認為我還不夠格,
目前就是在深入探討我自己的技術與思考。

總結這個部分,
簡單說就是,能夠有作品然後說服別人,就有機會往上,
至於更高的階層,我還沒到,只能大略說就是更精進於自己的技術與熟悉公司的架構。

那麼通常你剛進來的第一份工作薪資基本上很低都是很正常的,
我大多數認識的同事在台中第一份大約都是27,經過兩年到三年到第二份都有4萬上下,
所以其實不要太在意第一份工作的薪資,
這一行有個不成文的規定,很多時候都是靠跳槽來提升薪資,
如同我前面說的時間久了薪資就上去了,
唯一需要考慮的是,這間公司能不能讓你有技術上的成長,
這一點才是最重要的。

我想,其實很多人條件一開始都比我好很多...
你們的機會遠大於我,所以別放棄。

懶人包:

在一開始進入職場因為不是本科,相對地比較辛苦機會很少很合理,
所以就是要好好地提升自己,一開始有機會就先進去,然後精進自己的技術,
把作品準備好,拿出自己的熱忱,相信其實收穫與成果還是不錯的。

總結

這一篇也是很長,我花了好幾天的晚上趁寫lib的空檔寫出來的,
當然也不確定有沒有人會看,我是覺得有幫助到別人就可以了,
畢竟這也是我個人真實的歷程。

我的動機有幾個,

第一個重要的點是,我發現有很多人其實想踏入程式領域,又不知道該怎麼下手,
所以我花些時間分享我個人的經驗。

其次是,台灣各論壇的職場相關版都有個現象,
那些賺數百與數千萬的人常常會去教訓別人,
薪資一直上不去的人則是一直自我放棄,
可是我常常想,如果這些賺數百萬與千萬的人真正的願意分享且教導別人,
而這些放棄的人只要有一點心,我相信整個台灣會不一樣。

台灣有個狀況,就是很多上層的很容易不懂裝懂,
覺得自己賺很多錢,就什麼都會
尤其是台灣某些老闆,他們會認為有錢再請一個員工就好,
可是看完上面的專業有沒有發現,如果薪資不夠吸引人,誰會想學這樣的專業?因為要會的真的不少,付出的代價也不少。

其實你打開新聞打開農場,
滿是成功者在講自己多優秀,多辛苦,
但實際他們做法到底是什麼呢?做了什麼讓他們成功呢?
他們其實根本沒講,不是嗎?

當然每個人有言論自由,可是如果不分享經驗與教學,
那怎麼會進步呢?

然後,就造成了貧富差距,
那些成功人士會喜歡說,成功的人找方法,失敗找藉口,
可是我都會跟他們說一句話

我願意學,你有給過我機會嗎?
我不斷的向您請教,卻只是得到一些批評卻依然沒方向。
如果一個成就者他教不好別人而去怪罪那個人沒天份,豈不是代表自己也沒多優秀了嗎?

對我來說,
真正成功的人不是自己說自己多成功,而是他能帶領一個團隊或者一些人一起成功,

這一篇,其實對於各大版的數千萬高手們,我相信都覺得沒啥用,
甚至嘲笑著我的實力水準等等,
但是,如果一個無名小卒都願意分享自己,
那是不是該收起指責而是真正教導有心的人呢?

我其實並不是想走真正的軟體工程,但是我也不曉得為什麼我就變成一個軟體工程師..
嚴格來說我還是想要把工程跟美術做結合,只是目前還沒有方向,
就慢慢往下鑽研了。

或許有人質疑,那為什麼我還沒賺大錢呢?
一,我的技術雖然往前,但又沒有到足以規畫整個系統的程度,
二,雖然我做的出東西,但是又沒有一個很好的想法去實踐。
最後,工程領域能夠闖出一片天的,都是有自己的一個團隊,可惜我沒有。

我同時也會沈思自己的水準到哪,該在往哪努力,
至少這整篇文章,都是我個人自己摸索來的。

所以我一方面也是希望在未來找到有自己的team可以去開發些什麼,
現在的我只能獨立去開發一些小小的lib。

我說過,我並不是一個有很多機會的人,所以整篇文章絕對都是從無到有的心路
有人說機會要自己去嘗試,可是我自己是投履歷的人,我很清楚別人選我是什麼感覺。

我沒有親戚、沒有共同的程式夥伴,學歷又爛也沒資質,不是富二代、沒有特別出色的地方,
最重要的是,跟大多數人一樣投人力銀行

今天的我還是一個小職員,如果要說我是什麼,就像是一隻蝸牛,
慢慢的爬,就算沒人看的到我我也是慢慢爬,因為,我只能這麼做。

------------------------------------------補充-----------------------------------------------

謝謝大家的認同,標題的部分我稍作修改,
爭議的地方,可能有些人覺得這不是給想進入程式的準備,
但我文章有切分是,希望在進入程式前先"思考好自己為什麼要走程式"
比起在外面補習班直接就跟你講程式多棒多好是不同的,
我並非想澆熄別人的熱忱,而是在台灣要真的踏上一個專業都要付出,程式也不例外。

而我也提到,與其靠"寫程式當熱忱",倒不如想想用程式做什麼才是最重要的,


作品參考:

作品的部分,因為我其實蠻多git的東西,可是都是個人筆記加上往深的地方研究,
就比較不方便貼,連結是我一小部分的個人網站,後來就沒時間動他所以有些敘述錯誤

我當時是forcus在d3跟createjs這種畫面的東西,所以都這樣呈現,
其實可以發現,也沒有到很難的表現,就是有想法就做,

重要的還是在熱忱。





787
-
LV. 49
GP 6k
2 樓 NK1124 TW00181092
32 -
小弟來哈啦了。

簡單來說,目前比較成套的三大程式照難易度來排序的話為C、JAVA、VB。為啥麼這樣說,是因為牽涉底層的東西能設定到多深的緣故。就像LINUX安全性較視窗強,那是因為它能設定到很細部,但反過來說一但被對方破解,它也很容易奪走你的權限哈哈~

C的經典惡夢在指標。啥是指標?指向記憶體位址。
JAVA就沒有,因為JAVA幫你配置所有記憶體,所以JAVA就沒有C這麼底層。
VB有些元件拉一拉就有,例如按鈕啦視窗一類的,JAVA還得自己寫碼請機器畫出來,還是泛用型醜醜的,所以VB就更表層了。當然,用C寫出類似的東西工程會比JAVA還複雜就是。

VB再上去就是像Dreamweaver這類更簡便的了。你只消點一堆選單,寫一點SQL語法或改一下電腦幫你自動code好的程式碼,一個互動式網頁就出來啦XD  缺點是DW只能寫網頁哈哈~越表層的程式越簡單,能設定的東西也越少。

所以像寫給機器看的韌體(可看作晶片或零組件的驅動...),基本上都是C在寫的。一般寫給人看的,不管前後端,用JAVA或C#差不多,不要自找罪受XD...



不管哪種程式,四大基礎;變數、運算、條件式、迴圈。這些概念都差不多,只是關鍵字不同而已,學會這些叫作基礎,會這些就能寫出99乘法表了。

再以上我只學過JAVA。JAVA為何被稱為物件導向,就是因為物件才是重點。所以JAVA的惡夢在物件的部分XD  啥麼類別、物件、繼承、泛型....

再往上,大概要學到事件的監聽(讀鍵盤滑鼠、讀檔等等...有外掛的fu了吧XD...)(要學會寫外掛,應該還要會C的指標,因為要進去讀記憶體哈哈~)。四大基礎你是去定義變數,物件你則是要加上定義物件之類的,例如我呼叫了一個鈕,我要去監聽你輸入了啥麼,啥條件下這個紐會被激活,激活後要做啥麼。然後用寫圖形的碼寫出計算機的外型,配合上述的按鈕程式碼,完成一台"計算機"。

最終寫登入系統應該是要配合資料庫的讀寫。不過一般牽扯到資料庫速度會慢一些,還有很多更快的工具可以玩,像雜湊表啦......所以如果是要針對既有資料進行監督式機器學習(有答案可對的),丟雜湊比丟資料庫快。(嗯~我相信有人開始問號了,雜湊表是啥小XD)



我會說,就表示我當然會"改"。剪下貼上能動就交這太懶了啦XD...會改表示剪回來後還要改成自己要的,前提就是"你看得懂這串程式在跑啥小,啥資料在哪行丟去了哪裡,並變成了啥麼樣的結果..."。但要我"無中生有",不是不行,可能要很久很久......

理由是,要無中生有,你基本上要精通該程式至少一本書。啥算精通?今天我跟你說要做一個怎樣的功能的程式,你必須馬上告訴我至少有幾種方式或工具可以寫出來並任我挑選,這沒整本背進腦袋裡哪做得到www

小弟程式再魯畢業論文也是跑實驗的,還不是用既有套件。那表示我得自己紮紮實實寫出一套運算系統出來。而我常常卡在無中生有,多謝同學與教授相助,他們常提出一些我大學和研究所程式課根本就沒摸過的東西(汗)。像雜湊表就是,大大加快了我系統的運算速度。但又不是他們幫我寫出來的,因為他們只能寫出他們從我這"聽得懂"的部分,剩下的細部我得"自己修飾"。這種等級的碼小弟還農得出來,加上我又當過助教,所以我知道這程度丟去國立中後段或私立前段,大概在班上也剛剛好介於中間而已,所以我自稱"程式苦手",不是不會寫,而是我看過好多強者XD(教授超猛,有辦法編空氣碼,編完能跑沒半個錯誤,但有時會跑出不是我們要的東西。有錯的bug還好de,一點錯誤訊息都沒的才難抓XDD)



所以有人說自學?若在以前會三大程式基礎就有工作的年代,我會支持這說法。
但現在不是,樓主還說了一堆東西,那些是針對特定領域的延伸,多出來的一些配套語言。

如果你今天連工作都沒有,你根本就不知道這技能樹該往哪點去,又不可能全賭XD  有工作?那當然往工作現在與未來所需的方向狂點啊0.0+

所以樓主大怎說的?
vvvvvvvvvvvvvvvvvvvv
通常,學程式都是以第一種入門,後來慢慢可能會兩者混合,
如果要說更好的舉例,
用程式來說,如果接觸程式有一段時間後就會遇到framework、library、api這種類名詞,
這種framework之類的,是建立在原生程式之上,
像是java的spring、python的django、javascript的react等
^^^^^^^^^^^^^^^^^^^^^^^^^^

就算是單一程式,扣掉4頂優等生,又有幾個螞蟻書整本全跑完的?就算跑完第一次你還會記得幾成XD?說白點,就工作越常寫的部分越熟而已,其他都還給教授了=3=......



所以若不是對程式有愛,或是所愛非得由程式完成,才沒有人想主動去碰程式咧~
資策會上完課,撈到一個工作,作個三五年能轉管理職就轉過去了,有幾個還想農一輩子的?更別說往C往更底層往硬體的方向前進......

反正寫得好高層與客戶也不一定會懂,薪水又低,東西能跑就交出去了。埋雷會害死後面的?不埋給他,你這個前面的當下就會先戰死啦XD......腦殘的需求,無腦的應允,天兵的期限,搞到一堆攻城屍屍橫遍野......對付無腦要求最好的方案就是,丟個無腦的成品給他,看得出來算他厲害,看不出來也只是剛剛好而已=w=+



聽說最近政府有意在台灣教育上引進寫程式?別人的小孩死不完XD......

32
-
LV. 39
GP 842
3 樓 過早的優化是罪惡之源 cga
3 -

作者標示-非商業性

本授權條款允許使用者重製、散布、傳輸以及修改著作,但不得為商業目的之使用。使用時必須按照著作人指定的方式表彰其姓名。

剛出客戶門口的可憐程式人路過!

好長,晚點再看。。。
3
-
LV. 22
GP 102
4 樓 群龍五首 s7682768
2 -
謝謝樓主分享自己的歷程,看了您的分享讓我加深從hello world來過的想法,小的資工系大學剛畢業,當完兵正陷入找不到工作,沒人要的困境…

其實個人也很清楚自己落的如此下場也是正常,程式學的稀巴爛,基礎程式的陣列、迴圈、指標、物件導向都不太懂,演算法和資料庫也只是入門等級,這就是在學校過著得過且過的二流學生的下場XD,畢業前還抱著可以混到畢業證書真高興的想法…

如今找起工作才驚覺到自己有夠爛,想Re:zero(從頭來過)也覺得恐慌,從頭來過不知道得花多久時間,也覺得自己沒找到工作很啃老…

只是這樣也不是辦法,目前想先從考國營開始努力,雖然只是繳費當觀眾,但起碼給自己小小的目標開始重新學習資工基礎,預計年後找工讀混薪水渡過這個拓荒期
2
-
LV. 38
GP 1k
5 樓 無名小子 sss749014
0 -
在下目前任職於IT業
不過最近有打算換工作想換寫程式類型
雖畢業資工系JAVA有學過一點但覺得學得零零落落
到現在連迴圈和條件式還不是很會用
連VB也不太會的說~"~

因為對遊戲開發系統和VR有興趣
所以其實自己最想學的是RUBY和C#
想學JAVA是因為將來換工作需求
RUBY因為有接觸RPG製作大師想學看看很多系統都是用RUBY去寫的
想學C#則是UNITY關係
VR據了解是用UNITY做出來的
UNITY使用的語言就是C#
不過到現在還沒堅持好一個目標
每個都學得歪七扭八.....

0
-
LV. 34
GP 3k
6 樓 詛咒遊戲 pink14275386
2 -

作者標示-非商業性

本授權條款允許使用者重製、散布、傳輸以及修改著作,但不得為商業目的之使用。使用時必須按照著作人指定的方式表彰其姓名。

抱歉離一離題
短期內我沒打算做一個程式員(因為我沒這個本事)
雖然目前工作跟IT相關 但只是跑來跑去安裝電腦而已 對電腦認識相當皮毛

有關你一開始說起對程式的需求
其實從前我想踏上Zum的道路
一個人寫一個遊戲 然後埋一堆彩蛋給人發掘

不過香港沒有遊戲設計學位念(抱歉我是香港人)
所以跑了去念媒體 然後盡量修一點跟遊戲相關的內容
結果理所當然地 半隻遊戲都沒寫到出來
因為在那邊學的程式根本不足以推動一個遊戲
我寫的flash game 連最基本的平台跳版都處理不好 也跑得很lag
那怕我可以畫vector繪圖 寫最基本的html和css
做到不錯的遊戲動畫 沒有最基本的程式根本不成一個遊戲
我試過自學 但完全沒有方向和目標
有教材的作業我都可以照著做出來 理解背後的原理(至少當時可以
但是我無辦法利用教材變出自己需要的東西
直接使用其他人的模組又擔心著作權問題
所以最後不了了之

由於技能組偏向2d動畫
所以在獨立遊戲公司當過遊戲動畫和影片剪接的工作
不過混不下去而轉行(香港只有廣告業 沒有遊戲業)

沉鬱了一段時間後
最近我在工餘時間玩live2D
只要建好模型 基本上想它做的大部份動作都能擺出來
但是 只有單純的素材動畫並不能滿足我
如果有辦法輸入一些指令 讓她按著我的要求擺動作 這樣的互動性和完成度好像會更高

Live2D有SDK可以輸出往unity去處理
但是要有效地呼叫這個SDK好像需要先學懂C#
這樣又回到一開始卡程式編寫這個難關

理論上我應該找一個學程式的人幫我處理
然後自己專注於圖像處理(例如是幫2d動畫上骨架做偽3d
但是獨立遊戲團隊最空易出問題就是程度式員
因為只要他擺爛 整隊人就會被他牽著鼻子走
我待過的團隊被工程師綁架過很多次 所以不太放心把程式外判給其他人
至少我需要有能力編寫程式 以免被程式員綁架專案

扯遠了 其實沒甚麼遊戲要開發
只是想做一個互動程式 讓用家呼叫live2d的動畫做點互動
帶著這樣的目標 我應該怎樣開始學呢
2
-
LV. 36
GP 4k
7 樓 月囚 dqmqdqmq
18 -
同樣中部工程師路過

在踏入這個行業前,我覺得每個工程師都爆幹超強
直到我真的踏入後才知道,幹他X的一堆渣

寫程式真的不難(這邊程式指的不是只美術那類)
難的是寫出易懂邏輯、好維護、好調整的程式
難的是能溝通,能討論,能弄清楚真正需求的態度

這種東西老實說我覺得不是學校能教的
公司也有南部知名大學本科系畢業的,但是寫出來的東西...呵呵
也有技術學院畢業的,但是能讓我或是女友覺得coding很強的

我不是本科系畢業的,但是也混的好好的
應該說更因為不是本科系畢業,所以才會疑惑本科系畢業的怎麼會寫出這種東西...
當然,還是有遇到很猛的本科系畢

所以我會覺得踏入程式界,重要的不是會寫多少語言
溝通的能力、邏輯的清晰度(也可以說成偷懶度)、思考反應速度
這三個能力會重要許多

而且這無關乎學了多少東西
因為程式語言的本質都是一樣的
寫出的程式是好是壞,會跟環境、架構有關
好的架構帶你上天堂

=====================

最後說一句:
學校上的都是屁,業界看的跟學校教的根本是不同時代的東西
(我和女友都是113出來的)


=====================

留言的部分我回在內文

coding style這種東西就不說了(學校根本沒在care,但是業界這叫基本)
冷熱資料的處理,也是切割架構的關鍵(這個學校也沒在care)
基本的程式架構(例如MVC)和資料庫的基本知識(這學校也沒在care)

視需求,邏輯很多時候不是那麼簡單是常見的
當一些基本的結構面都沒有先處理好
當心情不好、邏輯不簡單時
你看到別人的code就會想問後他祖宗十八代...

上面這些不懂也沒關係,都可以實做累積,還是可以很快跟上
當然這也會跟每個人的能力有關(我指的邏輯清晰度、反應速度)

但是如果是那種自以為寫出來的東西最屌、最強的
然後又不會分辨別人提供的建議是不是更適合這個情況或是未來發展時
整個專案很可能就...

我相信如果是無心或是新手,大家都會包容
但是如果根本就不強又在那邊靠北靠南的
這種人在團隊只會降低效率的存在...

天才只適合單刷
團隊不需要天才

18
-
LV. 1
GP 0
8 樓 凜格爾 KenHowardas
0 -
最近也開始在學JAVA,我是外語系畢業的,志願役士官,想看看能不能搭配外語專長,培養出一樣專業出來,一起加油吧。
0
-
LV. 21
GP 546
9 樓 TermSelf s34021501
2 -
(我大概是那種很?的類型)

對大眾來說這應該算得上是的很優的U文
但這篇看完之後,讓我有不少違和感

可能是我最近動畫看得有點多的關係

你是主角,不是配角
既然是主角就一定要把自己的故事吹出來

廢話可能太多(看得累)
很多重點該標記的沒有標記(記憶困難)
沒有搞笑成份(無趣)
缺乏主觀成份(無感)
不講大道理 (不玩吹牛)

如果這是一部動畫,滿分10分,我給6分
一開始題材對胃口,所以就被騙進來了
看了一半發現,恩,算是一部還能看的動畫,要理有理,要姿勢有姿勢,沒有出現嚴重BUG
但是結局如內容一樣很平淡,看完只讓我覺得...期待下一季會更好吧

我是說,雖然可以滿足觀眾興趣卻無法讓人燃起來也產生不出愛,十分可惜

(認真就輸了)
(如果人生可以重來的話,我想要砍掉重練)

玩家們如果有了自帶說明書的攻略本就會像主角有了主角光環讓他活過整個劇本的效果一樣
2
-
LV. 36
GP 3k
10 樓 楓葉綠茶 lou12331
13 -
Unity程序猿路過
我也是非工科(私立的多媒體系)出身的
那時候Unity還在3.5,學程式完全就是看著腳本猜它的用法
不過雖然跌跌撞撞的,倒是在大學時期學會了一些C#語法
結果退伍後去面試整個大暴死!
不說別的,物件導向是基本、設計模式起碼要講得出來,這些不會,你有再多作品都免談
因為你的code是死的,無法與人合作...
總之,我經歷了好一陣子的陣痛期才成功拿到第一份工作

然後下面是我個人經歷的總結:
幾乎所有的程序員都必須要面對資料庫串接,無論你是藉由哪種方式
以unity開發來說,最少最少懂得怎麼利用UnityWebRequest和WWW來收發後端給你的值
同時要懂得json、xml、scv格式的讀寫,後端吐回來的東西不外乎這三種
有需求進來,先逛Asset Store再說,大部分的通用需求在這裡都買得到
對公司而言,買插件,通常會比你自己寫更省錢
隨便舉個例子,上面提到json格式的處理
自己寫當然沒問題,但相比花五分鐘抓個免費的LitJson,你覺得哪個比較簡單
有限狀態機不是很好寫,EditorGUI雕個老半天還是那副鬼樣,65美金的Playmaker你值得擁有
封裝繼承多型是基本,很多時候一個功能會稍微改一下就用在N個專案裡
做一個BaseMethod再讓其他專案來繼承複寫它,後續要改才不會看著亂七八糟的code撞桌子
英文能力可以差點沒關係,但最起碼你得懂得用google翻譯
不過可以的話最好要可以和老外做基本對話啦...
最重要的是,你的程式底子可以很差,寫code速度可以比較慢,但是邏輯不能差!
邏輯才是程序員最最核心的價值!

最後,學什麼語言真的都不是重點,重點是你打算寫甚麼東西、用什麼工具開發
當你打算開發某個東西,需要用到某種開發工具,那就學它所使用的語言,僅此而已
13
-
LV. 10
GP 24
11 樓 WOOD lolgodwood
4 -
小弟分享一下個人學習歷程,目前從事不算正式的資訊部門。

我是生科背景,大學時有一位學長手把手教我Perl,我才正式進入程式的領域。

研究所也是生科相關,主要是分析,發現每次寫程式都寫了一大串,後來跑去買oreilly的書籍來看後,才從1000多行減少到100多行,也學了一些R,不過還是Perl用起來比較順手。

之後就畢業,替代役,找工作,跑去當司機員,因為工作的需要,想寫一個app出來用,我找了一下,只找到java或kotlin,但對我來說都太難了,跟Perl差好多,最後是用app inventor 2才完成了app,也因為有寫過app,後來公司內部招人,就調到資訊組去,雖然我覺得現在資訊組作的都不太資訊啊,很多都是routine的工作。

就我的學習經驗來說,有目的的學習程式才是我學習的動力,途中我也學過java php sql js python...的,但用以來最熟的還是Perl和app inventor 2,因為都是有目的的學習,學習方式不是重點,重點是你的目的有沒有強到推動你去學習,畢竟現在各種資源實在是太多了。

今年打算做一款遊戲,會用unity作,已經有了一些雛型出來了,使用fungus插件,也學了lua來輔助,可惜就是沒用到c#,看之後的發展會不會用到。

就目前來說,程式不是我的工作,不知道以後資訊組方向會不會變,但就目前程式是我的興趣,興趣和工作就會差很多了。
4
-
LV. 16
GP 157
12 樓 沉思者 yck0610
0 -
我想問一下
現在很多媒體都在報導AI,似乎不論是國家或個人是否能在下一波經濟轉型中翻身就是AI的對決。
大概25或30歲以下的人都強烈的建議去學程式語言,不然至少2020年後,將開始淘汰那些被科技創新(或AI)的人們
就您觀察,請問您真的覺得未來世界每個人都要會程式語言(不論哪一種)嗎?
我知道學無止境,但一個超過30以上的人來說,學程式語言會不會太晚些?變得是在學興趣,而不是在工作上的應用,因為一般公司也不會雇用?只能接些外包的案子?對於這類的人,在進入下一階段科技變革中,這些人是否還有機會改變?
附帶一問,蘋果這幾年力推swift,聽說易學易用,大概僅需要基本的邏輯觀念及熟悉使用操作即可上手,這是真的嗎?這系列程式軟體使用層面會有侷限嗎?
0
-
LV. 49
GP 7k
13 樓 NK1124 TW00181092
11 -
※ 引述《yck0610 (沉思者)》之銘言
> 我想問一下
> 現在很多媒體都在報導AI,似乎不論是國家或個人是否能在下一波經濟轉型中翻身就是AI的對決。
> 大概25或30歲以下的人都強烈的建議去學程式語言,不然至少2020年後,將開始淘汰那些被科技創新(或AI)的人們
> 就您觀察,請問您真的覺得未來世界每個人都要會程式語言(不論哪一種)嗎?
> 我知道學無止境,但一個超過30以上的人來說,學程式語言會不會太晚些?變得是在學興趣,而不是在工作上的應用,因為一般公司也不會雇用?只能接些外包的案子?對於這類的人,在進入下一階段科技變革中,這些人是否還有機會改變?
> 附帶一問,蘋果這幾年力推swift,聽說易學易用,大概僅需要基本的邏輯觀念及熟悉使用操作即可上手,這是真的嗎?這系列程式軟體使用層面會有侷限嗎?

AI......範圍也太大了。
https://zh.wikipedia.org/wiki/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD#%E5%AD%B8%E7%A7%91%E7%AF%84%E7%96%87

媒體畢竟是媒體,你覺得記者很專業嗎?你覺得記者的本科會是資訊相關的嗎?簡單來說不管未來走那種AI方向,其基礎不脫離3者:大數據、機器學習、資料探勘。

大數據庫本身最相關的就資料庫管理了吧......
機器學習與資料探勘喔......根本同一種東西吧XD?大部分AI也應該都是這塊領域的。總的來說都是"機器學習"類比較正確。

啥是機器學習?就是透過各種統計與其改良、加碼算法,根據過去紀錄資料去找出既有資料推薦(一般推薦)、或無相符資料下推薦最接近的(預測)。所以商業智慧是、決策支援系統是、阿法狗系列是、無人自駕系統是。所以翻譯成機器學習,讓機器根據演算法自己去一次次學習進步,所以又翻譯成資料探勘,從資料庫中探勘有用的資訊出來。


資料庫本身就是一門必要學問。
從上面看也能發現統計學也是必要的一門,其中算機率與相似性最為常用。
寫程式只是把上述兩者融入進去弄成一個可以跑的系統而已。
如果你寫的是某領域的AI,例如股票推薦系統,你還得配上一個該產業的老手,這個隊伍才算完整,才有機會寫出一個像樣的AI。
(有人會說阿法狗不是已應證硬幹=深度學習最強?那是因為下棋招式有明顯的對錯啊:3  當你不知這個選項是否為100%穩贏時,你就無法使用深度學習硬幹啦XD)

另外啥叫"演算法"?就只是把自己想要的數學算式,利用程式既有的語法,寫成可以跑的程式,就只是這樣而已。例如你想利用A*B=C的形式,去寫出一個99乘法表,你利用了兩層迴圈的結構去完成這件事,這個"程式結構"就是所謂的"演算法"了。



但是在台灣,老闆會希望雇用一個軟體工程師,統包上面四件事,人家要雇用一個隊伍,可能一個月人事支出15~20萬,台灣有些老闆一個月只要花5~6萬就搞定?

這樣看下來,你還是覺得必會一個程式是重點?不過在台灣,貌似這樣沒錯。因為你會其他三招,不一定找得到AI相關的職缺,只有碼農是入門磚。但一個很厲害的碼農,就必然也是其他三類的能手嗎?呵呵.......

30歲以上學習?有啥麼問題嗎?小弟的碩士就是在30歲以上考進去並且畢業的啊?一般人無法在30歲以上學習,是因為惰性,為何會有惰性則是因為早年國高中畢業就出來工作了,你到30歲都已經做了12年,早年工作很多重複性又高,等於無腦12年,突然要你開始學新東西,腦袋瓜一時間當然使不上力,然後就會對外說,30歲以上學習力差。

但如果你到30歲都還在用腦,像軟體工程師這職業就是,職涯內只要沒轉管理職,一生都在更新與學習啊?這種就沒有學習力低弱的問題了。即使是上段所述那種情況,只要給予半年一年的暖機期,一樣可以喚醒大腦的XD......

最後那個程式我沒學過,不予置評。
11
-
LV. 33
GP 752
14 樓 雷狼 mas642900
0 -
※ 引述《yck0610 (沉思者)》之銘言

Swift 能不能在非蘋果平台用,我不清楚

不過目前 Swift 語法還沒穩定下來
我自己碰 2、朋友碰 3 和 4。他跟我說有個東西的語法在 3 改了、4又改回來。
另外,朋友還說後來推了 protocol 還啥的,結果他們 library 底層似乎也沒這樣做、還是舊的寫法。

就基本語法還可能變這點,我不是很建議學。
0
-
LV. 21
GP 118
15 樓 Mos sank5566
1 -
目前只是某間大學的研究生,過去參加大學實習計畫去某間公司上班過,之後到畢業前約1年的時間都待在那間公司,主要開發Android app,因應需求還有寫過Javascript、PHP和C#,現在打工也是接case,前提是有涉略過的語言

依照我的經驗,待在台灣中小企業可能隨時會被丟一項需要你不會的程式語言來進行開發的工作,這時後只專精一種語言似乎很危險,當然到大企業似乎就沒問題(不確定,我沒去過),這時候我大概就體認到為啥許多大學資工必修的程式課是C而物件導向的則是JAVA,因為會這兩種語言的概念,後期學再多種語言都能應付得來,因概念上都是相通的

然後記得過去曾有人跟我說,學程式首先的重點除了要讓練習的程式要能動(廢話)還有基礎的觀念,以JAVA來說,物件導向的多型、繼承等,甚至進階點到Design Pattern,這些觀念不論轉換哪種語言都能用得上,到時候被老闆丟新工作或換新公司找職缺時需要其他種沒學過的語言上手會比較快

若純粹要讓程式動而沒觀念的話...比如說讓一個對物件導向完全不知道的人寫JAVA,到時候看他的code可能是從頭到尾只有一個class,然後裡面塞了數千行程式碼之類的...恩,我看過QQ

以上是我個人經驗,但是實際上我根本還沒正式出去工作過,待過得公司也只有1間而已,所以看看就好

另外稍微題一下版本控制,像git好了,過去公司裡有人想推,但是沒人想學,後來發現似乎除了新創公司外,一般的中小企業好像大部分都不太用版本控制呢

然後樓主說C#比JAVA簡單.....雖然每個人的認知不同,我第一印象認為C#就是個C跟JAVA的四不像,所以當初我個人並不喜歡,但是我必須承認,C#所包含的功能的確比JAVA本身還要豐富許多
1
-
LV. 18
GP 395
16 樓 我的名子剛好10個字 gyc880323
5 -
自己也是讀資工的~超喜歡你這句"用死的方式讓它活起來"!!!
還有真的跟平常人溝通很累, 常常覺得別人講話很沒腦XD

-
是說當初選資工是因為自己很喜歡這code方面的東西
夢想是當個駭客 (但似乎還差的遠QQ

程式學下來到目前沒有太大的困難 而且也學得很開心~
只是總覺得只有程式好像不太夠 (?
5
-
LV. 14
GP 4
17 樓 燕歸人 paul840903
1 -
麻弱大您好

想請教您資策會教得如何? 非本科系的進去學習會跟得很辛苦嗎?

以資策會的網站上來看 課程最後會需要做專題也會安排廠商面試
但您是用人力銀行來找工作,是因為想在中部做?

您的作品是當初資策會結訓時的作品?還是自己又另外製作的?
1
-
LV. 15
GP 3
18 樓 這是暱稱 abult
2 -

作者標示-非商業性

本授權條款允許使用者重製、散布、傳輸以及修改著作,但不得為商業目的之使用。使用時必須按照著作人指定的方式表彰其姓名。

※ 引述《paul840903 (江)》之銘言
> 麻弱大您好
> 想請教您資策會教得如何? 非本科系的進去學習會跟得很辛苦嗎?
資策會一樣也是要看地方跟老師
非本課系進去一定會比較辛苦,因為要在短時間內塞一堆資料跟東西
不過放心 資策會的授課對象本來就不是本科系
都是從頭開始
但是跟不上,還是要自己想辦法去問老師問同學
> 以資策會的網站上來看 課程最後會需要做專題也會安排廠商面試
> 但您是用人力銀行來找工作,是因為想在中部做?
不用太期待安排來面試的廠商
1. 每家公司人力缺口本來就不一定,前幾期有來徵的。並不表示這一次會來
2. 來了不一定瞭解資策會結訓的水準,可能用很高的標準,然後就...
或者是跟就業博覽會那種一樣,收個資料沒下文的也有。
資策會只是讓你可以多一點機會
> 您的作品是當初資策會結訓時的作品?還是自己又另外製作的?


2
-
LV. 21
GP 662
20 樓 virus apollo1988
22 -
好強...,不管是大大的能力或者是這篇文章的長度...

小時候只是想寫個RO外掛,然後技能點數越點越歪....

有人談到AI,碰巧本人也有點小涉略,算個心得分享

AI現在入門簡單嘛:

這樣看你要走哪方向,純用的話很簡單唷,安裝個 Tensorflow 就能使用了,沒有顯卡? 沒關係使用AWS 雲端運算,早上起個床就有資料了。

舉個例子,傳統 AOI 檢測常會用到的來料不穩,外觀瑕疵很難去定義,AI就是一個很棒的解法唷
(樣品圖)
一般傳統演算法(Blob或Filter 很難解決問題,劃傷、髒污、底層紋理要怎麼解決?)
但用 AI 就簡單許多了,準確率高達98.7呢
選個要讓AI檢測的Test集

AI 很聰明,知道這瑕疵是屬於"刮傷"


自己開發AI程式:
老實說AI這塊 程式功力不是很重要反而是數學功力

如 會遇到很多專有名詞的刁難如: CRF、Markov chain、Largrange、降維 (SVD、PCA 等)、Bayes 等等.... 等到一一突破了就會看到另一個世界

你會發現 自從 Hinton 深度網路演算法,其實到2018 神經網路演算法還是基於 梯度回傳 方法、數學上沒有太大改變,而且十分耗運算資源而且神經網路學習過程無法解釋,如果大家有注意 2017 年中Hinton 提出 "Capsule",就是打算解決此問題。

不過簡單 深度網路、RCN、GAN 倒是比較簡單的,公式都很好懂,大家可以重造輪胎練功力,像我也是寫過一次深度網路,不假借任何數學工具、自己偏導、自己寫池化層 練基本功


我是建議 要自己寫過一次,這樣對於要進入Mata Learning 會比較簡單,也會更懂 神經網路 運作過程。

有些不錯論文我真的誠心推薦:

1. Hinton:Dynamic Routing Between Capsules

剛剛所提的 Hinton  發表的文章,Capsules 理論,讓神經元更具有可觀性,也能更少數樣本做訓練
概念是各神經元個自萃取特徵,並輸出向量,比較向量,以概率最高的當作結果輸出。

2. 周志華Deep Forest Towards An Alternative to Deep Neural Networks
目前在影像辨識上是第一名演算法,利用隨機森林產生出強分類器(自適應),在各強分類器投票作為輸出
目前MIML學習也是採用此方法。

3. Meta Learning Shared Hierarchies
這是Open AI提出的,改善強化學習的技術,加速強化學習學習速度,概念是將強化學習拆分為"功能"
一強化學習負責將動作拆為子功能,其每個功能亦會根據狀態去做強化。
22
-
未登入的勇者,要加入 76 樓的討論嗎?
板務人員:

557 筆精華,07/18 更新
一個月內新增 31
歡迎加入共同維護。


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】