-
1 # 此生唯一
-
2 # 永新網路科技
做了20多年的程式,國外,國內的大公司都幹過了。見過30多個國家的程式設計師,深知程式設計師是個苦逼的行業。哈哈,下面分享一下我的看法吧:
程式設計師也有細分的,不同的程式設計師所需要掌握的具體技能不同。總體來說有下面這幾個方面:
掌握開發工具
不同的語言有不同的開發工具, 但大致功能想通。 主要包括編寫程式碼,檢視程式碼(Review),除錯程式碼,和編譯程式碼這幾個大功能, 不管用那種工具都要掌握這些。哪怕是寫網頁,也應該瞭解除錯工具的使用。
熟悉使用者環境
程式在你的電腦上能執行,不代表在其他人的電腦或手機省能執行。 要了解不同環境下的區別。 比如 IE6,和IE11區別可以要命。 WinXP和MAC區別就更大了哦!
瞭解命令列
新程式設計師很少學命令列,但作為一個合格的程式設計師這個少不了。 不然連伺服器都配置不了,不信可以裝個Ubuntu Server試試。
瞭解資料庫
很多應用程式都是以資料庫的資料為中心,而資料庫的產品也有不少,其中關係型資料庫仍是主流形式,所以程式設計師至少熟練掌握一兩種資料庫,對關係型資料庫的關鍵元素要非常清楚,要熟練掌握SQL的基本語法。
學習資料結構
程式設計師必須學習 資料結構,不知道什麼事資料結構的自己面壁5分鐘。
現在有人叫的比較高大上:設計模式,演算法,效能最佳化... 差不了太多。
理解作業系統
當前主流的作業系統是Windows,Linux/Unix,瞭解一點美工工具
瞭解基礎的資料傳輸方式
XML,JSON等格式要了解下,不讓沒法做後端WebService。 TCP/IP, COM通訊瞭解了可以編寫工業系統。
軟技能
溝通能力,學習能力,身體素質(熬夜能力)
最後是 多多多多多................. 練習!
-
3 # Neil小六
首先成為一個合格的程式設計師需要一下幾個特質:
對程式設計的熱愛我覺得任何行業這一條都是必要的,你想在某個領取得一番成績,不付出全身心的熱情是不可能成功的。這是你一切成功的催化劑,我在高中時就對程式設計充滿嚮往,覺得計算機執行出的結果是多麼的神奇,以至於我考大學的時候是都以軟體專業作為第一志願去選學校,不服從調劑,後來看來我的選擇是正確的,時至今日都對程式設計還是熱愛的不得了。
系統的學習既然從事軟體行業,就必須從某個起點開始系統的去學習。比如學習一開始以c語言為基礎,作為敲門磚瞭解程式設計,熟悉程式設計,最終確定需要發展的方向。我作為java開發工程師,也是一步步從基礎到高階過來的。首先學習基礎知識→網路程式設計→Java web開發→常用框架開發→專案實踐。這個過程就是你成長的過程,每一次進步都是你的收穫。
緊跟潮流,提升自己故步自封是不可取的,原地踏步不是合格成員的選擇。IT界的技術變革實在是太快,不去了解熟悉最新的技術,就會被拍在沙灘上。某個領域的難題你一直沒有最佳解決方案,有可能在新技術上只是一個很seay的實現。你不接受新技術就是在給自己劃圈圈,不能與時俱進,漸漸會被大部分人所超越。
-
4 # mikechen的網際網路架構
程式設計師合格只是起步,優秀才是你的目標,如下是我認為優秀的程式設計師標準,我以java為例子,從資料結構和演算法、語言高階特性,web核心開發,框架與工具,資料庫五大知識體系為例,希望你早日成為優秀的程式設計師:
資料結構和演算法演算法分析與計算
演算法時間複雜度和空間複雜度的分析計算
演算法思想
遞推、遞迴、窮舉、貪心、分治、動態規劃、迭代、分枝界限
常用資料結構
陣列、連結串列、堆、棧、佇列、Hash表、二叉樹等
經典演算法
排序
經典排序:插入排序、氣泡排序、快排(分劃交換排序)、直接選擇排序、堆排序、合併排序等
查詢
經典查詢:順序查詢、二分查詢、二叉排序樹查詢
java語言高階特性深入理解面向物件
面向物件的基本思想是使用類、物件、繼承、封裝、訊息等基本概念來進行程式設計。面向物件的方式實際上由OOA(面向物件分析)、OOD(面向物件設計)和OOP(面向物件程式設計)三個部分有機組成。
物件的三大特性:封裝、繼承和多型,優缺點
如何設計類,類的設計原則以及建構函式,內部類,抽象類,介面,物件的多型性,介面和抽象類的區別。
理解異常處理
Java 常見異常種類
Java Exception
Error
Runtime Exception 執行時異常
Exception
throw 使用者自定義異常
多執行緒
java web開發前段技術
如今H5特別火爆,上圖我截取了部分H5相關的重點掌握:html5、css3、js、以及對應的框架jquery、node等。
平時多掌握點web開發相關的,非常方便你今後後端除錯等,前段知識還是要跟上。
Java Web核心
這裡還是需要掌握整個java web從容器啟動到request、filter、listener的過程,最好自己設定斷點除錯,把完整的生命週期都走一次。
模板引擎
上圖是常見的模板引擎,比如淘寶一直使用velocity,現在最新又出來了個新模板引擎:beetl,有興趣的同學也可以自己發掘。
高階特性
SSI技術
安全JCCA/JAAS
通訊JNDI/JMS/JavaMain/JAF
整合JCA
事務JTA
java框架與工具web開發框架
Struts2、SpringMVC、spring、hibernate、myBatis
在搭建日誌:Log4j
單元測試:JUnit
構建工具
推薦nexus搭建一套自己的程式碼倉庫中心,採用maven管理,這些都是比較常見而且有效的構建方案。
Web伺服器
Tomcat
JBoss
Jetty
Resin
WebLogic
WebSphere等
通訊協議
RMI
Hessia
Burlap
Httpinvoker
Soap
WebService等
資料庫首先,資料庫設計的基本原則還是需要掌握
資料庫設計原則和正規化
第一正規化,確保每列保持原子性。
第二正規化,確保表中的每列都和主鍵相關。
第二正規化,在第一正規化的基礎之上更進一層。
第三正規化,確保每列都和主鍵列直接相關,而不是間接相關。
Sql與NoSql的優缺點以及使用場景分析
SQL 關係型資料庫:SQL Server,Oracle,MySQL(開源),PostgreSQL(開源)
NoSQL泛指非關係型資料庫 :MongoDB,Redis,Memcached,Hbase,CouchDB。
大型網際網路專案常用的資料庫選型方案:
採用MySQL + NoSQL的組合方案,根據業務場景和資料訪問量來分別採用。
關係式資料庫必備
事務(ACID、工作原理、事務的隔離級別、鎖、事務的傳播機制)
資料庫建立,許可權分配,表的建立,增刪改查,連線,子查詢
索引、觸發器、儲存過程、事務控制等
資料庫效能最佳化
索引原理及適用,大表查詢最佳化,多表連線查詢最佳化,子查詢最佳化
分庫、分表、備份、遷移、匯入,冷備熱備,主從備份、雙機熱備、縱向擴充套件、橫向擴充套件等這些都是屬於比較常見的資料庫方案,我在淘寶具體挑戰性的一次架構演變中一文中談到了資料庫縱向和橫向的發展策略,有興趣的同學可以翻看歷史檢視。
回覆列表
JAVA開發了好幾年,不知道自己是不是一個合格的程式設計師,姑且說下!
業務方面:
1,業務程式碼要很nb:有些所謂"大牛"認為,業務程式碼總是那些方式方法,不能促使一個人持續成長,我個人認為這是謬論,技術本就是為業務做實現的,而業務也是靈活多變的,如果不能根據業務變化,提升程式碼的可擴充套件性,相容性,那麼程式碼就不是好程式碼!
業務程式碼寫好了不一定能成技術大牛,但業務程式碼一定不會是一個大牛!
2,要熟悉全流程:我一開始在公司做的時候,只是把主管交代的任務做完就沒事了,然後對整個業務線沒有基本認識,導致寫出了一些不符合業務邏輯的程式碼,主管很是不滿,所以你要掌握的比別人交代你的更多,熟悉整條業務線!
如果你只掌握分配給你的業務,你可能成為你係統的負責人,但是你永遠成不了總負責人!
態度方面:
1,孜孜不倦:一入開發深似海,程式設計師一職,伴隨著網際網路技術的不停迭代更新,技術層出不窮,只有不斷的學習才能不被淘汰併成長!
2,學以致用:一般學習一門技能可以透過官網,社群等渠道,但是要想掌握,只能是靠自己,把你學習的技能用無數個demo的形式,掌握它!然後在實際開發中使用!
3,三省己身:把自己的所用所學不斷的總結歸納,形成一個系統的完善的知識體系,才能不斷的開枝散葉!
實際技能方面:
程式設計師不是固定的職業,有大資料的,web服務的,應用開發的,根據自己的技術範疇選定自己最應該掌握的!以web開發為例,起碼需要包括:
前端:
CSS樣式表,HTML佈局,頁面渲染方式,瀏覽器相容性,原生js,前端框架諸如react,vue等,前後端分離技術之node.js!
後端:
介面開發,介面文件書寫,檔案處理(bio.nio),演算法和資料結構(排序,查詢,各種樹結構,堆,佇列等),快取(redis,memcache,ehcache等),中介軟體(訊息中介軟體:xxmq,kafka等,資料庫中介軟體:mycat,cobar,sharding-jdbc等),nosql(mongodb,redis等),微服務架構(dubbo,springcloud等)!
前後端都需要:
通訊:熟悉通訊方面的知識,瞭解並掌握TCP/IP,HTTP等通訊協議,瞭解"握手揮手"方式和連線原理!
資料庫操作,包括增刪改查和相應的資料傳輸!
資料加密傳輸,解密使用!
解決字元編碼亂碼問題!
防止重複提交,防止資料格式,資料型別等錯誤!
防止惡意攻擊!