語言自己:
1. 工業標準
網頁標準有w3c控制,尤爲是瀏覽器的開發,全部主流的瀏覽器都會自覺符合這個組織的標準,固然這些開發商自己就是這個組織的成員。因此新的HTML5,CSS3,ES6 javascript的新特性的獲得順利推進,讓大部分主流瀏覽器都支持它,w3c功不可沒.
PHP有PHPFIG組織,雖然不是強制性的,可是不少新的框架和庫都自覺遵照這個組織的編程標準
Java, C語言都有各自的工業標準準則,來維護各自工業標準。
這個標準其實不是強制性的,雖然不少程序員在本身工做上,不遵照這些工業標準,可是要推出新的模塊的話,不遵照這些工業標準的模塊,是沒有人會去使用的。現在是否是面向標準編程,是體現一個程序員是否專業,一個模塊是否是專業模塊的一個重要指標。
2.第三方模塊走紅
各類語言的框架和庫,可能比本身的語言還出名,好比css的Bootstrap,javascript的jQuery;一個好的框架和庫甚至能夠推進這個這個語言的發展,好比說PHP的Laravel框架,Javascript的jQuery.
模塊化的發展,大大加快了開發的速度。不少人也願意開發各類框架和模塊,不但能夠鍛鍊本身的開發技能,也是一種展現本身的能力。
過去,程序員要成名,要開發出有用的軟件,好比說求伯君開發出了wps,牛;張曉龍開發出了foxmail,牛。
如今,程序員要成名,開發出一個你們都會用的框架和模塊也行。好比Evan You開發的vue.js,玉伯開發的seajs。
3.模塊化編程和依賴管理
在2010前,依賴管理工具只是個很時髦的概念,你們習慣手動到庫的官方網站上下載後手動導入到項目中。升級也是個麻煩事。因此通常你們也就下載一兩個必要的庫,其餘都本身手寫完成。
現在,依賴管理工具已是必備的了,你們再也不手動導入庫了;並且是能找到第三方模塊的功能,就再也不本身編寫了,通通用工具導入項目;本身編寫的程序代碼,能模塊化的代碼通通模塊化,甚至是獨立出來,網上開源,而後使用依賴管理工具進行管理導入到本身的項目中。
這樣好處也明顯:
- 代碼量減小
- 加快開發速度
- 高度解耦
- 定位bug容易,改動影響小
- 寫單元測試容易
現在你們更加願意寫小模塊,而不是重複造輪子了。javascript
4. 框架使用
更願意先選一個合適的框架,再開始編程,而不是全部功能本身從頭開始寫了.
- javascript的框架多了,vue,react, backbone,angularjs等;
- css有bootstrap,fundation等;
- PHP有laravel,cakephp等
- C#有MVC
- Java有spring+hibernate+struts
框架要先選好,模塊的話,等須要慢慢加就好了。php
5. 測試代碼
2006年,單元測試在開發過程當中,重要性不是很大,無關緊要,程序完成,功能能用就行。
現在的代碼,沒有單元測試部分,這個工程就不能算完結。甚至是,測試驅動開發已經成爲主流,先寫測試代碼,而後開發。
測試代碼的發展有不僅僅是單元測試部分。單元測試,集成測試,功能測試,性能測試,壓力測試等等,都在開發過程當中佔了極大的位置。之前測試都是由專門的測試員進行人工測試,或者他們負責測試;現在單元測試和集成測試都是要開發者本身寫。
6.跨設備,跨平臺
Java提出的跨平臺,一次編譯處處運行的夢想,其實至今未很好的實現。可是現在這個跨設備,跨平臺編程趨勢卻愈來愈明顯了。
跨設備,主要是指桌面和手機,尤爲是針對顯示器的最佳實踐是層出不窮,現在是響應式成爲了主流。
跨平臺,出自於Java的一個概念,現在已經算普及了,尤爲是JavaScript,桌面,手機,服務器,瀏覽器,嵌入式都能看到javascript的身影,這大大歸功於JavaScript標準化的推廣。跨平臺過去是說一次編譯處處運行;現在是隻要這個平臺支持這個語言或標準,就能用。現在的跨平臺編程,更講究特性檢查這個功能,若是你這個平臺沒有這個特性,那麼就關閉這個有這個特性的功能,但其餘功能還能夠繼續使用。
從此,各類設備層出不窮,VR頭盔,AR眼鏡,巨型屏幕,物聯網等等,跨平臺會有進一步的發展。
工程方面的:
1.工具化
我以爲工具化很是突出了,凡是能工具完成的事情,絕對不手工完成。如下幾個方面都是能夠找到相應工具,幫助開發者管理代碼質量
- 代碼風格檢查
- 工業標準檢查
- 代碼整理
- 代碼複雜度檢查
- 單元測試覆蓋率檢查
- 依賴管理
- 壓縮代碼
- 重複代碼檢查
- 無用代碼檢查
等等,css
2. 工程化
工程化也是近年來最最突出的一個發展趨勢,過去只是選擇性的,如今是必須的。
工程化是以工具化爲基礎的,沒有工具,那麼工程化也無從談起。
工程的核心就是流程自動化,又稱之爲構建,這些包括了:代碼質量檢測,代碼壓縮,代碼合併,代碼優化,代碼編譯,單元測試等等部分。構建就是把這些以工做流程的方式組合起來,而後用一個命令行運行這整個流程。它有點像批處理,可是是程序開發中使用的特殊批處理
在網頁編程的過程當中,如今又流行「實時編程」,就是當你在保存代碼的時候,以上的構建流程就開始工做完成後自動刷新瀏覽器,保證新代碼效果馬上反應在瀏覽器上。
如今,你去github的項目庫中找軟件,首先翻看,是否有工程文件,看看它的構建流程是什麼,就知道這個項目的專業程度和項目的質量了
而本身,沒有一個配置一個工程化的流程系統,都很差意思說本身在作軟件工程。
3. 自動化
自動化是以工程化爲基礎的,工程化自己就是一種流程自動化。而自動化有在工程化的過程當中更進一步的自動化。
持續集成就是全自動化的一個終極體現。他的主要流程是:版本控制庫->構建->測試->報告.
持續集成有點像windows的定時任務,可是它是程序開發專用的定時任務。
持續集成的特色就是全自動,一個項目一次配置好了後,要求不變的話,就不用管了;而後開發者不斷把代碼加入到版本控制庫裏就好了,每當庫有新代碼時候,持續集成就會下載代碼進行構建;當它完成構建和測試後,若是測試沒有經過,就會報告給你,而後你根據報告結果進行修改代碼。因此你每次往版本庫加的新代碼時候,持續集成就會全自動的幫你構建和測試代碼,儘快的通知你代碼的問題。這樣程序員就能夠更加集中精力編寫功能代碼和測試代碼,而不用擔憂新代碼是否會影響到過去的代碼了。
持續集成在多人一塊兒開發的時候,更是有用,誰上傳的代碼沒經過測試,能立刻知道。這樣保證多人項目在代碼順利合併,體現「持續集成」的功效。
另外還有個持續部署,其實就是持續集成在測試成功後部署上產品服務器上的流程。現在有些網站一天就要部署幾十次,有了持續部署後,部署多少次都毫無壓力。
工具化,工程化,自動化的關係挺有意思,前者是後者的基礎,然後者卻極大推進了前者的發展。它們是相互積極做用,相互推進了對方的發展,造成了一個很好的良性循環
其餘方面:
1. 版本控制,git,github
版本控制在編程界中的地位是愈來愈重要了。在編程界中有個說法:沒有版本控制的項目,就等於沒有這個項目。
版本控制的工具不少過去有svn,現在git的強大,用的人也是愈來愈多,而它和github的相同做用下,對編程界的積極影響和積極推進,是使人沒法忽視的。好比幾乎全部的依賴管理工具的庫下載源,都是和github綁定的, 就這一點來講,github的重要性在IT就不可估量。
而github上和git的方便管理,上傳,查看,統計,bug報告等功能更是極大地推進了程序員之間的合做;github上的開源更是改變了開源軟件對世界的影響力。
github不是git的所有,git也不是版本控制的所有,本質上來講,github只是一個網站而已;而後github確實又是這個編程世界不可缺乏的一個重要的模塊,已經成爲了一個不可或缺的組成部分了。甚至github已經跳出了編程界,成爲了一個世界級的不可或缺的服務平臺了。然而github是2008年創建的,真正開始流行是在2012年的。在2015年google宣佈關閉本身的google code。可見github的影響力,以及在業界的重要程度了。
2.生態圈意識 生態圈意識在業界是愈來愈強了,它應該和編程工具化和工程化有極大的關係。一個語言,框架或者庫的出現,人們用它們,不可是由於它們自己的強大,更是由於它們背後的生態圈。 好比說人們選一個javascript的框架,選react仍是選ember.js,更可能是看支持他們的生態圈如何,react是有facebook支持的,更有不少程序員爲它開發相關工具和庫以及有不少文檔教程。這樣react的生態圈就很大,會讓更多人願意選擇react做爲第一開發框架。而ember.js相對來講生態圈小,選擇它的人可能就不會不少。 選語言也同樣,選javascript編寫爬蟲仍是選php編寫爬蟲仍是用python?更多的是看他們的生態系統了,python的爬蟲庫強大且豐富,因此更多人選用python編寫爬蟲。 一個新的語言出現,成熟與否,看的就是它的生態圈了,好比是否有測試框架,是否有mvc框架,成熟的時間庫,數據庫sdk等等,這些都是其必要的生態圈組成部分。