第一篇:致誤入歧途的碼農(nóng)同學(xué),各類程序員學(xué)習(xí)路線圖
致誤入歧途的碼農(nóng)同學(xué),各類程序員學(xué)習(xí)路線圖
程序猿這個群體在互聯(lián)網(wǎng)上被各種調(diào)侃,其中一部分是自黑,但是一大部分是被黑。作為碼農(nóng)的一員,看著身邊一批又一批人進(jìn)入這個行業(yè),也看著一些人離開這個行業(yè),深感人生苦短,碼海無涯何處是岸。程序猿這一種非常特殊的、可以從事程序開發(fā)、維護(hù)的動物。一般分為程序設(shè)計(jì)猿和程序編碼猿,但兩者的界限并不非常清楚,都可以進(jìn)行開發(fā)、維護(hù)工作。
互聯(lián)網(wǎng)發(fā)展這么多年,互聯(lián)網(wǎng)技術(shù)日新月異,每個從事程序技術(shù)開發(fā)剛開始或多或少會遇到技術(shù)的路線選擇問題。小編對這些資料做了一個大概的整理。后面如果活著,會繼續(xù)完善。前端工程師基礎(chǔ):HTML教程,CSS教程進(jìn)階:Javascript,jQuery高級:AJAX 教程,JSON 教程,XML 教程框架擴(kuò)展學(xué)習(xí):Bootstrap 教程,jQuery UI 教程,jQuery EasyUI 教程,jQuery Mobile 教程調(diào)試工具:Firebug 教程,chrome開發(fā)工具:PhpStorm,HBuilder,Dreamweaver,Notepad++,PhotoshopPHP 工程師基礎(chǔ):HTML教程,PHP 教程進(jìn)階:SQL 教程,MySQL 教程,linux服務(wù)器架構(gòu)高級:正則表達(dá)式教程,Mongodb教程,AJAX 教程,JSON 教程,XML 教程,開發(fā)工具:Notepad++,phpMyAdmin,EasyEclipse for PHPPython 工程師基礎(chǔ):Python 教程,Python各種包和框架教程進(jìn)階:SQL 教程,MySQL 教程高級:正則表達(dá)式教程,Mongodb教程,AJAX 教程,JSON 教程,XML 教程,開發(fā)工具:PyDev for Eclipse,pycharm.NET 工程師基礎(chǔ):C# 教程,ASP.NET 教程進(jìn)階:SQL 教程高級:正則表達(dá)式教程,Mongodb教程,AJAX 教程,JSON 教程,XML 教程,開發(fā)工具:visual studio 2010JAVA 工程師基礎(chǔ):Java 教程,JSP 教程進(jìn)階:SQL 教程,MySQL 教程高級:正則表達(dá)式教程,Mongodb教程,AJAX 教程,JSON 教程,XML 教程,開發(fā)工具:EclipseASP 工程師ASP 現(xiàn)在應(yīng)該比較少用,建議學(xué)習(xí)路線為:HTML教程,ASP 教程,SQL 教程不說了,小編要通宵寫代碼去了。
第二篇:Java 程序員學(xué)習(xí)路線圖
第一階段:Java核心部分
JavaSE
Java核心語法、Java核心API、面向?qū)ο蟪绦蛟O(shè)計(jì)、Java容器類(集合)、GUI 用戶界面編程、I/O體系結(jié)構(gòu)、多線程并發(fā)模型、網(wǎng)絡(luò)編程、數(shù)據(jù)結(jié)構(gòu).掌握J(rèn)ava核心語法與面向?qū)ο笏枷耄苁炀氝\(yùn)用常用設(shè)計(jì)模式與編程技巧完成桌面應(yīng)用或網(wǎng)絡(luò)通信類程序的開發(fā).140
Java5.0新特性
Autoboxing/unboxing(自動裝包/拆包)、Enums(枚舉)、Varargs(可變參數(shù))、Static Implements(靜態(tài)導(dǎo)入)、for each(增強(qiáng))循環(huán)、Generic(泛型)程序設(shè)計(jì)、Annotation(注釋)無侵入式程序設(shè)計(jì)等
掌握全新java設(shè)計(jì)思想, 把握未來java技術(shù)發(fā)展趨勢.16
Java高級技術(shù)
Java反射(Reflect)與動態(tài)代理(Dynamic Proxy)
深入研究Java語言高級技術(shù),設(shè)計(jì)更加靈活、擴(kuò)展性更強(qiáng)的動態(tài)程序.Java開發(fā)IDE
各種Java常用開發(fā)工具(如:Eclipse、NetBean等)的使用
掌握J(rèn)ava開發(fā)IDE的使用與代碼調(diào)試技巧
軟件測試
黑盒、白盒測試.Java測試框架Junit.理解測試的重要性.學(xué)習(xí)使用Juni進(jìn)行單元測試、參數(shù)化測試、測試套件的開發(fā)和測試運(yùn)行器的使用...............第二階段: 數(shù)據(jù)庫編程
Oracle/SQL語言
以O(shè)racle為平臺,介紹Oracle數(shù)據(jù)庫的安裝、Oracle體系結(jié)構(gòu)、物理組件、權(quán)限分配、數(shù)據(jù)管理、分析各種關(guān)系數(shù)據(jù)庫設(shè)計(jì)的常見問題,深入講解數(shù)據(jù)庫設(shè)計(jì)范式.全面講解各類SQL語句的使用和優(yōu)化策略.深入學(xué)習(xí)Oracle數(shù)據(jù)庫對象:index(索引)、view(視圖)、sequence(序列)、tirgger(觸發(fā)器)、comment(注釋).理解Oracle數(shù)據(jù)庫體系結(jié)構(gòu),掌握Oracle數(shù)據(jù)庫基本操作,數(shù)據(jù)庫設(shè)計(jì),開發(fā)和管理知識,熟練掌握SQL和Oracle對象使用.PL/SQL
PL/SQL語法,作用.使用游標(biāo)、存儲過程、函數(shù)、觸發(fā)器解決數(shù)據(jù)庫性能問題.掌握PL/SQL的使用,能夠使用存儲過程開發(fā)高效的數(shù)據(jù)處理系統(tǒng),解決數(shù)據(jù)庫性能瓶頸并
實(shí)現(xiàn)數(shù)據(jù)優(yōu)化.MySql
以MySql為平臺,介紹MySql數(shù)據(jù)庫的安裝、權(quán)限分配、數(shù)據(jù)管理.數(shù)據(jù)庫使用.掌握MySql數(shù)據(jù)庫的使用.JDBC
使用Java操作數(shù)據(jù)庫,包括:數(shù)據(jù)庫連接、結(jié)果集處理、存儲過程調(diào)用、元數(shù)據(jù)、大數(shù)據(jù)類型處理、事務(wù)管理,批更新,可滾動、可更新的結(jié)果集,SQL3.0新特性,連接池技術(shù),數(shù)據(jù)庫應(yīng)用架構(gòu).熟練掌握J(rèn)ava數(shù)據(jù)庫編程技巧,能使用高級API、DAO編程模式編寫高性能的數(shù)據(jù)持久層應(yīng)用....................第三階段: Web應(yīng)用
XML
XML的概念與作用、基本語法、驗(yàn)證、XML模式定義(DTD、Schema)、XML解析(SAX、DOM)、Jdom和Dom4j、xpath、XSL.掌握XML使用及XML文檔的處理技術(shù).使用XML進(jìn)行信息配置、數(shù)據(jù)存儲以及數(shù)據(jù)交換.Html
介紹Web原理.Web頁面開發(fā)的基本過程,超文本標(biāo)記語言(HTML)基本標(biāo)簽的使用,CSS 層疊式樣式表
掌握HTML基本標(biāo)簽的使用,能利用CSS優(yōu)化頁面設(shè)計(jì)的方法
JavaScript
JavaScript 腳本語言基本語法,常用函數(shù),JavaScript高級DOM編程及頁面組件控制掌握基于對象的JavaScript程序設(shè)計(jì),能通過W3C DOM模型完成動態(tài)頁面腳本開發(fā)
Web容器之Tomcat
Tomcat的下載、安裝、啟動分析、體系結(jié)構(gòu)、基本配置、應(yīng)用程序部署、管理和性能調(diào)優(yōu).掌握使用Tomcat的使用.Java Web編程Servlets
HTTP協(xié)議詳解,Servlet核心對象操作,Servlet生命周期,Session與Cookie的應(yīng)用場景,過濾器與監(jiān)聽器.分層結(jié)構(gòu).全面掌握Servlet 2.5 API的使用,能夠獨(dú)立分析設(shè)計(jì)基于N層體系結(jié)構(gòu)的Web 應(yīng)用,熟練使用各種Java EE應(yīng)用服務(wù)器
Java Web編程JSP
JSP介紹、創(chuàng)建、部署JSP程序,JSP的三個指令、六個動作和九個內(nèi)置對象.JSP中異常處理,自定義標(biāo)簽,EL和JSTL
掌握J(rèn)SP2.0規(guī)范技術(shù),掌握J(rèn)SP進(jìn)行動態(tài)頁面開發(fā)的專業(yè)技術(shù),能結(jié)合Servlet完成B/S應(yīng)用的設(shè)計(jì)與開發(fā)工作
...............第四階段: 流行框架技術(shù)
J2EE容器之JBoss
JBoss的下載、安裝、啟動分析、體系結(jié)構(gòu)、基本配置、應(yīng)用程序部署、管理和性能調(diào)優(yōu).掌握使用JBoss的使用.Struts
MVC設(shè)計(jì)思想,Strust1的體系架構(gòu)、控制器組件、視圖組件、框架的擴(kuò)展、國際化、驗(yàn)證框架、常用標(biāo)簽庫等.理解MVC模式,掌握基于struts1的java EE解決方案
學(xué)習(xí)Struts1和WebWork結(jié)合而成的Struts2.包括:Struts2的無侵入設(shè)計(jì),控制器組件、視圖組件、動態(tài)方法調(diào)用、包、攔截器、annotaction的支持、國際化、驗(yàn)證框架、常用標(biāo)簽等.深入學(xué)習(xí)Struts2,完成從Struts1到Struts2的Java Web應(yīng)用的升級.Hibernate
學(xué)習(xí)領(lǐng)域建模思想與O/R Mapping,各種對象關(guān)系映射、實(shí)體狀態(tài)、繼承關(guān)系、組件映射、查詢緩存與二級緩存配置、事務(wù)鎖機(jī)制與性能調(diào)優(yōu).能以領(lǐng)域建模思想完成持久化層的設(shè)計(jì),使用Hibernate完成持久化層的開發(fā)工作.40
AJAX
全面講解AJAX應(yīng)用的設(shè)計(jì)與開發(fā)方式,內(nèi)容包括: XMLHttpRequest對象操作、W3C DOM模型操作、jQuery與DWR快速開發(fā)Ajax.能通過AJAX開源框架實(shí)現(xiàn)Web 2.0應(yīng)用中的異步通訊.掌握DWR的開發(fā)原理,并熟練使用DWR簡化Ajax的開發(fā)
SVN/CVS及編程規(guī)范
掌握SVN/CVS的配置和使用;軟件編程規(guī)范
SVN/CVS的配置和使用;軟件編程規(guī)范
Spring
學(xué)習(xí)最新Spring2.0技術(shù).包括:IOC、AOP,使用Spring的ORM支持完成DAO層的開發(fā),事務(wù)層管理,Springde MVC框架,使用Spring與EJB3、Struts1(Struts2)、Hibernate等流行框架進(jìn)行整合.通過Spring完成多層架構(gòu)應(yīng)用的設(shè)計(jì)與開發(fā)工作,掌握面向接口編程的重要性.通過Spring去簡化企業(yè)開發(fā).第五階段: JavaEE企業(yè)應(yīng)用
Linux
學(xué)習(xí)Linux的安裝和基本操作,通過SSH2訪問Linux,在Linux安裝JDK,安裝Web服務(wù)器、安裝數(shù)據(jù)庫服務(wù)器,安裝和部署Java應(yīng)用程序。
掌握Linux的基本操作,掌握在Linux發(fā)表基于Java的Web應(yīng)用程序。
OOAD
學(xué)習(xí)面向?qū)ο蟮姆治龊驮O(shè)計(jì)
掌握面向?qū)ο蟮姆治龊驮O(shè)計(jì)。
Java設(shè)計(jì)模式
學(xué)習(xí)Java經(jīng)典設(shè)計(jì)模式。包括單例模式、命令模式、工廠模式、攔截器模式等。學(xué)習(xí)經(jīng)典的軟件設(shè)計(jì)思想,能夠?qū)懗鲆子诰S護(hù)和更容易擴(kuò)展性的代碼。
8J2EE容器之WebLogic
Weblogic的下載、安裝、啟動分析、體系結(jié)構(gòu)(Domain、Cluster、Machine、Server、Administrative Server、Managed Server、Node Manager)、基本配置、應(yīng)用程序部署、管理和性能調(diào)優(yōu).集群的概念和配置.掌握使用WebLogic的使用.JAVA EE/EJB
高級編程
創(chuàng)建基于JAVA EE5.0規(guī)范的EJB中間件學(xué)習(xí)將EJB融入分布式企業(yè)級應(yīng)用程序的編程技術(shù),學(xué)習(xí)Session Beans,Entity Beans,Message-Driven Beans,JTA/JTS,JAAS,JNDI,RMI等技術(shù)同時講解最新EJB3.0技術(shù)規(guī)范。
掌握基于EJB3.0規(guī)范的企業(yè)應(yīng)用架構(gòu)編程接口及訪問EJB技術(shù)實(shí)現(xiàn),掌握開發(fā)和運(yùn)行基于 JAVA EE 應(yīng)用程序所遇到的常見問題,包括安全性,伸縮性和負(fù)載平衡管理等。
Web Services
了解Web Services技術(shù),使用JAX-RPC和JAXWS開發(fā)Web Services項(xiàng)目,SOA系統(tǒng)的設(shè)計(jì)與開發(fā),流行的XFire實(shí)現(xiàn)Web Services.能使用Web Service技術(shù)完成SOA系統(tǒng)的設(shè)計(jì)與開發(fā)和使用XFire完成企業(yè)應(yīng)用.
第三篇:碼農(nóng)故事:一位中級程序員的自白(寫寫幫推薦)
碼農(nóng)故事:一位中級程序員的自白
我是一名中級程序員。
我有相當(dāng)不錯的基本技能。我犯了足夠多的錯誤才明白為什么那些被稱為錯誤。我很清楚我還需要了解更多東西。最重要的是,我知道那些東西大概是什么,并且我正在努力而積極地提升自己。
勇敢地承認(rèn)自己不過是水平一般的程序員,這花了我一些時間。我不再感覺有必要去抓住那些我并不了解的觀點(diǎn)。當(dāng)人們發(fā)現(xiàn)我對某樣?xùn)|西不了解時,我也不再感到害怕。事情并非從來如此。你可能對此不以為然,但是我曾經(jīng)自詡為編程大師。
這種對自己能力的不正確的評估,很大程度歸因于我在一個相對封閉的環(huán)境中學(xué)習(xí)技能。在過去那些日子里,有電腦就已經(jīng)很特別了;更不用說知道如何使用了。
在我自己看來,我當(dāng)時是一個知識淵博并且經(jīng)驗(yàn)豐富的程序員。在我不到20歲的時候我已經(jīng)用C++、Pascal、C#、JavaScript寫過程序。當(dāng)然我最引以為傲的是,曾經(jīng)徒手用PHP編了一個電子商務(wù)平臺。
事實(shí)上,我可能只是人們平時談話中提到的“我有個朋友的兒子很會寫網(wǎng)站”。我和別的程序員沒有任何交流,所以我僅有的比較對象是我周圍的人;要么是一些根本不在意電腦的人,要么是那些會用電腦,但是在IE窗口中塞了5個沒用的工具欄的人。那些可能會說“我的網(wǎng)壞了”這種話的人。
接下來這個故事就是講我如何產(chǎn)生自己很厲害的幻覺的。
天才的起源
當(dāng)我九歲的時候,我的一個朋友家里有衛(wèi)星電視。而在我們家里,我們只能收到四個英國的頻道(你能想象第五頻道出現(xiàn)之前的日子嗎?),我熱切地盼望有一臺普通的電視機(jī)。我們所需要的只是那些“衛(wèi)星盤子”,或者我稱為“衛(wèi)星”的東西——那樣我就隨時可以看QVC臺或者Eurosport臺。由于隱約意識到自己的某種天分,我開始搭建自己的衛(wèi)星!我的設(shè)計(jì)包括了一把打開的傘和一條銅質(zhì)音頻線,一段接在傘的金屬柄上,另一端接在電視機(jī)天線上。必須承認(rèn)我的設(shè)計(jì)有一些缺陷,并直接導(dǎo)致我沒有得到想要的結(jié)果。但是這個小故事僅僅想表達(dá)我童年和青少年時期對技術(shù)的渴望。我認(rèn)識的人中從沒人想過制造“衛(wèi)星”。幾年后,當(dāng)我父親的辦公室得到一個14.4k的貓時,我成為了最早一批網(wǎng)民一員。我能回憶起花了整個星期六下午的時間等待這個火焰漫畫圖標(biāo)被加載,每個幀的動畫大概要過一分鐘才顯示。我甚至用Netscape搭建了我自己的網(wǎng)站。由于不知道互聯(lián)網(wǎng)的架構(gòu),我把所有的HTML文件存放在本地,并且期待有一天他們會出現(xiàn)在互聯(lián)網(wǎng)上。然而這些細(xì)節(jié)并沒有削弱一個事實(shí):我認(rèn)識的人中沒有一個制作了他們自己的網(wǎng)站。
在我十多歲的時候,我發(fā)現(xiàn)了自己天才中的黑暗面。在裝備了Jolly Rogers的食譜后,我和一群小伙伴們準(zhǔn)備動搖整個九十年代英格蘭的技術(shù)和道德根基。破解電話系統(tǒng)是我們的專長。我們用手提式聲音耦合器和公用電話,給我們在ICQ上認(rèn)識的美國姑娘們打免費(fèi)國際電話,以及在私人交換機(jī)上設(shè)立語音信箱。最終學(xué)業(yè)和滑板阻止了我們在這條路上越走越
遠(yuǎn),如果沒有這些干擾,我們無疑已經(jīng)在制造凝固汽油,黑進(jìn)政府網(wǎng)站并且徒手殺人了。盡管我們沒有把自己的能力發(fā)揮到極致,但事實(shí)是除了我們沒有其他人哪怕?lián)碛新曇赳詈掀鳌?/p>
盡管到那個時候我已經(jīng)經(jīng)歷了一些冒險和失敗,我還是缺少一些東西。我的想法總是要超前我自身能力好幾步-正如在“衛(wèi)星”一節(jié)里體現(xiàn)出來的。我需要一種把我腦海中想法表達(dá)出來的方式。我需要一個直接的介于我想象和現(xiàn)實(shí)之間的接口。
Fuck 生成器
真正的轉(zhuǎn)機(jī)出現(xiàn)在我十四歲的時候。我購買了一份PC Plus雜志,其中附贈了帶有完整版Borland C++編譯器的CD。我安裝了,并且認(rèn)真學(xué)習(xí)了雜志上的“hello world”教程。
就這樣,一個嶄新的世界在我面前打開了。物質(zhì)世界對于我想象力的限制消失了。我的創(chuàng)造力被解放了,我腦海中的大教堂要成為現(xiàn)實(shí)了!我該把這個新工具用于怎樣崇高的事業(yè)呢?很顯然,F(xiàn)uck生成器。
簡單而優(yōu)雅的Fuck生成器是一個命令行程序,也是我即”hello world”之后第一個里程碑。程序開始運(yùn)行后會提示用戶輸入一個數(shù)字n,然后它會輸出字符串”fuck”,n次。最后用戶被提示可以重復(fù)以上過程或是退出。盡管功能有限,我還是沉醉于我所品嘗到的成就。這是任何程序員都能享受到的一種快感,即看著機(jī)器執(zhí)行你的命令,不管這個任務(wù)有多簡單。它在運(yùn)行了,并且你知道為什么它能夠運(yùn)行。它除了在那里運(yùn)行不會做任何別的事。
過了些時日,另一期的PC Plus附贈了一個完整版的Borland Delphi。有了這個,我把程序升級為帶有窗口界面并且可以隨機(jī)生成彩色的4種不同的臟話。當(dāng)別的孩子在玩PlayStation的時候,我正在投身于一項(xiàng)更有意義和創(chuàng)造性的事業(yè),我在生成很多fuck。
到那時,一切都預(yù)示著我是注定要成大事的。我要向世人展示我真正可以做的事情。我的巨著
在90年代晚期,我為一家小型并且擴(kuò)張迅速的郵件訂購零售商創(chuàng)建了一個網(wǎng)站。一開始,這個站點(diǎn)只包含一些靜態(tài)的頁面——關(guān)于商品的小冊子,一個導(dǎo)航菜單和一個訪問數(shù)量計(jì)數(shù)器。
當(dāng)我們的訪問量越來越大時,我們決定加入電子商務(wù)功能。我們遍歷了一些現(xiàn)成的工具包,它們的質(zhì)量從差到極差不等。我印象中第一個版本大部分建立在擺弄cgi腳本以及怪異地把
不久后我們意識到,如果我們想要一個真正可用的甚至體面的在線商店,我們需要一個自定義解決方案。我想到了我過去的成功經(jīng)驗(yàn):fuck生成器系列,以及截至那時我所編寫的優(yōu)秀網(wǎng)站,這其中:我的 Manic Street Preachers吉他譜收藏網(wǎng)站非常具有權(quán)威性。我認(rèn)為是時候看看我能真正做些什么的時候了。我要自己從頭開始干。
從頭開始?即使那個時候開源框架已經(jīng)存在,我也不會知道他們。我有自己的計(jì)劃。我買了一本關(guān)于PHP和MySQL的書,一邊學(xué)習(xí)一邊著手搭建新的網(wǎng)站。
幸運(yùn)的是,這本書把一個非常簡單的購物網(wǎng)站作為它的核心例子。所有的部分都在那兒:“category.php”會列出一個目錄中的所有物品;“product.php”會顯示商品信息以及
把該商品加入購物車的按鈕;以及最重要的“cart.php”,它是所有奇跡發(fā)生的所在。這就是我想要的東西!
我孜孜不倦地學(xué)習(xí)這個例子,充滿自信地實(shí)現(xiàn)所有巧妙的而且毫無疑問也是最新潮的技術(shù)-那些方便的“mysql_”函數(shù);用于建立查詢的字符串連接函數(shù);把不同的函數(shù)放進(jìn)“functions.php”文件;通過加入“header.php”和“footer.php”來維護(hù)整個網(wǎng)站的一致性;為了代碼的快速運(yùn)行而回避了笨重的面向?qū)ο蟮脑O(shè)計(jì)方式(管它是什么玩意)。我的技能在飛速成長。
像一個人的王國一樣,我建造了高塔和迷宮般的地道。我每添加一個特性,就好像整個結(jié)構(gòu)在向天空伸展同時也向地下蔓延。顧客帳戶、商品評價、購買歷史、優(yōu)惠點(diǎn)數(shù)、帳單號、特殊優(yōu)惠、日志、A/B測試、支付信息加密,等等。一個蔓延的迷宮,一整個星系的函數(shù),大的小的,緩緩圍繞一個不變的核心:“cart.php”。
經(jīng)過八個月的激情工作,我終于完成了。
現(xiàn)在,你們這些讀者一定在期待我會詳述當(dāng)網(wǎng)站正式運(yùn)行時發(fā)生了怎樣恐怖的事情??峙挛乙屇銈兪恕?/p>
它成功運(yùn)行了。
最糟的方法
盡管我現(xiàn)在把這當(dāng)作我最糟的設(shè)計(jì),但是這個東西確確實(shí)是能夠運(yùn)行。它在每一個糟糕的教程,每一個反php的帖子里都能找到。攪成一團(tuán)的代碼?是的。不一致的數(shù)據(jù)和方法名稱?是的。介紹和業(yè)務(wù)邏輯混在一起?是的。魔幻數(shù)和全局變量?是的。
對我而言,面向?qū)ο蟮脑O(shè)計(jì)只是一堆不必要的開銷和公式化的代碼,并且有很多片面的理論支持我的觀點(diǎn)。我知道有關(guān)測試的所有,點(diǎn)擊一些你設(shè)計(jì)的特性,看上去不錯,上傳運(yùn)行。我不太知道別的架構(gòu),但是據(jù)我所知,我所采用的是最明智的方法。
一些事實(shí)能“證明”我所做的都是正確的:我從零開始,白手起家,用智慧創(chuàng)造了一個功能齊全的電子商務(wù)站點(diǎn)。更重要的,它運(yùn)行完好并且還在擴(kuò)張。
在我的眼里,我和那些寫了亞馬遜的程序員們沒什么太大區(qū)別。當(dāng)然亞馬遜要大一些,但是我沒有看到任何我的網(wǎng)站不能擴(kuò)張成那樣的理由--尤其考慮到我采用的高速運(yùn)行的架構(gòu)。
我認(rèn)為我的技術(shù)水平已經(jīng)到了巔峰了。并不是說我對學(xué)習(xí)新技術(shù)不感興趣了,我只是不再對此感到緊迫。畢竟我創(chuàng)造了一些不錯的產(chǎn)品。任何在此之上的東西只是附加獎勵,是蛋糕頂端的櫻桃而已。
回到地表
我很遺憾,我在這種心態(tài)下生活了好幾年。我只是將一小部分時間用在這個網(wǎng)站上,而把主要時間用在完全不同的領(lǐng)域。在之后多年的維護(hù)和偶爾添加特性的過程中,我確實(shí)意識到了之前做的一些選擇是有問題的。我意識到有時候要花很長時間才能找到我要找的文件。有時候當(dāng)我做一個改動時,一些看上去毫無關(guān)聯(lián)的地方會出現(xiàn)bug。
我的學(xué)習(xí)沒有停止,但它確實(shí)進(jìn)展緩慢。我意識到我曾經(jīng)寫的mysql函數(shù)是有風(fēng)險的,因?yàn)楹竺姘姹镜腜HP減少了對它們的支持。在一段時間里,我克服對此的恐懼的方法是堅(jiān)信我的無懈可擊的設(shè)計(jì)可以彌補(bǔ)這些風(fēng)險。畢竟我嘗試了所有形式的我能找到的SQL注入,一切看起來都沒有問題。
去年的一天我接到了一個緊急電話,網(wǎng)站掛了。所有的請求都得到500錯誤。在工程師們重新啟動并且分析了事故原因后,這被證實(shí)是一起來自國外的sql注入攻擊,是我從來沒見過的一種。
好吧,我想,這也許是我該轉(zhuǎn)向PDO的時候了。
覺悟
當(dāng)我坐下來準(zhǔn)備重寫所有的數(shù)據(jù)存取方法時,我意識到了一些深層次的問題。我意識到這將會很困難。而且我知道為什么它會這么困難。
因?yàn)檫@些方法散落在所有地方;因?yàn)槲覠o法知道是否會不經(jīng)意地破壞一些東西;因?yàn)榇a是如此不一致以至于我要小心地研究不同對象的細(xì)微差別;因?yàn)楹芏啻a和別的部分緊密相連,這也會導(dǎo)致我會不小心造成破壞。簡單地說,這將會很困難。不僅因?yàn)樗羞@些壞的實(shí)現(xiàn)方法,還因?yàn)槲覍λ鼈兯鶎⒃斐傻暮蠊狈︻A(yù)見。
所有的辯護(hù),借口,逃避都無法繼續(xù)下去了。我錯了。我不是那個幻想中的天賦卓越的程序員。這么多年來,我一直都沒有認(rèn)清這一點(diǎn)。
我的愚蠢已經(jīng)顯而易見,盡管這對我的自尊心是極大的打擊,但這也是很寶貴的一個教訓(xùn)。我通過親身經(jīng)歷(而且是非常痛苦的),學(xué)到了為什么做一件事的方法有對錯之分。這不僅僅關(guān)系到品味或者時尚。這不是比誰的方法更聰明。正確的方法可以在現(xiàn)實(shí)生活中找到,并且能讓你和那些使用你代碼的人的生活更好。錯誤的方法讓人沮喪,浪費(fèi)時間。我在這里不想說明哪些東西是組成“正確方法”的要素。只要說不是我做的那些就夠了。
真正的錯誤
我實(shí)現(xiàn)了PDO。同時開始第一次使用PHPUnit。我決不想嘗試通過單元測試去改造那樣的代碼。
現(xiàn)在我有意識地迫使自己無論何時都盡量去學(xué)習(xí)。我正在讀一些每個程序員都應(yīng)該讀的書。我在關(guān)注別人的博客。我在收聽播客。我會看會議視頻。我正在參加一些當(dāng)?shù)氐纳鐖F(tuán)并且在其中做演講。我在做副業(yè)并且挑戰(zhàn)自己學(xué)習(xí)新的技術(shù)。我在學(xué)習(xí)用正確的方法做事。
對你們所有獻(xiàn)身于這項(xiàng)事業(yè)中的人來說,有一個對我們很重要的有利條件。即編程是這樣一個完全抽象的活動,任何其他領(lǐng)域都會受到的現(xiàn)實(shí)世界中的限制在這里不存在。在這里,你的極限是你自己。
我要以一些真正的箴言結(jié)束這個故事。我在開始寫這片博客的時候正好剛看完第二版的《代碼大全》。在書的最后,第825頁的底部,作者準(zhǔn)確地描繪了我在寫這篇文章時的想法。可以說他只用了兩句話就表達(dá)我在這數(shù)千字里想表達(dá)的東西:
“作為一個初學(xué)者或者進(jìn)階者,這并沒有什么錯。當(dāng)一個有能力的程序員而不是領(lǐng)導(dǎo)者,這也沒有什么錯。真正的錯誤是,當(dāng)你知道應(yīng)該如何去提高時仍然選擇做一名初學(xué)者?!?/p>
第四篇:碼農(nóng)學(xué)習(xí)分析(知乎)
我寫了一篇碼農(nóng)入門的文章,希望對一些學(xué)生,或者想轉(zhuǎn)業(yè)的人有幫助。
這篇文章是我原創(chuàng)的,并且已經(jīng)先發(fā)到了另外一個論壇,這個論壇同學(xué)比較多,如果有興趣要當(dāng)碼農(nóng)了可以來瞧瞧。
昨天看到有一位鐵路工作的工程師說想要放棄現(xiàn)在穩(wěn)定的職業(yè),投入碼農(nóng)的懷抱,我覺得很多人把碼農(nóng)這個職業(yè)看得太高,也許是社會浮躁的氣氛造成的,我作為一名大漩渦的堅(jiān)定捍衛(wèi)者,入行也快8年了,有義務(wù)進(jìn)行一番科普,讓漩渦眾找準(zhǔn)自己的定位。
申明一點(diǎn),我說得一切都是站在我自己的角度,周圍的環(huán)境進(jìn)行闡述,可能有坐井觀天的情況,其他碼農(nóng)不認(rèn)同也希望說出您的觀點(diǎn),大家互補(bǔ)。自我介紹:
我以前得帖子介紹我自己不少了....還是簡單介紹一下,我自己畢業(yè)于某渣985的計(jì)算機(jī)學(xué)院,從畢業(yè)到現(xiàn)在工作接近8年的時間。標(biāo)題說了我自認(rèn)為是一名乞丐版的全棧工程師,所以我身上的技能包很多,有的比較精,有的比較淺,后面再介紹。因?yàn)槲医佑|的東西很多,所以對碼農(nóng)的各個方面都略知一二,各種文檔,各種語言,各種主流的設(shè)計(jì)模式都略知一二。我下面就把整個碼農(nóng)的框架以及里面細(xì)項(xiàng)寫出來,不敢保證非常準(zhǔn)確,但是至少是有實(shí)踐過的。
1.碼農(nóng)的角色 1.1 編碼人員
編碼人員會收到需求文檔或者設(shè)計(jì)文檔,被要求要實(shí)現(xiàn)什么樣什么樣的功能,然后進(jìn)行編碼實(shí)現(xiàn)和需求文檔,設(shè)計(jì)文檔要求一致的東西。編碼問題具體后面說。
1.2 設(shè)計(jì)人員(我們所說的系統(tǒng)架構(gòu)師其實(shí)就是高階的設(shè)計(jì)人員)設(shè)計(jì)人員分2類,一類是UI設(shè)計(jì)人員,一類是系統(tǒng)設(shè)計(jì)人員會收到需求文檔,被要求要做一個什么功能,要實(shí)現(xiàn)什么為目的,設(shè)計(jì)文檔包含系統(tǒng)架構(gòu),語言,數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)流向,安全性評估,可行性評估等等等,產(chǎn)出一份設(shè)計(jì)文檔交給開發(fā)進(jìn)行開發(fā)。1.3 需求人員
需求人員會和用戶或者產(chǎn)品經(jīng)理進(jìn)行需求訪談,引導(dǎo)用戶交出合理并且準(zhǔn)確的需求,準(zhǔn)確的邏輯,然后產(chǎn)生一份需求文檔,并將需求文檔交于設(shè)計(jì),進(jìn)行可行性分析。可行性分析通過則設(shè)計(jì)人員會開發(fā)進(jìn)行設(shè)計(jì),編寫設(shè)計(jì)文檔。需求人員要求必須能夠拿到準(zhǔn)確的需求并且傳達(dá)給設(shè)計(jì),因?yàn)橐坏┬枨箦e了,整個設(shè)計(jì)和開發(fā)都要重新來過,浪費(fèi)的人力物力可不是一點(diǎn)半點(diǎn)。用戶或者產(chǎn)品經(jīng)理提出問題,需求人員根據(jù)需求問題找到可以實(shí)施的解決方案或者優(yōu)化現(xiàn)有的作業(yè)流程。在完全需求的同時,提出的解決方案要盡可能的為設(shè)計(jì)開發(fā)考慮,降低設(shè)計(jì)開發(fā)成本。1.4 產(chǎn)品經(jīng)理(創(chuàng)意團(tuán)隊(duì))考察市面上的產(chǎn)品,針對自己的產(chǎn)品進(jìn)行規(guī)劃,要做哪些功能,什么樣的功能受眾大,什么樣的功能可能能打擊到競爭對手等等情況進(jìn)行分析,然后發(fā)展產(chǎn)品,對產(chǎn)品周期進(jìn)行規(guī)劃。產(chǎn)出為產(chǎn)品規(guī)劃書,產(chǎn)品生命周期,產(chǎn)品介紹等等相關(guān)文檔,并且和需求人員合作產(chǎn)生需求文檔。1.5 測試人員
當(dāng)然了就是對開發(fā)的功能,模塊,產(chǎn)品根據(jù)需求文檔進(jìn)行測試,有猴子測試,白盒測試,灰盒測試,黑盒測試,壓力測試,測試工具測試,自己編寫代碼測試等等等.....產(chǎn)生的文檔 就是 測試計(jì)劃,buglist文檔回饋給開發(fā)人員。補(bǔ)充一句,所謂的bug是指凡是和需求文檔不一致的結(jié)果都是bug,并不是代碼出了問題才叫bug。1.6 運(yùn)維人員
運(yùn)維人員就是有管理員權(quán)限,可以操控產(chǎn)品,功能的一些參數(shù)來管控,對產(chǎn)品和功能使用是非常熟練,并且會一些簡單的編碼和數(shù)據(jù)庫原理,第一線對系統(tǒng)產(chǎn)生的問題進(jìn)行處理并且修復(fù)數(shù)據(jù),如果能找出根源的問題就是優(yōu)秀的運(yùn)維。產(chǎn)出的東西有 troubleshooting 文檔,問題反饋文檔,另外很多運(yùn)維也會寫用戶說明書,因?yàn)樗麄儗ο到y(tǒng)是最熟的。
1.7 項(xiàng)目經(jīng)理(PM,PMA)這部分人不是嚴(yán)格意義上的碼農(nóng)角色,只是管理項(xiàng)目的進(jìn)度,風(fēng)險,人員,成本,協(xié)調(diào)資源(和建樓房的項(xiàng)目經(jīng)理沒有本質(zhì)區(qū)別)。這里就不寫了。2 工作流程
所以整個工作流程 大概就是這樣 用戶/產(chǎn)品經(jīng)理--->需求人員--->設(shè)計(jì)人員---->編碼人員----->測試人員----->運(yùn)維人員。不是指等級越高的人員編碼能力越強(qiáng),只是在上流的人員的容錯率很低,所謂差之毫厘謬以千里,上游錯了一點(diǎn)點(diǎn),下游必定錯得很慘。人員越多,也會導(dǎo)致流程越長,耗費(fèi)在溝通上的時間就越多,溝通上容易出錯的風(fēng)險就越大。所以很多公司基本是 設(shè)計(jì)/編碼 或者 需求/設(shè)計(jì)是同一個人?;蛘咭粋€人身兼數(shù)職,比如我,就是兼了所有角色.....3 碼農(nóng)的基本素養(yǎng) 3.1 邏輯能力
邏輯能力一定要強(qiáng)。邏輯能力可能有天賦的原因,可能也有后天學(xué)習(xí)的原因。邏輯能力強(qiáng)的人一般體現(xiàn)為數(shù)學(xué),化學(xué),物理等方面比較出眾,所以理科生轉(zhuǎn)碼農(nóng)會容易很多(比如碼農(nóng)里面有大量的自動化,物理系,數(shù)學(xué)系的學(xué)生),因?yàn)槔砜粕谶壿嫹矫姹挥?xùn)練得很多。雖然我大學(xué)是混過來的,但是高等數(shù)學(xué)上和下我都拿了90多分.....邏輯能力強(qiáng)會讓你在寫代碼的時候看到推算,各種算法,加減乘除的時候不會緊張,操作 鏈表,堆棧,數(shù)組的時候得心應(yīng)手。做需求分析的時候能夠抓到矛盾點(diǎn),能夠分析出流程,功能是否合理,是否能夠?qū)崿F(xiàn)等等等。所以邏輯能力是很重要的。3.2 溝通能力
溝通能力可以讓你快速融入團(tuán)隊(duì)。溝通能力體現(xiàn)在你能夠快速接受并且正確理解別人告訴你的事情,你也可以清晰并且準(zhǔn)確的表達(dá)出你自己的想法。這樣你的溝通成本就會大大降低,然后你就能夠花更多的時間在代碼的編寫,需求的分析上面,提升自己的工作效率。3.3 學(xué)習(xí)能力
舊的技術(shù)你可以通過一些例子,項(xiàng)目代碼,文檔然后快速進(jìn)行掌握,并且在項(xiàng)目上可以開始快速上手開發(fā)新功能。新的技術(shù)進(jìn)來,你有興趣花個人的時間去專研,并且能在你們團(tuán)隊(duì)第一個的搭建出模塊,平臺供你的團(tuán)隊(duì)成員學(xué)習(xí),使用,那么毋庸置疑你在哪個地方都會很吃香。
3.4 閱讀文檔能力(英文水平)很多舊技術(shù),新技術(shù)其實(shí)都是要靠閱讀文檔,和自己嘗試編寫代碼結(jié)合進(jìn)行學(xué)習(xí)的。這樣學(xué)習(xí)起來效率會很高,所以會閱讀文檔,并且理解文檔就顯得格外的重要的。對于舊的技術(shù)或者問題有很多中文文檔進(jìn)行闡述,但是更多的新技術(shù),新問題只有英文文檔進(jìn)行描述,這個時候你的英文水平就顯得格外重要了,因?yàn)楹玫奈臋n可以減少你學(xué)習(xí)的時間,提升你學(xué)習(xí)的效率,而大部分好的文檔其實(shí)真的都是英文寫的。所以要成為高階的碼農(nóng),英文是要有一定的水平的。3.5 搜索引擎的使用能力
其實(shí)現(xiàn)在碼農(nóng)這個職業(yè)現(xiàn)在使用搜索引擎是必不可少的,百度,Googel,github,stackoverflow,csdn都是比較主流的。我一直堅(jiān)信一個理論,你所做的東西你所遇到的問題肯定已經(jīng)有人遇到并且解決,你要做的就是去網(wǎng)上有目的的海底撈針,然后看別人是如何解決,你進(jìn)行復(fù)制和簡單修改。不要認(rèn)為這就是復(fù)制就能解決,前提是你要能找到在哪里可以復(fù)制。當(dāng)然大部分的東西還是英文的比較好,所以這里又考驗(yàn)?zāi)阌⑽乃降臅r候到了。(我們經(jīng)常調(diào)侃,現(xiàn)在已經(jīng)不是面向?qū)ο缶幊塘恕6敲嫦蛩阉饕婢幊?,網(wǎng)絡(luò)掛了,今天就不要做事了。)舉個簡單例子,我曾經(jīng)接收到一個需求,用戶經(jīng)常要把上萬的數(shù)據(jù)導(dǎo)入到系統(tǒng)里面,因?yàn)閿?shù)據(jù)庫是sql,而系統(tǒng)是.net的平臺,后來我google到可以使用bulkcopy來進(jìn)行處理,接收這個需求之前我是完全不知道bulkcopy的。這樣你在使用搜索引擎在完成任務(wù)的同時自己也得到了提升,學(xué)到了你周圍人都不知道的知識。3.6 態(tài)度
態(tài)度決定一切,你必須有好的態(tài)度,好的職業(yè)修養(yǎng),才能被人看得起。遇到問題不甩鍋,有責(zé)任心,是自己的東西就有一定要把它干出來為止的那種沖動,不眠不休的嘗試解決!我手底下曾經(jīng)有一個程序員,職高畢業(yè),也沒參加什么培訓(xùn)。邏輯能力,基本理論知識可以說是差極了,溝通也挺費(fèi)勁,如果是我去面試,這類人我一般來說是不通過的,不過是老板派給我的,我也只能收著。還好他大部分是做UI和H5的樣式,CSS3的動畫??墒呛髞砦野l(fā)現(xiàn)他的態(tài)度非常的端正,責(zé)任心很強(qiáng),自己也很有耐心去學(xué)習(xí)新的技術(shù)知識并且運(yùn)用到實(shí)際進(jìn)行解決。雖說進(jìn)入狀態(tài)花的時候有點(diǎn)長,他寫的 代碼也是亂得不行,但是能幫到我解決問題,而且態(tài)度很好,不管工作難或者不難都不推諉。所以最后還是可以的,現(xiàn)在也慢慢開始成長,轉(zhuǎn)到了其他團(tuán)隊(duì)。3.7 定位
其實(shí)碼農(nóng)是屬于第三產(chǎn)業(yè),服務(wù)行業(yè),你怎么樣讓你的上司爽了,讓用戶爽了,你就牛B了。不一定要用寫代碼的模式才可以,好的創(chuàng)意,好得理念,好的溝通,好的態(tài)度,都在這范圍里面。寫代碼做功能做產(chǎn)品的終極目的就在于做服務(wù),提供服務(wù)。你能搞清楚你服務(wù)的對象,搞清楚你服務(wù)對象想要什么,你能提供什么服務(wù)滿足他們,并且你實(shí)現(xiàn)了,你就成功了。最后來說說我的整個成長過程,給大家一個啟發(fā)。
4.1.最開始入行,接手一個asp.net + sql server的項(xiàng)目,開始學(xué)習(xí)asp.net + sql server
4.2 asp.net + sql server 有了一定能力,并且熟悉了業(yè)務(wù),開始做一些簡單得設(shè)計(jì),和需求,開始學(xué)習(xí)設(shè)計(jì)模式,什么工廠模式,批處理模式,單例模式,建造者模式等等等....并且編寫 概要設(shè)計(jì)文檔和詳細(xì)設(shè)計(jì)文檔
4.3 本來開始做設(shè)計(jì)了,一心要往構(gòu)架師上靠,可是公司缺需求分析人員,怎么辦沒辦法,自己頂上,開始編寫 BRD ,TBD,SOW 等等一些列需求人員的文檔并且和用戶溝通需求,提高自己提出解決方案的能力。
4.4 好了,有項(xiàng)目來了,我最有經(jīng)驗(yàn),組織就決定你來當(dāng)項(xiàng)目經(jīng)理了。好了 又要開始做項(xiàng)目經(jīng)理的事情,寫項(xiàng)目風(fēng)險評估報(bào)告,寫人員評估報(bào)告,每天寫項(xiàng)目進(jìn)度,和各個部門leader進(jìn)行撕逼,拿資源(真新累,不想當(dāng)項(xiàng)目經(jīng)理)。
4.5 好了 公司決定要做一個產(chǎn)品,你這方面經(jīng)驗(yàn)最多,你來當(dāng)。好了開始寫競品分析報(bào)告,產(chǎn)品生命周期,產(chǎn)品發(fā)展概要,產(chǎn)品功能預(yù)想......4.6這個產(chǎn)品不行,公司決定組織一批精英另外做一個產(chǎn)品,你來負(fù)責(zé)web端和移動端,對就你一個人負(fù)責(zé)。日了狗了!但是我不會java 不會 Object-C 我做毛的移動端啊。好了發(fā)現(xiàn)市面上流行用 hybird的開發(fā)模式 用 H5+簡單原生來進(jìn)行移動開發(fā)。研究了國內(nèi)的DCloud 和 國外的 Cordova Apache,開始一步學(xué)習(xí),H5和 cdth加上簡單的Object-C 和 java,畢竟C#好幾年經(jīng)驗(yàn),面向?qū)ο笳Z言學(xué)起來快。cdth也還行。后來也算做出來點(diǎn)東西了。
4.7 嗯,美國有項(xiàng)目,但是我們?nèi)耸植粔?,你一個人去國外把這個項(xiàng)目吃了吧.....好的,我現(xiàn)在一個人只身來到國外,沒有其他人員的支持,得益于我 乞丐版 全棧工程師 這個項(xiàng)目也順利完成。就在今天!本來已經(jīng)計(jì)劃好了下周回國,可是國內(nèi)一個電話過來,“你簽證停留時間明年才到期吧,另外有一個州也需要你,機(jī)票給你改簽了,你直接飛過去,再干2個月再回國.....回國之后去把加拿大簽證辦了吧......” 4.8 我的技能包
4.8.1 C# 方面: ASP.NET(精通)Winform(熟練)WPF(熟練)(其他.net wcf ws 等等也算比較熟了)4.8.2 其他語言 : H5(熟練)cdth(熟練)Java(入門)Object-C/Swift(入門)abap(入門)
4.8.3 數(shù)據(jù)庫 : SQL SERVER(精通,如果我說我是DBA,別人也信),mysql(熟練),DB2(入門),Oracle(入門)4.8.4 網(wǎng)絡(luò)以及安全編程:AES DES加密,ajax以及跨域調(diào)用,網(wǎng)絡(luò)爬蟲,https,ssl,sso,socket,web socket,web worker,sql注入,html注入等都做過一些開發(fā)或者學(xué)習(xí)。
看了下,只有ASP.NET 和 SQL SERVER 我敢說精通,這兩個基本不會難倒我(也可能有萬一,被打臉也正常.....),其他的幾個熟悉的雖然我很有經(jīng)驗(yàn),但是也不敢寫精通,沒自信。因?yàn)樵诖a農(nóng)的世界,當(dāng)你學(xué)習(xí)得越多,你就會發(fā)現(xiàn)你知道的越少。打個比喻,碼農(nóng)的知識是海洋,我現(xiàn)在學(xué)到的也不過是一葉扁舟而已。
結(jié)論:Win,安卓,IOS,數(shù)據(jù)庫我都能開發(fā)。不分什么前端后端。需求分析,系統(tǒng)設(shè)計(jì)我也都能自己做,所以我可以一個人在沒有任何支持下完成項(xiàng)目。也喜歡研究一些新的東西,學(xué)一些我不知道的。因?yàn)樾袠I(yè)的原因,我從來沒接觸過C 和 C++,不過真的有機(jī)會去做的話,我也能很快上手。
4.9 其他一些小事情我稍微炫耀一下
4.9.1 優(yōu)化一個計(jì)算邏輯,以前一直是30-35分鐘計(jì)算完,我優(yōu)化之后只需要3分半(其實(shí)優(yōu)化說起來很簡單,就是把工廠模式改成了批處理模式,但是代碼確實(shí)寫了太多,也需要改表結(jié)構(gòu),用空間轉(zhuǎn)換時間)。
4.9.2 一天時間就完成了微信平臺的開發(fā)(在完全不懂微信平臺的情況下,周圍人都不會),可以用微信平臺和公司內(nèi)網(wǎng)數(shù)據(jù)交互,并且做出了案例,以后大家可以根據(jù)我的案例進(jìn)行微信平臺延生功能的開發(fā)。4.9.3 各種優(yōu)化數(shù)據(jù)庫,什么查詢3分鐘變查詢3秒,處理數(shù)據(jù)10分鐘變處理數(shù)據(jù)10秒。
4.9.3 被美國這邊看上,希望我留下來常駐(用綠卡誘惑我....)。4.9.4 等等等.....5 轉(zhuǎn)行建議
5.1 你至少含有3-4項(xiàng)碼農(nóng)的基本素養(yǎng),如果你是文科生或者邏輯理解能力較弱,請慎重考慮。
5.2 學(xué)習(xí)一門語言最好能找到一些成熟的框架,在框架上依樣畫葫蘆,其實(shí)就是照抄完成想要的功能,在抄的同時能做適當(dāng)?shù)男薷摹?.3 第一份碼農(nóng)的工作慎重選擇,因?yàn)榈谝环荽a農(nóng)的工作大概率的決定了你以后的方向以及你可能高度。第一份工作最好要找到團(tuán)隊(duì)協(xié)助,周圍有編碼氛圍,隨時可以進(jìn)行技術(shù)討論或者交流環(huán)境的公司。這樣你的成長會很快,否則你在入門的時候舉步維艱,會讓你度日如年。
5.4 學(xué)習(xí)碼農(nóng)是需要堅(jiān)持持續(xù)學(xué)習(xí)的工作,不斷的接觸自己不懂,不斷的提高自己,不會是因?yàn)槟阌袔啄杲?jīng)驗(yàn)了就可以吃老本的,如果有這種心態(tài)遲早會被淘汰的。
5.5 3分鐘熱情的人就不要來轉(zhuǎn)了,轉(zhuǎn)這行是需要花大時間,大精力,耐得住寂寞,受的了孤獨(dú)的人才行。
5.6 能找到一個帶你入門的啟蒙老師你轉(zhuǎn)行會非常有效果。5.7 干碼農(nóng)不一定非要寫代碼,如果有條件,你可以當(dāng)猴子測試入門,你覺得你文檔能力,理解能力,溝通能力強(qiáng),你可以嘗試做需求分析,也可以先學(xué)一些系統(tǒng)知識,從運(yùn)維入手。
5.8 基礎(chǔ)理論知道是比較重要的,有可能的話盡量多得進(jìn)行了解。5.9 如果你英文厲害,建議直接閱讀英文文檔/書籍進(jìn)行學(xué)習(xí)。碼農(nóng)誤區(qū)
6.1 加班多。
加班多最大的原因在于你拿的任務(wù)是和你當(dāng)前能力不匹配的,一個好的碼農(nóng)效率比一個差的高了不止10倍。好的碼農(nóng)半天做完的事情,差的可能就需要一周。因?yàn)椴灰粯拥乃枷?,不一樣的?jīng)驗(yàn),花在找資料,做設(shè)計(jì),寫代碼的時間差距是非常大的。所以你加班多 1.你是大牛,真的是事情多并且deadline要到了。2.當(dāng)前的工作難度比你能力高,你需要查找大量資料來完成,或者寫了大量的冗余代碼,冗余設(shè)計(jì),代碼寫得不嚴(yán)謹(jǐn),BUG太多,甚至不知道BUG出在哪里。3.其他團(tuán)隊(duì)成員拖累了你的進(jìn)度。我的經(jīng)驗(yàn)看來,大部分加班都是因?yàn)?第二個原因。所以通常說來(當(dāng)然有例外)能力越強(qiáng)的人加班越少,加班多說明工作效率太低,能力匹配不上你接受到的任務(wù)。6.2 碼農(nóng)是吃青春飯
碼農(nóng)不是青春飯行業(yè)。碼農(nóng)只是一個需要不斷進(jìn)行學(xué)習(xí)的行業(yè)。年齡大了不能代表學(xué)習(xí)能力差,年齡大的碼農(nóng)有大量的編碼設(shè)計(jì)經(jīng)驗(yàn),在學(xué)習(xí)新技術(shù)的時候就已經(jīng)領(lǐng)先人一步了。當(dāng)然了你說年齡大了,精力就不夠好了。哪個行業(yè)不一樣的?我這次到美國,看到了滿頭銀絲的碼農(nóng),一樣干得挺好。所以碼農(nóng)本身并不是一個青春飯,是一個需要不斷進(jìn)行學(xué)習(xí)不斷進(jìn)行提升的行業(yè)。年齡大了不一定是非要轉(zhuǎn)管理,做技術(shù)也是可以的。
好了,花了一下午,打了這么多出來。這都是一家之言,如果你覺得對你有啟發(fā),你就看看,你覺得都是屁話,你就無視好了。其他資深碼農(nóng)也可以提出你們的看法,畢竟我只是處在我現(xiàn)有環(huán)境,有坐井觀天的可能性。
備注一下,虎撲為了防止js注入,用cdth替代了 Java!!Script
第五篇:黑馬程序員:PHP零基礎(chǔ)同學(xué)如何學(xué)習(xí)
零基礎(chǔ)大學(xué)生們該如何學(xué)習(xí)php?
我們都知道,php語言作為一種專業(yè)建站的語言,沒有華而不實(shí),而是經(jīng)受住了時間考驗(yàn),成為一種值得學(xué)習(xí)的語言?,F(xiàn)在國內(nèi)眾多的php學(xué)校也說明,php語言在當(dāng)今有著廣泛的市場需求。那么零基礎(chǔ)的大學(xué)生們?nèi)绾螌W(xué)習(xí)php呢?
對于零基礎(chǔ)的大學(xué)生們來說,學(xué)習(xí)php肯定是非常需要毅力的。任何語言的學(xué)習(xí)都不可能一蹴而就,而是需要花大量時間,消耗大量精力才能學(xué)會的。也并不是報(bào)了某個班就一定能夠?qū)W會。這絕不是打消想立志從事php從業(yè)的同學(xué)的積極性。想想學(xué)會php,要接觸的東西實(shí)在是太多,不僅html標(biāo)記,div+css,js這些前臺知識需要懂得,而且php語言,samrty模版,ajax,jquery,mysql,linux等等也都需要學(xué)習(xí)和了解,就是應(yīng)用工具如框架,也不是一天兩天就能夠掌握的。
學(xué)php難嗎?難!但是任何一門技術(shù),如果輕易就能夠讓人學(xué)會,那也不會稱作為技術(shù),因?yàn)槟菢?,工作的可替代性太?qiáng)了。技術(shù),只有難學(xué)才會更有價值。學(xué)php有沒有技巧,當(dāng)然有,這也是我在這篇文章想說明的。
php學(xué)習(xí)第一要點(diǎn):心態(tài)。雖然目前php語言市場火爆,而且php語言相對于其他的語言來說也更容易學(xué)習(xí),但是千萬別把php想的太簡單,不要全信培訓(xùn)學(xué)校的宣傳,仿佛零基礎(chǔ)的人也能夠隨隨便便就將php學(xué)會。失敗的案例肯定不少。當(dāng)然我們也不要把php想的太難,既然你想從事這方面的工作,那么就要準(zhǔn)備全力以赴,破釜沉舟。4個月學(xué)會不會,那就堅(jiān)持到5個月,5個月還不會,那就堅(jiān)持到6個月??傆幸惶欤銜嬲莆誴hp知識,拿到自己滿意的薪酬。
php學(xué)習(xí)的第二要點(diǎn):就是學(xué)習(xí)方法。在這里,建議大家還是報(bào)一個班。一個人學(xué)習(xí)php,太難,如果說有一群人一起來學(xué)習(xí),就能夠營造出一種學(xué)習(xí)php的氛圍,有老師教,學(xué)習(xí)php碰到的問題也可以得到解決。在這里,就會碰到一個問題,那就是一個班,有零基礎(chǔ)的,有從事過這方面工作的,php水平可謂是參差不齊,如果是一個零基礎(chǔ)的同學(xué)學(xué)習(xí)php,你如何跟上學(xué)校的講課進(jìn)度? 這里就是我要講的學(xué)習(xí)方法,在我們報(bào)班前,可以先去網(wǎng)上下載php學(xué)習(xí)的相關(guān)視頻,比如網(wǎng)上非常流行的韓順平的php系列視頻(聲明:韓老師沒給我啥好處費(fèi),我也不是托,隔著大老遠(yuǎn),我連他老兄的面都沒見過的說-_-),就講的非常好。韓老師的視頻講的很深入、生動,而且有筆記可供下載學(xué)習(xí)。如果我們把韓老師的視頻都看了一兩遍再去報(bào)班學(xué)習(xí)php,效果肯定和沒看視頻效果不一樣。
php學(xué)習(xí)的第三要點(diǎn):那就是堅(jiān)持堅(jiān)持再堅(jiān)持。抵御誘惑,ASP/PHP/JSP/.NET的對比也許會讓我們新手無所適從,也許學(xué)了一半PHP,我們又開始打C#的主意,或者有人說JAVA很強(qiáng),這個時候的我們絕對不能動搖,哪怕我們真想學(xué),也得學(xué)會了PHP,然后再學(xué)。見異思遷是最不可取的,狗熊掰玉米就是這個道理,如果經(jīng)常中途放棄,只能是一無所獲,還浪費(fèi)了N多的時間和經(jīng)歷。當(dāng)我們花費(fèi)了大量精力后卻又放棄了php,相信我們的心里面會很難過,對未來又會陷入到迷茫中。如果不想有這種體驗(yàn),那就堅(jiān)持學(xué)會php吧。