本篇最後由 brotherlamp 於 2015-1-13 13:45 編輯 一個初級程式設計師真實的故事
我們正在和客戶開會,他提出了一個有關於專案的想法。他想讓我們提供他一個能支援其專案技術要求的系統架構草案。關於這一點,我也明確地告訴他,增值開發需要對架構重新調整。
當我提及找一個合適的架構也是一個需要學習的過程,他一下子打斷了我,並說了下面這句話:
難道我還得支付你學習的費用嗎?
為了節約時間,我告訴他,我指的是業務領域,我們只有充分理解之後才能提供正確的架構。
你希望你的專案是由一個不熟練的網站開發團隊的嗎?
除非你高薪外包,否則大多需要一個軟體開發團隊為你工作。如果這個計畫已經跨越了一年或更多的時間,你會怎麼看待這個似乎一直沒有提升水準的團隊?
軟體開發是公認的知識驅動型產業之一,然而很多人不知道為什麼會認為開發人員很容易掌握解決任何給定問題所需的一切技能。
程式語言不斷地進化。關係型資料庫不斷增加新的功能。新出來的NoSQL資料庫可能大多數人都不曾用過。成功的框架不斷地推出新的版本。新技術(例如響應式程式設計和微服務)出現的同時,其他一些以前我們不屑一顧的技術則不斷地增加其魅力(例如函數式程式設計)。
想要掌握所有的技術和方法,不花時間是不可能的。
什麼時候應該考慮提升程式設計師的水平?
當然也有那種對程式設計充滿熱情的程式設計師會將他們的業餘時間都用在了看書、閱讀技術文章、學習新技術上面,但你不能否認的是,這樣的例子真的不多。
大多數程式設計師會選擇在工作過程中學習所有需要使用的知識,而如果你不能給他們投資,那麼他們在這個團隊中永遠不會成長。
最適合的時間和地點是在工作時學習軟體技術。
遺憾的是,並不是每個在這一行的人都同意我的這個看法。企業主不願意花資源(時間和金錢)來培養他們的開發人員。
這可能是看待問題的角度不同,因為很多人覺得這種投資是得不到任何直接或間接回報的——純粹是在浪費資源。但是如果你計劃周密,它就很容易變成一種有利可圖的投資。
以盈利為目的的學習
高品質的軟體需要紮實的知識和專業性的判斷,但是積累技能需要的並不僅僅是閱讀。你得成為一個積極主動的學習者,用最大的限度去獲取知識。
我曾經是個被動的學習者,只是閱讀書籍和文章,雖然知道個大概,但實際上並沒有什麼大的進步。
當我提筆寫這篇部落格的時候,我發現教學相長也是學習技能的好方法。
當我成為一個活躍的StackOverflow的使用者時,這種感覺就更加明確了。
當我開始做一個開源專案時,我終於明白,原來學習只是艱苦工作的副作用。
上面這些經驗讓我深深理解了什麼是主動學習。
從商業角度看,我們不難預見,這類投資的收益可能來自:
一個更熟練的開發團隊能在失敗風險更低的情況下操作更加複雜的項目。
在掌握了一定的技術之後,可以為大家提供專業的訓練和諮詢服務。
寫書,透過自助出版程序出售。
還有一點就是,專業類的技能總是特別暢銷。
投資開發技能絕對物有所值。很多開發人員都喜歡那種能促進自我成長的工作環境,所以這招其實也有利於留住員工。
開始這個學習的旅程並沒有人們想像的那麼困難,以下我將介紹一些我非常欣賞的有關於主動學習的活動:
準備訓練教材
比方說,你想要在你的公司推廣特定的核心技術技能,那就可以分配給部分開發人員去研究和準備有關於這個主題的培訓材料。
工作坊的效果會比一個簡單的簡報好。在準備好培訓教材之時,其實你已經對相關知識和訓練基礎有了一定的累積。然後就可以就此技術開始提供培訓或諮詢服務了。
公司部落格
每一家軟體公司都有其累積的經驗,但是很少人能真正和其他人分享。這時候,開個公司的技術部落格或能有助於彼此之間的交流。高品質的部落格可以顯示出你的專業知識和專業能力。
你也可以與DZONE/JavaCodeGeeks建立策略作夥伴關係,這樣也可以促進你的業務發展。
在StackOverflow回答問題
StackOverflow的作用很多人都會低估。如果你真的想要成為某個領域的專家,那麼你就應該開始往那個特定的方向回答問題。在你回答問題的同時,也在鞏固自己的知識領域。
總而言之,重複是學習之母。
開源專案
如果你想要提升你的設計和編碼技巧,那麼你就應該踏足開源專案。
框架的作者大多非常地嚴謹,他們的程式碼審查可以教你很多最棒的程式設計實踐。如果你的公司常常需要使用某一種開源技術,那麼回過頭去好好學習一下是很有必要的。對待框架問題最好的方法就是老實地解決掉它。
沒有人比它的維護人員更了解這個框架的了。
寫文章和賣書
你可以將你的經驗都概括在書中。寫書也是一個非常有趣的學習過程。只有當你寫完的那一刻,你才能說你真正掌握了這方面的內容。
亞馬遜提供了一個自助的出版程序,有需要的話可以它的幫助。
結論
學習可以讓你的公司增加競爭優勢。產品代表的就是公司,軟體產品的品質反映了開發團隊的專業程度。
最後,我要告訴你的是,你投資的並不是個人,也是在投資自己的公司。
免費領取LAMP兄弟連原創PHP影片教學光碟/《細說PHP》精要版,詳情諮詢官網客服:http://www.lampbrother.net
大家可以訂閱一下郵件,我會時不時的跟大家分享IT相關教學及書籍。
http://list.qq.com/cgi-bin/qf_invite?id=ea7d919ad263169bce2be53a3e16da0f0ec55ac36513c68e
|

PHPSession失效的原因包括配置錯誤、Cookie問題和Session過期。 1.配置錯誤:檢查並設置正確的session.save_path。 2.Cookie問題:確保Cookie設置正確。 3.Session過期:調整session.gc_maxlifetime值以延長會話時間。

在PHP中調試會話問題的方法包括:1.檢查會話是否正確啟動;2.驗證會話ID的傳遞;3.檢查會話數據的存儲和讀取;4.查看服務器配置。通過輸出會話ID和數據、查看會話文件內容等方法,可以有效診斷和解決會話相關的問題。

多次調用session_start()會導致警告信息和可能的數據覆蓋。 1)PHP會發出警告,提示session已啟動。 2)可能導致session數據意外覆蓋。 3)使用session_status()檢查session狀態,避免重複調用。

在PHP中配置會話生命週期可以通過設置session.gc_maxlifetime和session.cookie_lifetime來實現。 1)session.gc_maxlifetime控制服務器端會話數據的存活時間,2)session.cookie_lifetime控制客戶端cookie的生命週期,設置為0時cookie在瀏覽器關閉時過期。

使用數據庫存儲會話的主要優勢包括持久性、可擴展性和安全性。 1.持久性:即使服務器重啟,會話數據也能保持不變。 2.可擴展性:適用於分佈式系統,確保會話數據在多服務器間同步。 3.安全性:數據庫提供加密存儲,保護敏感信息。

在PHP中實現自定義會話處理可以通過實現SessionHandlerInterface接口來完成。具體步驟包括:1)創建實現SessionHandlerInterface的類,如CustomSessionHandler;2)重寫接口中的方法(如open,close,read,write,destroy,gc)來定義會話數據的生命週期和存儲方式;3)在PHP腳本中註冊自定義會話處理器並啟動會話。這樣可以將數據存儲在MySQL、Redis等介質中,提升性能、安全性和可擴展性。

SessionID是網絡應用程序中用來跟踪用戶會話狀態的機制。 1.它是一個隨機生成的字符串,用於在用戶與服務器之間的多次交互中保持用戶的身份信息。 2.服務器生成並通過cookie或URL參數發送給客戶端,幫助在用戶的多次請求中識別和關聯這些請求。 3.生成通常使用隨機算法保證唯一性和不可預測性。 4.在實際開發中,可以使用內存數據庫如Redis來存儲session數據,提升性能和安全性。

在無狀態環境如API中管理會話可以通過使用JWT或cookies來實現。 1.JWT適合無狀態和可擴展性,但大數據時體積大。 2.Cookies更傳統且易實現,但需謹慎配置以確保安全性。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

Atom編輯器mac版下載
最受歡迎的的開源編輯器