導航:首頁 > 程序命令 > 程序員被催改方案

程序員被催改方案

發布時間:2025-03-24 05:15:32

㈠ 一名996程序猿的一天,是如何度過的呢

其實程序員在上班的時候並不是一直都坐在電腦前,寫編程需要有一定的靈感,所以程序員很多時間都用在了思考上。程序員最痛苦的事情就是無止境的加班,每當有什麼活動的時候,程序員就必須加班都凌晨,甚至是平時也經常是深夜下班,第二天照常得早起上班。

程序員加班已然是常態,程序員對996的反抗,也並非一開始就有。一位阿里的員工回憶,最早開始施行996時,通常是遇到淘寶大促等特殊時期,為了保證項目按時上線、搶購當天運轉順利,開發團隊需要連續加班月余甚至數月,但在當時,每每項目結束,程序員們往往頗有成就感,隨後到來的一段「閑時」,也可以讓員工恢復體力。

㈡ 為什麼培訓出來的程序員會被廣受詬病

近兩年與傳統行業的逐漸衰落(房地產除外)形成對比,互聯網行業的爆發式興起。越來越多的資本也開始從過氣的行業中抽離出來,融入到互聯網行業中。從2009年以來智能機的興起,催生互聯網進入移動互聯時代。從前幾年的android,ios app,html5,到百團大戰,網路金融,再到直播綻放,再到AI技術,再到現在飽受爭議的區塊鏈技術,隨著這些技術封口的發展,誕生了非常多的獨角獸企業,與此同時也為大量互聯網從事者提供了大量的就業機會。

大的不行,基礎又被視為不過關,先自我尷尬10秒。所以不管怎麼說,自學或者培訓出來的程序員的確是會有一些缺陷存在。不過不要氣餒,因為你總會通過自己的努力找到屬於你自己的位置的。我相信,我們熱愛編程開發的人是不會太差的。

㈢ 4月程序員實訓報告3000字

一、實習的目的和意義

進大學生活的最後一個年頭,站在我們面前的就是那個嚮往已久的工作社會,所以我們的心可以說是既高興又興奮,因為我們終於可以在這個巨大的舞台上展現自我,但我們還需要時間去了解這個社會。為此我選擇了實習,其目的在於通過實習使我們自己獲得基本操作的感性知識,理論聯系實際,擴大知識面;同時專業實習又是鍛煉和培養學生業務能力及素質的重要渠道,培養我們當代大學生具有吃苦耐勞的精神,也是學生接觸社會、了解產業狀況、了解國情的一個重要途徑,逐步實現由我們學生到社會的轉變,培養我們初步擔任技術工作的能力、初步了解企業管理的基本方法和技能;體驗企業工作的內容和方法。這些實際知識,對我們學習後面的課程乃至以後的工作,都是十分必要的基礎。

二、實習內容

我的工作崗位是軟體開發工程師實習,就是程序代碼的編寫。

當我們進入一個企業,進入一家公司時,首先先要對該公司的概況有一定的了解,並對該公司所開發的項目有一定的認識,我們需要去慢慢的熟悉流程,熟悉業務。剛開始兩天就是自己在公司看看文檔,並熟悉環境。指導我的是一位年紀大一、二歲的同事,先與我說了一下要點,然就讓我自已看,遇到不懂的就問。只有我們接觸這種企業公司,才會真正的知道一個企業的項目之大,剛開始令人看了眼花繚亂,看一會就會暈,有幾百個表,有幾千個類,一個頁面好幾千行代碼。甚至更多。這剛開始我就熟它的大致結構。一開始什麼都不懂,也不懂業務。令我感動的是每當我我有一點不明白的地方,他都會不煩其勞的與我講清楚,直到我弄明白為止。在我堅持不懈的努終於適應了變化,他的臉上也有了笑容。

兩天之後,熟悉了基本框架,基本流程之後,我也成為工作之中的一員,開始試著去寫代碼,去改bug,去寫一些新的小模塊。在這一段時間里,主要任務有鞏固之前所學的,對常見的錯誤要一看即知,並養成認真仔細的工作作風。在

其後的工作中我都有保持謙虛的心態。在種狀態下我進步很快,花了比別少了將近一半的時就達到目標了。

在這個項目中我們前端用的是Ext框架,它具有友好的界面功能。讓我們做起來更簡單。在前端我們通過控制項中的屬性和在Spring里配置好的id值,可以去調用業務中的方法,業務中方法又可以去調用底層實現的方法,或者我們已包裝好的方法。最後是底層的方法去調用資料庫中的數據以呈現我頁面上。

在這個項目中我們用的環境是eclipse,資料庫是Oracle。主要的框架技術在前台用的是Ext框架,後台用的是Hibernate+Spring,用的MVC模式,包結構非常清楚,在每個包里邊都包括四部分,實體類,介面,介面的實現類,還有流序列化。在Web部分也是如此,也都有對應的包,對應的jsp去調用對應的js。那麼接下來我就對這幾分部分作一個講解吧。首先是Ext框架,ExtJS是一種主要用於創建前端用戶界面,是一個與後台技術無關的前端ajax框架。ExtJS可以用來開發RIA也即富客戶端的AJAX應用,是一個用javas cript寫的,因此,可以把ExtJS用在、Java、Php等各種開發語言開發的應用中。ExtJs最開始基於YUI技術,由開發人員JackSlocum開發,通過參考JavaSwing等機制來組織可視化組件,無論從UI界面上CSS樣式的應用,到數據解析上的異常處理,都可算是一款不可多得的JavaS cript客戶端技術的精品。JQuery、Prototype和YUI都屬於非常核心的JS庫。雖然YUI,還有最近的JQuery,都給自己構建了一系列的UI器件(Widget),不過卻沒有一個真正的整合好的和完整的程序開發平台。哪怕是這些低層的核心庫已經非常不錯了,但當投入到真正的開發環境中,依然需要開發者做大量的工作去完善很多缺失之處。而Ext就是要填補這些缺口。

其次是Hibernate,Hibernate是一個開放源代碼的對象關系映射框架,它對JDBC進行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱資料庫。Hibernate可以應用在任何使用JDBC的場合,既可以在Java的客戶端程序實用,也可以在Servlet/JSP的Web應用中使用,革命意義的是,Hibernate可以在應用EJB的J2EE架構中取代CMP,完成數據持久化的重任。

最後是Spring,Spring是一個解決了許多在J2EE開發中常見的問題的強大框架。Spring提供了管理業務對象的一致方法並且鼓勵了注入對介面編程而不是對類編程的良好習慣。Spring的架構基礎是基於使用JavaBean屬性的

InversionofControl容器。然而,這僅僅是完整圖景中的一部分:Spring在使用IoC容器作為構建完關注所有架構層的完整解決方案方面是獨一無二

的。Spring提供了的數據訪問抽象,包括簡單和有效率的JDBC框架,極大的改進了效率並且減少了可能的錯誤。Spring的數據訪問架構還集成了Hibernate和其他O/Rmapping解決方案。Spring還提供了的事務管理抽象,它能夠在各種底層事務管理技術,例如JTA或者JDBC事務提供一個一致的編程模型。Spring提供了一個用標准Java語言編寫的AOP框架,它給POJOs提供了聲明式的事務管理和其他企業事務--如果你需要--還能實現你自己的aspects。這個框架足夠強大,使得應用程序能夠拋開EJB的復雜性,同時享受著和傳統EJB相關的關鍵服務。Spring還提供了可以和IOC容器集成的強大而靈活的MVCWeb框架。

三、實習心得

實習期間給我的感受:收獲+喜悅。這實習將來給我們留下的不僅僅是回憶,因為他使我們的自身價值得到了提高。

「天下英雄皆我輩,一入江湖立馬催。」從學校到社會的大環境的轉變,身邊接觸的人也完全換了角色,老師變成老闆,同學變成同事,相處之道完全不同。在這巨大的轉變中,我們可能彷徨,迷茫,無法馬上適應新的環境,但在同學、同事的幫助和自己摸索的情況下,逐漸適應了。但我發現,以我們的經驗,不學到一定的深度和廣度是難以在實際工作中應付自如的。因此反映出學習的還不夠,缺點疏漏。需在加以刻苦鑽研及學習,不斷開拓視野,增強自己的實踐操作技能。

四、實習總結

通過這次實習,有接下來的幾點認識。

1、對於一個項目來說,良好的文檔是正規研發流程中非常重要的環節,作為代碼程序員,我們很多工作時間都是在寫技術文檔,它會在未來的升級以及模塊的復用時起著至關的作用。所以我們必須注重這個。

2、良好的代碼編寫習慣也是非常重要的,它不但有助於代碼的移植和糾錯,也有助於不同技術人員之間的協作。我們要使我們的程序具有易讀性,易擴展性,容錯性。

(1)易應有盡有性:所有的變數和函數以及類名都用簡單易懂易記憶的命名方式,所有類和函數,變數都有關鍵的注釋說明。這點很重要,也很基礎。

(2)易擴展性:整體系統架構邏輯簡單清晰,模塊與模塊之間盡量做到互不影響,也就是盡可能的獨立,這部分工作主要體現在前期設計工作中,需要掌握好的設計經驗和方法才能夠做的比較好。

(3)容錯性:對所有數據都進行有效性檢查:對第三方介面的調用失敗的容錯性。對所有代碼都做調用失敗後的處理。以及在大的工程中加入trace文件輸出,把關鍵的操作信息輸出,以便對工程異常情況產生條件的定位,及時解決問題。

3、一個好的調試、跟蹤與測試方法是非常重要的。我們需要對每個模塊的介面做測試,數據界的檢查,在對整個模塊做測試。主要測試穩定性,效率及功能是否正常。確認單個模塊完全,再加入工程。我覺得在我們調試時用debug模式啟動伺服器是一個非常好的選擇,我們可以很快定位到出錯的地方。並用可以找到解決的辦法。

總之這一段實習的經歷讓我明白了:一個優秀的程序員必須不斷的學習,隨時總結,找到自己的不足,這樣逐步提高,才能讓自己很快的成長起來。
篇二
通過實習,我自身發生了重大的轉變。首先,進入公司,你就是一名職業人,不再是一名學生,你要具備一名職業人應具備的素養,不遲到不早退是必然的,而且還要時刻嚴格要求自己,公司的規定要嚴格遵守。其次,實習期間,我對項目的開發有了一個較完整的了解和熟悉。在實習過程中,我學到了許多在學校學不到的知識和技巧,學習了很多公司自己的框架和工具,這都是一些前輩的寶貴經驗。再次,個人日語水平有了長足進步,對日後生活工作頗有裨益。

一、實習目的

通過實習,培養綜合運用Java語言的面向對象編程能力;培養動手能力;培養良好編程規范、編程方法;以便能較全面地理解、掌握和綜合運用所學的知識,提高自身的編程能力;增強自己的團隊協作意識,了解軟體開發的思考角度和主要流程。通過理論與實際的結合、學校與社會的溝通,進一步提高自己的思想覺悟、業務水平,尤其是觀察、分析和解決問題的實際工作能力,以便培養自己成為能夠主動適應社會主義現代化建設需要的高素質的復合型人才。為畢業之後能夠更快地進入工作狀態並且能夠更好的工作,打好一定的基礎。

二、實習單位基本情況介紹

xxxx有限公司,是一家由日方注資,專注於面向中國豐田汽車的軟體開發設計、受託日本xxx信息系統株式會社開展系統開發,系統維護、面向中國的日資企業開展系統開發,以及面向中國國內的軟體開發設計的IT企業。公司成立於2005年8月12日,注冊資金RMB2,000,000元(xxxx系統株式會社100%投資),2006年04月04日成為xxxx信息產業協會會員;2006年05月25日成為xxx軟體輸出聯盟會員;2006年05月30日被認定為xxx科技企業;2007年09月25日通過雙軟認定(軟體企業認定、軟體產品認定)。xxxx信息一直秉承軟體提高效率、與社會共創信息化新時代的理念,致力於為用戶提供具有自主知識產權的系統軟體、安全軟體、平台軟體、各類應用軟體以及全方位的解決方案和相關服務。

三、實習內容

1.日語培訓

由於公司為日資企業,日常工作要求職員使用日語,因此,公司特從日本請來中原先生為我們做培訓。大家零基礎開始,每天有兩到三個小時的學習時間,每周一參加語言階段性測試。過程雖然比較艱難,但是效果顯著,目前基本工作語言可用日語交流。

2.Java實訓

通過本次實習,我對Java語言的各種特性有了更進一步的體會:

①Java語言的語法與C語言和C++語言很接近,使得大多數程序員很

容易學習和使用Java。另一方面,Java丟棄了C++中很少使用的、很難理解的、令人迷惑的那些特性,如操作符重載、多繼承、自動的強制類型轉換。特別地,Java語言不使用指針,並提供了自動的廢料收集,使得程序員不必為內存管理而擔憂。

②Java語言提供類、介面和繼承等原語,為了簡單起見,只支持類之間的單繼承,但支持介面之間的多繼承,並支持類與介面之間的實現機制(關鍵字為implements)。Java語言全面支持動態綁定,而C++語言只對虛函數使用動態綁定。總之,Java語言是一個純的面向對象程序設計語言。

③Java語言支持Internet應用的開發,在基本的Java應用編程介面中有

一個網路應用編程介面()它提供了用於網路應用編程的類庫,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(遠程方法激活)機制也是開發分布式應用的重要手段。

④Java語言是體系結構中立的Java程序(後綴為java的文件)在Java平台上被編譯為體系結構中立的位元組碼格式(後綴為class的文件),然後可以在實現這個Java平台的任何系統中運行。這種途徑適合於異構的網路環境和軟體的分發。

⑤Java語言是可移植的,這種可移植性來源於體系結構中立性,另外,Java還嚴格規定了各個基本數據類型的長度。Java系統本身也具有很強的可移植性,Java編譯器是用Java實現的,Java的運行環境是用ANSIC實現的。

⑥在Java語言中,線程是一種特殊的對象,它必須由Thread類或其子(孫)類來創建。通常有兩種方法來創建線程:其一,使用型構為Thread(Runnable)的構造子將一個實現了Runnable介面的對象包裝成一個線程,其二,從Thread類派生出子類並重寫run方法,使用該子類創建的對象即為線程。值得注意的是Thread類已經實現了Runnable介面,因此,任何一個線程均有它的run方法,而run方法中包含了線程所要運行的代碼。線程的活動由一組方法來控制。Java語言支持多個線程的同時執行,並提供多線程之間的同步機制(關鍵字為synchronized)。

⑦Java語言的設計目標之一是適應於動態變化的環境。Java程序需要的類能夠動態地被載入到運行環境,也可以通過網路來載入所需要的類。這也有利於軟體的升級。另外,Java中的類有一個運行時刻的表示,能進行運行時刻的類型檢查。

3.資料庫實訓——SQLServer2008

在此次實習中,與Web伺服器相連的資料庫採用的是大型關系資料庫管理系統——SQLServer2008。它是基於客戶機/瀏覽機模式的資料庫管理系統;它支持ODBC、ADO等技術的應用,可無縫的與Windows2008Server和IIS集成,提供高效安全的數據訪問服務;有利於整個系統管理規范化,使數據的完整性、安全性得到保證。

資料庫設計實際上主要是所要處理的數據的表示方法和存儲結構的設計。在採用資料庫技術之前,這些工作分散在應用程序中進行;在採用資料庫技術之後,這些工作可以通過資料庫設計集中起來系統地進行。

進行資料庫設計的首要任務是考慮信息需求,也就是資料庫要存入什麼樣的數據。創建資料庫並不是僅僅為了存儲數據,更主要的目的是從中提取有用的信息。除了考慮數據存儲什麼數據外,還應考慮存取方式,也就是處理需求。即要根據用戶提出的存取要求來設計數據模式和應用程序。

4.社會人教育社會人教育也可以稱為職業道德教育,是指從事一定職業的人們在職業活動中所應遵循的道德規范以及該職業所要求的道德准則、道德情操和道德品質的總和。成功的大學生職業道德教育可以為大學生以後從事本職工作打下良好的職業道德基礎,為他們從業後具備良好職業道德修養提供理論、知識、情感前提。因此公司對新職員開展了職業道德教育課程,主要課程包括職前職業道德教育,即通過教育使大學生自覺認識到自己將來所從事職業的社會價值,使他們深刻感受到自己肩負的社會責任和使命,確立正確的就業意識和擇業取向;表現在將來的從業行為上,通過教育使他們熱愛本職工作,盡職盡責地履行職業義務,有較強的敬業和奉獻精神。

四、實習收獲

此次畢業實習,我學會了運用所學知識進行軟體開發,學會了如何跟同事進行合作溝通。積累了處理有關人際關系問題的經驗方法。同時我體驗到了社會工作的艱苦性,通過實習,讓我在社會中磨練了自己,也鍛煉了意志力,訓練了自己的動手操作能力,提升了自己的實踐技能。積累了軟體開發的經驗,為以後工作也打下了很好的基礎。實習是為將來打基礎的重要階段,珍惜自己每一個工作的機會,不論什麼人,什麼學歷,從事什麼工作,好好的表現、展示自己的能力,不要錯過好的機遇。沒有一件事情是輕輕鬆鬆的,但每一件事都是讓人成長的,經歷一段過程,喜悅或是艱辛,盡管經歷的方式不盡相同,但它的結果是相同的,我都會因涉事而成長。

㈣ 程序員當了小組長卻表示很難受:沒有權利,還要被罵,老火

對程序員而言,日常精力主要放在項目開發上。一些leader會在團隊內提拔一兩位程序員,作為小組長協助自己管理團隊。對選中的小組長而言,這是一種認可,也是一次歷練。

而最近,一位網友表示小組長的位置其實很難受。這位網友總結了三點成為小組長以後的工作。首先,雖然有小組長的頭銜,但日常工作還是開發,並沒有實際的管理權,只是協助管理,真正負責的還是leader;其次,因為分神到管理團隊,沒有足夠的精力專精在技術上,不能像以前一樣提升自己的技術;最後,也是最難受的一點,往上抗壓,往下挨罵,往往得不到同事的理解。

不少網友對這位小組長的話表示認同:我也做過這種…怎麼說呢…積攢了一點管理經驗…但是沒有人事權…沒有績效決定權。對初次接觸管理的人呢壓力很大,關鍵是他么的工資不多一毛,還要兼顧匯報和編碼,事多;我就是這樣,組員的鍋我背,上面催促也是催我;你的角色可能只是替老闆分擔管理壓力而已,隨時都會被收回,並不構成實例職務。

我對此事的看法有所不同。

首先,這是一個好機會,為轉型管理做准備。管理是一門藝術,是一個對於程序員來說完全不同的世界:不是以前的數字和字母,更多的是人與人的交往,是從工程能力向溝通能力以及思想上的變化。以小組長的身份提前接觸並沒有什麼不好,反而益處多多。

其次,能夠成為小組長,證明已經得到了leader的認可。從leader的角度,也在放權培養人。將軍都是大頭兵過來的,這是必經之路。

大家怎麼看呢?歡迎留言討論。

最後,給大家推薦一個**Java進階內推交流群730379855**,不管你在地球哪個方位,不管你參加工作幾年都歡迎你的入駐!(群內會免費提供一些群主收藏的免費學習書籍資料以及整理好的幾百道面試題和答案文檔!)

㈤ 如何成為架構師 7個關鍵的思考 習慣和經驗

工作了挺久,發現有個挺有意思的現象,從程序員、高級程序員,到現在掛著架構師、專家之類的頭銜,伴隨著技術和能力的提高,想不明白的事情反而越來越多了。這些疑問有些來自於跟小夥伴交流,有些是我的自問自答,有些到現在也想不清楚,這篇文章就來寫一寫這些問題。
如何更高效的學習?
很多新人程序員一開始在學習上找不到方向,但我想在渡過了一段時間的新手期之後這類問題大多都會變得不再那麼明顯,工作的方向也會逐漸變得清晰起來。

但是沒過多久,能了解到的資料就開始超過每天學習的能力,像是買了沒看的書、收藏沒讀的貼、mark了之後再也沒有關注過的文章越積越多,更別提每天面對各種技術分享或者微博里的新鮮玩意了。
大多數人每天能留給自己學習的時間有限,這個階段如何提升學習效率就成了要解決的重點。
說說自己提升學習效率的心得,其實非常簡單:體系化的學習。
我曾經很喜歡看一些博客或者是一些「看起來」比較通俗易懂的文章,每天在微博微信里刷到什麼技術文章就mark下來,基本上幾分鍾就能讀完。可一段時間下來,雖然讀了不少東西,但是還是有種在原地打轉的狀態,並沒有感受到有什麼實際的提高。
最後實在忍不住,抱著厚書硬啃了一遍,突然有種豁然開朗的感覺:讀書時自己學到的是一張完整的知識網路,每個知識點和其它內容相互聯系和區別。這種全方位的理解比起一篇篇獨立的文章,不知要高到哪裡去了。
而讀了一段時間書之後,漸漸原本不在一個體系之內的知識也會慢慢聯系起來,比如說後端服務的開發,簡單梳理一下,就成了這樣:

在重復了幾次痛苦的學習-梳理過程後,再去看一些獨立的文章或者資料往往會事半功倍,因為能在體系內找到相對應的知識,甚至有時候一本書里一頁只需要看一句話,點破那層窗戶紙,就可以掌握新的知識。
你是怎麼知道這些的?
工作中總是會遇到各種各樣的問題,有幾次把問題處理過程總結了一下,發了出來,之後就像滾雪球一樣,有越來越多的小夥伴來咨詢問題,比如說:
前一陣幫忙排查一個性能問題,系統壓力稍微一大就會頻繁Full GC,壓力降低之後又恢復了。
某個小夥伴接入代碼質量檢查系統之後發現每次構建會報一個莫名其妙的錯誤,打不了包。
某次代碼有bug,小夥伴跑來來問我git怎麼才能回滾代碼。

每次查完這種問題的時候,一些剛畢業沒多久小夥伴們就會用一種崇拜的眼神看著我,然後大多會問:「你是怎麼知道這些的?」
實際上,雖然我一直在不斷的學習,但是面對工作中無窮無盡的新問題,大部分問題還是會命中我沒有掌握的那部分區域。每次有人問到我不了解的知識時我都會非常開心:還有什麼比帶著問題學習更有效率的學習方法呢?
而且幸運的是,在建立了自己的知識體系的基礎上,學習新的知識通常都能很快的上手,解決一個問題往往只需要多了解一個知識點而已。
舉個例子,頻繁Full GC的問題,以前查過很多次GC的問題,大多數是Java程序或JVM內存泄露問題,而這次內存沒有泄露,GC吞吐量也正常,那麼我只需要查一下如何查看一段時間內創建的最多的對象的方法就可以了。
回到剛才的問題,小夥伴們問我:「你是怎麼學到這些的知識的?」
答案是:在你問我問題之後現學的。
架構師應不應該寫代碼?
似乎隔三差五就能看到一些關於架構師應不應該寫代碼的文章。我是屬於寫代碼派,因為我本身就喜歡寫代碼。但是,當工作職責發生變化之後,如何保持寫代碼和其它工作之間的平衡就成了問題。
從個體效率上來看,我自己親自寫代碼,和很多人相比沒有什麼絕對優勢,甚至有些人碼代碼的速度比我還快一些。
但作為架構師,參與寫代碼還是會有一些不大不小的收益。
一般來說合格的程序員對於明確分配的任務會完成的很好,但是大部分情況下「架構」這個詞意味著架構師並不會涉及太多細節,架構圖和代碼實現之間總還是有些距離,你無法保證所有人都會正確的理解你的設計,或者是程序員寫代碼時遇到障礙時會立刻想出足夠優雅的解決方案。
之前寫過一篇關於爛代碼的文章 ,大部分爛代碼並不是架構師的設計問題,如果程序員沒能很好的理解設計或者是經驗不足,往往會做出一些非常匪夷所思的東西。比如我見過剛畢業的程序員為了防止模塊耦合而將耦合的代碼又拷貝了一份,或者為了「優化性能」而盡量把所有邏輯寫在一個函數里。
如果不能及時發現並改正這些問題,那麼這些地方就會變成「正確的錯誤代碼」,或者」不是我寫的「代碼,或者」我靠我也看過那段代碼「之類足以被掛上恥辱柱的玩意。這種問題算是架構師的責任嗎?作為一個視名聲如命的架構師,我認為是的。
在我看來,寫代碼的架構師更像是在做後勤保障的工作:在代碼中第一時間發現可能存在的問題,向其他人提出警告,或是給予其他人改進的意見,必要的時候或是給其他人演示一下正確的姿勢。
大部分情況下我作為架構師並不需要攬下「核心模塊」開發這種工作,畢竟我能調配的時間太零散了,效率難以保證,很多人在專注的情況下比我做的好很多,我只需要保持大局觀需要適度參與就可以了。
總的來說,架構師和程序員在某些方面上有點像產品經理和用戶的關系,大部分程序員並不會主動告訴你他們想要什麼、哪裡需要優化,甚至自己也不知道這些。想要做出好的產品,捷徑之一就是跟用戶做同樣的事情。
實踐:開會是個技術活嗎?
我覺得應該沒有人喜歡開會,身為一個程序員,沒有幾個人的志向是當什麼職場交際花。
但是會議邀請就這么一個個的跳了出來:開發需求要跟產品開會、項目方案要跟技術開會、新人轉正要去開評審會、別的公司來了幾個大牛正在開分享會、出了故障要開總結會、小組有周會、部門有周會,大項目每周開兩次碰頭會不過分吧?小項目啟動的時候開個會不過分吧?調試的時候發現有個坑大家趕緊討論討論吧?
有時候參加的會議整場下來跟我毛關系都沒有,全程神遊倆鍾頭,最後突然有人一拍桌子:」還有問題沒?好,散了!「
也有可能有個什麼會沒叫你,過了倆禮拜突然收到封郵件催開發進度,」當時那個會你沒參加,大家都說應該是你們做……你沒看會議紀要嗎?「
吐槽了這么多,但我還是認為開會是個技術活,對於架構師來說尤其如此。
大多數技術人員開會並不是那種新聞里的工作匯報或者長者們的會議,他們真的需要通過開會討論一個具體方案,或者解決什麼具體問題。可惜的是我參加過很多會議,大多數的會議都是在毫無意義的交流中浪費時間:幾方人坐在一個屋裡互相說一些對方理解不了的話,最後得出一個」我們會後再捋一捋「之類的結論。
這並不是會議才有的問題,在程序員日常的溝通中,也有很多人並不懂得如何交流,比如偶爾會收到一些寫的非常認真的郵件,打開之後是密密麻麻的一屏幕文字,但是從第一句開始就不知道他在說什麼,後面的東西連看的動力都沒有了。
大多數時候,溝通的核心不是你說了什麼,而是你想要讓對方了解什麼、讓他做什麼。良好的溝通能在工作中顯著提升效率,但很多人忽略了這個事情。
想要恰到好處的進行溝通是一件不那麼輕松的事情,但是簡單來說有幾條原則:
確保各方對背景的理解一致,比如開會之前先簡單通過郵件交流一下,對新加入會議的人花個30秒鍾做個前情提要,或者在討論過程中讓對方說一下他的理解。
去掉對方不能/不需要理解的內容,比如跟產品說「這個隊列在高並發下因為鎖的實現有問題導致CPU性能瓶頸」不如改成「我們發現了性能問題,持續10分鍾了,10萬用戶收不到運營發的無節操廣告,大概5分鍾後擴容解決」。
確保在對方失去注意力前盡快說出重點,比如排查問題的總結郵件,如果第一段是這樣:「某某框架內部使用的是xxx技術,這個技術的架構是這樣:blabla」,那麼對方可能完全不知道你在講什麼。可以換成這樣:「我發現了某某框架的bug,需要盡快升級,否則在xxx情況下有可能會出現yyy問題,具體排查過程如下:blabla」。
不要說沒有意義的內容浪費其他人的時間,比如」這需求做不了「或者」這里不可能出bug「,沒有人想聽到這些廢話。
為什麼別人的系統總是那麼爛?
很多程序員解決問題的能力很強,說要解決一個什麼問題,下午就能寫出幾百行代碼把功能實現了。但是做出來的東西有種少考慮了什麼東西的感覺,我花了挺久去想一個詞去形容「這個東西」,最後想出了個勉強可以表達的詞:程序的生命力。
大部分程序都能實現功能,但是如果把「時間」這個也作為一個考慮的維度的話,就會意識到一個合格的項目需要考慮更多的東西:更通用的使用方式、易於理解的文檔、簡單而易於擴展的設計,等等。而想要毀掉程序的生命力也很簡單:做的更復雜,更定製化,讓更少的人參與。
我跟很多程序員提過程序的生命力,比如說要讓自己寫的工具的操作方式跟其它Linux命令類似,或者要用一些更容易理解但不是性能最優的設計方式,又或者要他去參考現在業界主流的做法,很多人認為提這種需求的意義不大,我覺得這里還是舉個例子吧。
很多公司應該都會有一些遺留系統,它們龐大、笨重、難用、幾乎無法維護,所有人都在抱怨這些系統,並且每天都在想方設法換掉那些遺留系統。但是一段時間過去之後,又會發現身邊的新人又開始吐槽當時替代遺留系統的那個系統了。
「大多數系統當初都很好使,功能當時夠用,擴展性看起來也可以,但是這些系統都是開發的人離職之後變壞的。」
還有更好的辦法嗎?
成為技術專家之後的工作可以說是痛並快樂著,會有很多人找你咨詢問題,另一方面,會有太多人找你咨詢問題。
甚至有一段時間我每天的工作就是解答問題,小到工具使用中到疑難bug,大到架構設計,從早上到晚上基本都是在給各種各樣的小夥伴提供咨詢服務。
我很快發現有些地方不對頭:有些問題實在是太簡單了,以至於我甚至都不用思考就可以給出答案,為什麼會有這種問題?
後來我在每次回答之前先問一句:
「你還有更好的辦法嗎?」
一小部分人立刻能給出優化後的版本,甚至我連續問幾次之後,他能給出好幾個優化後的版本;另小一部分人會斬釘截鐵的說優化不了了,就這樣了。但是大部分人會猶猶豫豫的說出一些完全不著調的回答。
後來我改成在每次回答之前先問兩句:
「你要解決什麼問題?」
「還有更好的辦法嗎?」
效果好了很多,很多小夥伴發現要解決的問題並不復雜,只是做法跑偏了。
再後來我改成了在每次回答之前先問三句:
「他們要你解決什麼問題?」
「你解決的是什麼問題?「
」還有更好的辦法嗎?「
現在第三句已經很少問到了。
成為架構師最困難的門檻是什麼?
跟一些程序員交流的過程中,有不少人問我要怎麼成為一名牛逼的架構師。
我最近幾年面試的人挺多,發現一個有意思的現象:很多人自稱架構師的人跟你講一個架構時簡直滔滔不絕,各種技術名詞像是說相聲一樣從他嘴裡說出來,三句話不離高並發大數據,但是稍微追問一下,就會發現很多基本概念的缺失,例如自稱精通高並發的人說不清楚他所謂的高並發系統的瓶頸在哪裡,自稱精通架構設計的人說不明白他的系統怎麼保證高可用,自稱超大數據量的系統實際上只有不到100萬條數據,等等。
架構師雖然聽起來很高大上,但本質上仍然是工程師,不是科學家,也不是忽悠人的江湖騙子。學習再多,也需要實踐落地。設計架構方案更多的是在做一些抽象和權衡:把復雜的需求抽象成簡單的模型,從功能、性能、可用性、研發成本等等方面規劃如何構建一個系統,這些內容需要更多的實踐練習。
很多人沒有工作在類似微博平台這種天天需要接觸架構設計的地方,而很多公司沒有架構方面的工作可供他們練級,於是就想辦法從理論上下功夫,這類人的特徵非常明顯:在信息不足,甚至不了解實際場景的情況下就開始做架構設計,這種所謂的架構往往理解比較膚淺,經不住推敲。
每年招人之後我們都會做一些針對新人的架構方面的培訓,課程材料基本上包括了高可用架構相關的主要方面,但是學完這些材料之後就能成為獨當一面的架構師了嗎?並沒有。相反,這僅僅是開始,新人真正做了幾個並發量上萬的系統之後才算是正式入門:面對壓力時才會懂得權衡,走過彎路之後才會尋找捷徑。
所以我認為在架構師(和其它很多)的工作中最重要的部分是實踐,誇誇其談很容易,與其拽一些技術名詞,不如把你正在做的系統真正的做好。
我和大牛之間有多少距離?
跟很多人一樣,剛畢業時我覺得作為程序員,只要努力,加上少許天賦便可以獲得一些成績。
工作一段時間後,對自己和其他人的認識也越來越清晰,逐漸的發現程序員之間的差距或許比人和猴子之間的差距還大,接受這個事實這讓我郁悶了很久。
再過一段時間,發現自己已經能夠客觀的評價自己的能力,也意識到了距離並不是那麼重要,只要想辦法跑的更快,就足夠了。

閱讀全文

與程序員被催改方案相關的資料

熱點內容
氣憤PDF 瀏覽:462
杭州手機dns伺服器地址 瀏覽:498
matlab智能演算法書籍 瀏覽:216
web數據挖掘pdf 瀏覽:838
感謝程序員的協作 瀏覽:674
android獲取簡訊列表 瀏覽:454
壓縮文件夾無效或已損壞 瀏覽:830
文件夾命名橫杠如何輸入 瀏覽:800
cl編譯64位 瀏覽:130
猿人時代安卓手機怎麼玩 瀏覽:169
android網路交互 瀏覽:771
家庭伺服器對比玩客雲 瀏覽:597
手機adb連接雲伺服器 瀏覽:581
息壤閱讀app哪裡可以下載 瀏覽:444
聲闊超能小彩蛋如何下載app 瀏覽:633
壓縮機和冷凝器配套 瀏覽:615
伺服器linux系統如何使用情況 瀏覽:235
程序員晚上買什麼 瀏覽:120
北京舊伺服器回收價目表雲主機 瀏覽:609
cc編譯和cpp編譯 瀏覽:942