iT邦幫忙

4

請問一般程式設計師的程度應該達到甚麼樣的要求呢?

TB 2018-04-19 12:00:326395 瀏覽

Hi ~
小第寫 PHP 六年左右了
不知道是不是因為不是科班出生的
有些問題想請教各位大大

請問在各位的認知內
一般程式設計師的職能應該基本或普遍有哪些呢?

會這樣問是因為我大概三年前
看到 Laravel 框架的作者是2X歲寫出來的
還沒有看書,存粹從網路學習的 PHP
當然當時就嚇了一跳

我不知道作者本身是天才
還是外國人都這樣厲害
還是我是笨蛋,把他視為天才,其實那是一般 IT 人員普普的程度

總之我直到今天還在學 Laravel 跟 PHP
感覺有學不完的一天...QQ

而且觀看 youtube 上的教學影片時
那些放影片上去的程式設計師都好厲害
寫程式跟行雲流水一般,順暢又專業

雖然小第已經跟幾年前比起來,成長不少
(看著幾年前寫的程式,那簡直慘不忍睹)
不過還是有種,努力了好久,結果還比不上別人一般的水準
整個不是很自信

尤其最近又再看部落客的 IT 面試心得
那些面試考題感覺都好刁鑽阿
看到題目腦帶就一片空白了 @@
一堆排序法、二元樹、或者現實中不會出現的問題......
為什麼面試人員都能在短短幾分鐘解出來呢?
似乎程度真的差很多 O口O!!

看更多先前的討論...收起先前的討論...
lonsin iT邦好手 1 級 ‧ 2018-04-19 12:03:26 檢舉
當你有本事將數十行的程式碼濃縮到數行程式碼,即可達到相同功能,就出師了!!!
froce iT邦高手 2 級 ‧ 2018-04-19 12:33:42 檢舉
你說平常用不到,你錯了。
演算法和資料結構只是將很多實際事務用數學歸納出來,用程式表達而已。
實際上要用當然不用自己寫,不過了解別人怎麼做以後,常常會在別的事情上得到啟發。
ccutmis iT邦研究生 5 級 ‧ 2018-04-19 12:33:56 檢舉
能用程式解決工作上的問題就算是合格的程式設計師了
froce iT邦高手 2 級 ‧ 2018-04-19 12:58:24 檢舉
可是,解決不出來就被砍頭了啊。
weiclin iT邦高手 4 級 ‧ 2018-04-19 13:10:02 檢舉
如果只是"一般"程式設計師的話, 能達到工作要求就好了
但如果你想進的是 google, 趨勢, 或是其他大型軟體公司, 不靠內薦的話, 你得成為"專業"的才行
TB iT邦新手 4 級 ‧ 2018-04-19 13:10:36 檢舉
小弟不確定能將數十行濃縮到數行,
但是以前程式執行有瓶頸,
也是去找數學演算法後來才解決的,
不過老闆問原理的時候真的是答不上來 @@
只知道網路上說這樣算比較快

我這幾年也接過很多奇怪的案子,
真正沒有做出來的只有一件,因為效能問題.....
還好沒有被老闆砍頭 @@~
TB iT邦新手 4 級 ‧ 2018-04-19 13:19:11 檢舉
請問 weiclin 大
我沒有想進 Google 或 FB 這種大公司
但是我想成為專業的程式設計師
能夠請您指點一二嗎~

感激~
weiclin iT邦高手 4 級 ‧ 2018-04-19 13:51:57 檢舉
那你應該要多投資不同語言之間都通用的知識與技術, 例如物件導向的 SOLID 原則, 你提到的演算法, 各種模式與架構等等, 如果你啃的下去的話, TAOCP 去啃一啃

另外多看別人的程式, 像你提到的 laravel, 你看過他的程式碼嗎? 如果框架本身有 bug 你有辦法幫忙解並送出 pull request 嗎? 看到別人做出你做不到的功能你會不會去研究是怎麼弄的?

最後是找一份有挑戰性的工作, 理論學的再專業工作上沒用到也是沒用的, 專業就是理論與實務並重, 老是做自己熟悉的東西既沒挑戰性也不會成長的
TB iT邦新手 4 級 ‧ 2018-04-19 13:59:16 檢舉
weiclin 大

XD~有的,我去年到現在都在學習並盡可能的運用 SOLID 原則在新的專案上,
之前也研究過一陣子 Laravel 的程式碼,看看他如何實現 Route 跟 Contorller。

不過沒甚麼看過演算法跟資料結構等基礎學科,
我想接下來要把它們放進我的學習排程。

小弟比較怕找挑戰性的工作,一面試就被打槍了 XD
不過我之後會去試試看~

感謝您的建議
weiclin iT邦高手 4 級 ‧ 2018-04-19 14:03:45 檢舉
你有機會去看看國外的課程, 看人家做的作業是什麼, 再比對一下台灣學校, 除了國立幾間比較有名的可能稍微能比以外, 基本是看不到車尾燈的, 學作業系統就做個作業系統, 學程式語言設計就設計一個程式語言, 這就是實力差距的來源, 人家是被磨練出來的
weiclin iT邦高手 4 級 ‧ 2018-04-19 14:06:04 檢舉
而我當初唸書, 作業系統背書考試, 程式語言設計教完前幾章到剖析語法樹也就沒了, 根本就是考背書而已
TB iT邦新手 4 級 ‧ 2018-04-19 14:29:29 檢舉
學作業系統就做個作業系統, 學程式語言設計就設計一個程式語言
我明白了~^^
謝謝
一般的WEB專案如果是用RDB, 一堆排序法及二元樹用不到, 你只要會下SQL就行了 ! 但是..., 如果是雲端大數據框架 (ex: Apache Spark), 嘿嘿嘿 .. .
Luis-Chen iT邦新手 5 級 ‧ 2018-04-20 10:43:50 檢舉
國外蠻多開發者一開始都是「我覺得很酷、我想完成XXX」的心態去寫code的,觀念有差吧?我記得Homebrew的創辦人去google面試不會寫演算法也被打臉XDD ,不知道你現在是不是有「冒牌者症候群」https://www.inside.com.tw/2013/12/18/overcoming-impostor-syndrome
froce iT邦高手 2 級 ‧ 2018-04-20 11:28:45 檢舉
有興趣就去做些自己的side project,盡量自己去理解背後的機制,自然會成長。
TB iT邦新手 4 級 ‧ 2018-04-20 16:30:04 檢舉
XD~其實是神經病來著嗎~
微中子 iT邦新手 4 級 ‧ 2018-04-26 03:01:38 檢舉
我建議你用英文關鍵字去搜同樣的問題。回答水準高很多
TB iT邦新手 4 級 ‧ 2018-04-26 11:22:48 檢舉
感謝您的建議,我找到了一些有用的文章,
雖然以我的破英文不完全看懂,依靠翻譯的幫助還是可以理解 XD~
https://simpleprogrammer.com/the-myth-of-the-super-programmer/
https://coderoom.wordpress.com/2010/03/19/5-stages-of-programmer-incompetence/
外國的月亮不會比較圓,腦子是不分外國還是國內的~
2
暐翰
iT邦大師 6 級 ‧ 2018-04-19 12:26:41
最佳解答

一堆排序法、二元樹、或者現實中不會出現的問題......
為什麼面試人員都能在短短幾分鐘解出來呢?

刷leetcode題,
連結LeetCode Explore
解答: LeetCode题解,151道题完整版

總之我直到今天還在學 Laravel 跟 PHP
感覺有學不完的一天...QQ

現在好多語言都朝向多面向發展,像是OO概念
PHP->Laravel
JS ->Typescript
...
真的沒有學完的一天

ccutmis iT邦研究生 5 級 ‧ 2018-04-19 12:35:40 檢舉

/images/emoticon/emoticon12.gif

TB iT邦新手 4 級 ‧ 2018-04-19 13:45:17 檢舉

LeetCode 之前也有看過一些
感覺頭好像備磚頭敲到一樣~頭痛 XD
那個題解我會研究看看的
感謝大大

2

沒什麼笨蛋還是天才的區別,
只有花多少時間和心力的問題,
不要只是看到結果就妄下結論,
差距只是努力的差別,
不是科班出生,就去學習相關知識,
學得慢只能說努力不夠,
別人花十行能學會,就多寫數萬程式直到熟練為止,
自信是靠不斷累積的過程,
沒自信表示你累積的太少罷了,
沒什麼一般程式設計師的程度應該達到甚麼樣的要求,
全看個人對自己的要求是什麼,
如果無法抱持著自我要求的那種態度,
經過再多時間還只會是不入流的樣子~

TB iT邦新手 4 級 ‧ 2018-04-19 13:52:24 檢舉

感謝大大
其實我一直都有自己再努力學習
而且跟我認識的一些前同事或朋友來說
他們有程式設計上的問題也是會來詢問
上司也是肯定我的能力

只是看到了國外年輕人的程度之後
自信心一下子被打垮了 QQ

沒什麼好比的,不管在哪個領域,再厲害的人都會有,
所謂的厲害的標準也都不一樣,如果你認為那些人厲害,
倒覺得只是那些人更擅長某件事而已,沒什麼大不了的,
要我認為寫程式真正厲害的人,大概只有比爾蓋茲一個,
因為知識是要能具有實用性才有意義,coding再漂亮,
不能發揮它實質的意義也是枉然。
等你寫了上百萬行程式,什麼自信心不足的想法都會沒有的,
會這樣想,只能說你寫的太少了~

1
浩瀚星空
iT邦新手 1 級 ‧ 2018-04-19 16:57:28

程式設計這一門學問,的確是需要一些天分。這我不能否認。
但是沒天分的人,就可以利用經驗來補足。
這的確沒有所謂的天才與不天才的問題。
只有努力與不努力。

就如現在的程式員,有很多已經被所謂的智能式編輯器給養成壞習慣。
要不然就是直接套用人家用好的框架或是物件來工作。
不可否認,這的確可以降低開發時間。但相對的基本功夫就少學習了。

我也遇過說基本功沒用。現在太多方便的物件,掛一掛就好了。
基本上我對這說法沒什麼意見。但我還是會很強調基本功。
用方便的物件或框架,目的不是不需要學習那麼多。
而是為了降低你的開發時間,不要本末倒置。
該了解該學習的還是要知道。

看更多先前的回應...收起先前的回應...

基本功當然有用,會那樣說的人,只是三流的水準,
什麼樣的行業都一樣,要到達什麼程度全看自己的要求而定

你這樣說會噹到目前這裏的某個人。
哈哈哈。因為某人就有說過學那沒用。他要用飛的。

froce iT邦高手 2 級 ‧ 2018-04-20 12:02:04 檢舉

他能飛得了就算了,問題是飛不起來,還要靠別人的code飛,教他怎麼飛他會說那不是他要的,不算。

大概有六成以上的程式設計師都是如此,
又不是只有新手才會犯這種毛病,
畢竟自我要求是比成為程式設計師更難做到的事,
高度決定一切~

TB iT邦新手 4 級 ‧ 2018-04-20 16:23:13 檢舉

我覺得基本功還是蠻重要呢
至少要去搞懂這樣做的原因或原理
因為已經好幾次遇到莫名其妙的 BUG
結果是外掛套件的問題 QQ

qekbess iT邦新手 5 級 ‧ 2018-04-25 10:34:17 檢舉

鳴~我大部份都是套用別人寫好的
遇到問題 或 其他原因 才會去問谷哥 ~ 問朋友
然後慢慢學 (已經夠慢了,還慢慢來 = =

0
wax207
iT邦見習生 0 級 ‧ 2018-04-20 10:03:21

其實我也有很大的疑惑,很多資深的工程師,程度看起來跟剛畢業沒差多少...

但仔細一想也有可能,有些人就只是把寫程式當作一份工作,並不會主動去了解Know How,大部分都是功能會動就好。

所以到底一般程式設計師的程度至少在哪裡? 我覺得也許就一般CRUD做得出來就好了吧?!

TB iT邦新手 4 級 ‧ 2018-04-20 16:23:58 檢舉

O口O~會 CRUD 就是程式設計師了嘛
那俺國中的時候就.....還不是程式設計師 XD

0
yuanshang
iT邦新手 4 級 ‧ 2018-04-20 11:34:58

「一般程式設計師的程度應該達到甚麼樣的要求呢?」,對誰來說?如果是你的老闆,簡單一句就是能夠在時程內完成程式任務 (當然這應該不是你要問的)。

從內文來看,似乎您在程式設計有些瓶頸產生,我的經驗是,當有瓶頸時,多多反覆咀嚼那些最基本的材料中的思維。

「資料結構與演算法」的了解與使用,大概是(科班)業界對一個程式設計師最基本與普遍的要求吧,在申請國外電腦科學研究所最基本的要求也是這些。我們當然很難直接看到一些排序法、二元樹之類出現在現實中的問題,因為它們是基本工具,是經過古往今來的計算問題,在反覆的思維中所演譯及歸納的結果。藉著這些基本工具的熟稔度,可以激發你對程式開發精益求精的力度,這也是為甚麼很多大型軟體公司都會以這些來檢驗面試者。

因為您寫程式六年了,我建議您如果要嘗試「資料結構與演算法」,多多問:這是要解決什麼 (類型) 問題?為什麼要這樣做?而不是「憑記憶快速寫出程式碼」。

我不清楚您在職場上除了撰寫 PHP 程式外,會不會接觸到其他的程式語言?除了上述的基本工具外,程式思維的訓練還包括:

「物件導向」的設計與應用,與「資料庫」的處理與操作,一樣的多多問:這是要解決什麼問題?為什麼要這樣做?

程式界當然有天才,有真天才 (先天的,凡人難以企及的),也有假天才 (靠不斷努力精進的),大家加油!

後記:真的有很多 youtube 上的人很厲害,他們一邊解釋一邊寫,就像你說的「行雲流水一般,順暢又專業」,如同在寫作文般。因為英 (德、法) 本就是邏輯性強的語言,程式語言又是英文寫的,他們就是有這個優勢。 (這是以前的自我安慰語,笑笑吧!)

TB iT邦新手 4 級 ‧ 2018-04-20 16:28:57 檢舉

/images/emoticon/emoticon37.gif
感覺有點逆向學習
的確以前只要把東西弄出來就好了
給別人的印象就是~做好快

可是那個品質自己知道的
自己要維護都有困難阿...

XD~我昨天還夢到去面試
考管:你會不會氣泡排序法
我:我會 sort() 函數...還有 rsort() 函數喔~

理解基礎學科真的很重要阿~

0
gygy2020
iT邦新手 5 級 ‧ 2018-04-23 11:54:24

對我來講 一般程式設計師,只需要"聽得懂人話就好"

很多人實在是聽不太懂人話...

寫成是只是技巧,這是我的看法拉,更重要的是做人,
如果你跟人相處的融洽,很多的BUG就看起來不是這麼的嚴重,
如果你跟人相處不好,很多的小事就會被放大來看,

順便一提,工作上所需要的技術,一開始碰都馬會覺得自己很像廢物,
但是我的個人體悟是 沒有會不會,只有熟不熟,

很多東西都馬不會,但是用久了就會了,所以不用太緊張啦,

這是我快六年的經驗的回答。

1
pocadidi
iT邦新手 5 級 ‧ 2018-04-23 18:38:45

程式設計師要達到什麼成度要求? 反過來去想..那些地方需要用程式設計師?
這個問題如同. 駕駛員要達到什麼成度要求的問題一樣! 可由供需的角度來看,就沒有太多異聲!
你想要開房車,只要考上小型汽車的駕照! 就可以上路.但技術好不好是另一回事!
你想要開公司,自要要上大型汽車的駕照才可以
但你沒法用小型或大型汽車駕照. 說我可以開火車、飛機、或馬車!
對以上看起說法很好笑對吧!
但實際上就是如此...不要想什麼都以通吃! 你應該停下想一下你想滿足那一種層面的需求?(商業需求)
來訂定程式設計師所需的成度要求! 你有可能學會多演算法。但客戶要的東西不需要你的那些演算法
就能解決的也有,並且你要解決之前必要去找到客戶所需要的【邏輯】才能得到完整的解決。

所以想好的當一個程式設計,最底的本質要求,就是要有面對【邏輯】,找出要解決問題的【邏輯】
在用你手上資源(程式語言、演算法)去設計這個【邏輯】,使它可以運作出最後結果..!
如果結果無法滿足需求..就再修改邏輯、再去設計程式.直到完成為止! 當然也有中止(效益面問題)

以上是我自己入行..10多年經驗啦! 我不會演算法.也不是本科系。 但客戶還是指定要我處理問題!
所以你要選定你要的客戶群..是那類型..去深入你要對應技術就可以了! FB 也是 PHP寫出都喔!
當然後面有效能需求..也有另一個Team將PHP轉成C++ 相關文章自己Google 就找的到! FB是多大的呀! 加油! 無看輕自己!

0
ericit
iT邦新手 4 級 ‧ 2018-05-02 16:54:17

從18歲,學寫程式到現在22年了,
發現我只會抄襲google上的解答.......阿阿阿阿,
這些年我到底是怎麼活下來的.............

我要發表回答

立即登入回答