A. 程序員工作要做什麼
程序員(英文Programmer)是從事程序開發、維護的專業人員。一般我們將程序員分為程序設計人員和程序編碼員,但兩者的界限並不非常清楚,特別是在中國。
作一個真正合格的程序員,應該具有的素質。
1:團隊精神和協作能力
團隊精神和協作能力是作為一個程序員應具備的最基本的素質。軟體工程已經提了將近三十年了,當今的軟體開發已經不是編程了,而是工程。獨行俠可以寫一些程序也能賺錢發財,但是進入研發團隊,從事商業化和產品化的開發任務,就必須具備這種素質。可以毫不誇張的說這種素質是一個程序員乃至一個團隊的安身立命之本。
2:文檔習慣
文檔是一個軟體系統的生命力。一個公司的產品再好、技術含量再高,如果缺乏文檔,知識就沒有繼承,公司還是一個來料加工的軟體作坊。作為代碼程序員,必須將30%的工作時間寫用於技術文檔。沒有文檔的程序員勢必會被淘汰。
3:規范化的代碼編寫習慣
知名軟體公司的代碼的變數命名、注釋格式,甚至嵌套中行縮進的長度和函數間的空行數字都有明確規定,良好的編寫習慣,不但有助於代碼的移植和糾錯,也有助於不同技術人員之間的協作。 一些所謂的高手甚至叫囂高手寫的代碼一般人看不懂,我只能說他不是一名合格的程序員。
4:需求理解能力
程序員要能正確理解任務單中描述的需求。在這里要明確一點,程序員不僅僅要注意到軟體的功能需求,還應注意軟體的性能需求,要能正確評估自己的模塊對整個項目中的影響及潛在的威脅,如果有著兩到三年項目經驗的熟練程序員對這一點沒有體會的話,只能說明他或許是認真工作過,但是沒有用心工作。
5:模塊化思維能力
作為一個優秀的程序員,他的思想不能在局限當前的工作任務裡面,要想想看自己寫的模塊是否可以脫離當前系統存在,通過簡單的封裝在其他系統中或其他模塊中直接使用。這樣做可以使代碼能重復利用,減少重復的勞動,也能是系統結構越趨合理。模塊化思維能力的提高是一個程序員的技術水平提高的一項重要指標。
6:測試習慣
測試是軟體工程質量保證的重要環節,但是測試不僅僅是測試工程師的工作,而是每個程序員的一種基本職責。程序員要認識測試不僅是正常的程序調試,而要是要進行有目的有針對性的異常調用測試,這一點要結合需求理解能力。
7:學習和總結的能力
程序員是很容易被淘汰的職業,所以要善於學習總結。許多程序員喜歡盲目追求一些編碼的小技巧,這樣的技術人員無論學了多少語言,代碼寫起來多熟練,我們只能說他是一名熟練的代碼民工,他永遠都不會有質的提高。一個善於學習的程序員會經常總結自己的技術水平,對自己的技術層面要有良好的定位,這樣才能有目的地提高自己。這樣才能逐步提高,從程序員升級為軟體設計師、系統分析員。
作為高級程序員,乃至於設計師而言,除了應該具備上述全部素質之外,還需要具備以下素質:
1、 需求分析能力
2、 整體框架能力
3、 流程處理能力
4、 模塊分解能力
5、 整體項目評估能力
6、 團隊組織管理能力
一般招工時需要提供基礎程序員證書,要參加考試的:
[編輯本段]考試說明
1、 考試要求:
(1) 熟練掌握基本演算法和數據結構,用C語言編製程序;
(2) 掌握數據結構、程序變速器和操作系統的基礎知識;
(3) 了解軟體工程、資料庫、多媒體和網路的基礎知識;
(4) 掌握數制、機內代碼及其算術運算和邏輯運算的基礎知識;
(5) 了解計算機的體系結構和主要部件的基礎知識。
2、 通過本級水平考試的合格人員能按照軟體設計說明書編製程序,具有相當於助理工程師
的實際工作能力和業務水平。
3、 本級水平考試范圍包括兩個模塊:模塊1——程序編制能力(考試時間為150分鍾);模
塊2——基礎知識(程序員級)考試時間為120分鍾)。題型為:單項選擇題十多項選擇題。
B. 程序員轉做產品經理,對於轉行謀職產品經理難度大嗎
難度是比較大的,不同的職位有不同的事業規劃,想要做一個成功的產品經理,必須要有著非常不錯的溝通能力。
C. 程序猿如何轉行做產品經理
做產品經理,雖然不要求你天天寫代碼,在電腦前一坐就是一天。也不需要你隨時鑽研新技術,改bug,但是你要掌握的底層能力不減反增。那應該怎麼破局?答案還是找到一些開發和產品之間的可遷移能力。在你從事研發工作的過程中,也會積累一些經驗,下面是產品經理能具備的可遷移能力,你也可以從這些能力中倒推你已經具備的能力有哪些。我把它分為底層思考力、中層可遷移力和上層可遷移力,而產品經理因為需要洞察用戶、理解業務、找尋商業模式、迭代產品,所以需要具備更深入的底層思考力,比如對本質的洞察、結構化思考、升維到更高的業務去思考,批判性思考,思考思考本身的思考等等。
這些能力你具備的越多,那麼你的職業發展天花板就越高,就越能適應未來的變化。從可遷移能的角度來看,你也可以思考,你一年多的研發經驗中,有哪些可遷移的能力,能應用到產品經理上?從底層可遷移能力看,你可能具備一些結構化思考的能力,因為在處理比較龐大的開發信息時,你都需要通過結構化思考對代碼信息進行分類和排列。從中層可遷移能力看,比如做研發的同學普遍都會有比較嚴密的邏輯能力,每次在做產品研發時,需要更強大的邏輯去梳理整個產品的脈絡,具體展現在對流程的理解、對一個流程中可能出現的各種情況的預判,對產品實現的各個環境的要求的理解等等。從上層可遷移能力看,你對產研流程比較熟悉,更容易推動一些項目,也因為你對研發原理的了解,你更清楚不同的需求需要多少實現成本,開發同事在人工預估上唬不了你。對於各類軟體,你的學習速度也會比其他背景的同學更快,甚至,你可以自己編寫一些輕量的代碼來提高自己的工作效率。
所以,要問研發怎麼轉型產品經理,最好的切入點就在於你可以從中找到可遷移的能力,以這些能力為起點,去補足自己的弱項。歸根結底,你要想成為一個能勝任目前工作的產品經理,你還需要解決一些棘手問題。1、能力不夠系統的問題我見過知群里有很多同學都有問類似這樣的問題,我讀過很多關於產品經理的書籍,了解了很多產品經理的方法論,但是我仍然不知道自己應該如何找到轉行的抓手。其本質問題還是不夠系統,什麼是系統的能力?系統的能力可以應對各種問題來的不確定性,系統的能力可以讓你變得更「聰明」。BOSS直聘CEO趙鵬在接受采訪時,曾經對聰明人做了一個定義,他也是拿著這個定義去看人和選人的:第一,總是能明白人家啥意思;第二,總是能讓人家明白自己啥意思;第三,遇到一個課題能夠相對快速地形成思路去解決;第四,始終能穩在重點上,不機會主義,不跑偏。你發現沒,上面的四個問題其實都具備了一個關鍵要素:就是不確定性。接收信息和需求的不確定性,溝通對象的不確定性,遇到問題類型和復雜程度的不確定性,和局勢事態優先順序的不確定性。
要應對這些不確定性,你必然要用系統的方法去解決。如何具備系統的思考問題的方法和習慣?這就需要你先在大腦里構建各種各樣的解決問題的模型,解決信息不對稱的問題,因為有的思路和知識,知道和不知道的差距真的很大。比如視覺優先順序、交互優先順序、用戶優先順序等這些思維方式,這些思考方式我就不在這里展開講了,我會在每周的周三晚上,在知群的訓練營的直播課上做具體講解,也歡迎你來直播間和我一起討論和交流。2、無法掌握和調用的問題即使學習了系統的能力,但仍然有一些同學無法培養出屬於自己的思維,很大原因是沒有對自己的神經做穩定的塑造。不知道你是否有這樣的經驗,有時候你學會了一個新技能,然後第二天再試的時候就生疏了。這是因為你學習技能的本質是神經元之間化學物質的濃度的調整,重復的練習能不斷調整這些化學物質。雖然第一天你讓神經元做了一些調整,但是如果不繼續加強,到了第二天,這些化學物質就會回歸成原來的樣子,這些進步就消失了。要想達到及時調用能力和所學的效果,你必然需要深入地在實踐中不斷反復使用,反復打磨自己的神經元和對應的技能,也包括你看待一件事物時的一些思考習慣。說白了,就是你要把學到的東西落地,在實操中培養自己的手感。這也是為什麼我會在直播中強調一個觀點:也只有在實戰中,你才能培養自己快速調用方法和思維的能力。
D. 程序員可以轉為產品經理嗎
當然可以!從程序員到產品人員的轉型,有其必然性和合理性。像騰訊馬化騰、360周鴻禕、微信張小龍他們都是由程序員做起,然後開創自已的產品和事業的,這樣的例子不在少數。而且,一個技術人員能夠轉型成優秀的產品人,一定是有「知道技術能做什麼」的自信 ,還有「我要把它做出來」的決心。
程序員轉型產品人員所具有的獨特優勢主要包括以下幾點:
第一,多年的程序員工作經驗,對軟體技術和軟體實現方案的判斷,可以規避那些天馬行空的產品想法,工作更有成效。
第二,程序員一般都具備嚴密的邏輯思維能力,更有利於對復雜的產品進行精細的需求分析,將產品打造成精品。
第三,程序員一般都具有快速學習能力,保持對計算機相關行業動態和技術革新的觀察與思考,這在一定程度上會培養對行業與技術的洞察力。
E. 程序員面試,為什麼感覺很多都和運維有關
不會運維的程序員不是好程序員。 這個信條要時刻謹記,不管是面試還是自己平時在工作中都要堅持這個准則,因為這對你以後的發展大有裨益。
一直以來,很多圈外人對我們程序員的觀念就是永遠的一本正經,著裝單一,了無生趣,聰明絕頂,其實這是他們對程序員的誤解,因為多才多藝,多姿多彩的程序員比比皆是,但是傳統的觀念或者說以偏概全的觀念蒙蔽了他們的雙眼,而他們自己又沒有嘗試去了解,所以導致人雲亦雲,給程序員披上了一層灰。
同樣的,我們大部分程序員的觀念也跟他們差不多,認為程序員就只是搬磚擼碼的,至於各種部署伺服器相關的工作應該是運維做的,其實非也,如果真的這樣認為的話,那就真的太不把自己當程序員了。為什麼這么說呢?因為我們程序員是實實在在擼碼開發產品的群體,可是如果我們開發出來的東西只能自個在本地玩耍,卻不能眾樂樂,那還有什麼意義,此時,你可能會說,交給運維啊,那麼如果沒有運維呢,就沒法玩了,所以我們不能總是將希望寄託在別人身上,當自己有能力能夠將系統進行部署的時候,那就該學會部署。
其實不僅僅是程序員,優秀的運維工程師也是需要會開發擼碼的,因為有時候他們也需要開發一些小工具來進行驗證,或者開發網頁來進行服務的管理,所以說程序員和運維都是相輔相成的。
像我們現在很多的公司都沒有明確的人員分工,特別是小公司連運維都沒有,所以就談不上讓運維去部署了,那麼怎麼辦呢?肯定就是開發人員自己去部署了,如果不會部署的話就可以去網上查找資料,其實總體來說不會很難,因為我看過很多運維其實也是在網上找資料按步聚進行操作。
另外公司之所以這么要求,一方面是基於人員成本的考慮,畢竟如果一個人能幹好的事為啥非得招兩個人;另一方面可能基於公司的發展問題,像一般的小公司確實沒必要專門招一個運維,不過隨著公司的發展,後期肯定會招專業運維,畢竟專人做專事,事半功倍。
永遠記住「不會運維的程序員不是好程序員」,其實作為程序員不能總是把自己陷在擼碼的深淵,除了擼碼,我們還要學會產品需求分析、簡單的UI畫圖、資料庫分表分庫及性能優化、運維伺服器部署、單元及系統測試等等,總的來說,要想成為優秀的程序員,我們有必要把產品線上的每一個環節都略知一二,這是經驗收獲,一定會成為我們日後發展的資本。
技術迭代是需要時間的,而且公司預算不多的話,會選擇現有系統繼續使用。有的企業也會選擇維穩,不會輕易開發新系統代替現有系統。
這是一個非常好的問題,作為一名IT從業者,我來回答一下。
首先,在當前的大數據、雲計算時代,程序員在面試的過程中,經常會遇到與運維相關的問題,尤其是有自身產品(平台類)的企業,往往對於程序員的運維類知識有比較多的要求,所以當前的程序員,尤其是Java程序員,要想獲得較強的崗位競爭力,一定要重視運維類知識的學習。
在當前的大數據時代背景下,很多程序員在日常開發過程中,需要與運維人員進行配合,所以程序員在面試過程中,經常會被問及與運維相關的問題,通過這樣的問題,也能夠全面了解程序員是否面對過大用戶的並發問題,這對於判斷程序員是否適合當前的招聘崗位也有一定的參考價值。
以大數據開發崗位為例,程序員在進行大數據任務開發的過程中,不可避免地需要與運維人員打交道,其中大數據平台的搭建就是比較繁瑣的過程,另外還有一系列產品的安裝和部署,這些通常都需要運維人員來完成。對於一款平台類產品來說,運維人員的技術能力能夠在很大程度上決定軟體平台的性能,而且運維人員與開發人員的配合也非常關鍵。
當然,對於程序員來說,如果能夠自己掌握一定的運維知識,對於開發任務的開展還是很有幫助的,如果什麼問題都需要運維人員來完成,不僅需要更多的運維人員,同時也會影響項目的整體開發進度。從這個角度來看,隨著未來大數據技術的逐漸落地,程序員掌握一定的運維類知識,對於提升自身的工作效率,還是很有幫助的。
在程序員面試過程當中,通過一些運維知識也能夠更加直觀地了解到程序員的技術棧,相對於比較復雜的開發問題來說,運維知識的脈絡還是比較清晰的,通過運維知識能夠在一定程度上擠出一些「技術水分」,這也是很多面試官比較願意問運維問題的主要原因。另外,對於一些創業型公司來說,程序員掌握一定的運維類知識,也會節省一些投入,尤其在產品研發的初期。
從技術體系結構來看,要想解決大用戶的並發問題和系統擴展性問題,通常需要從兩個角度出發,一個角度是技術選型,比如採用擴展性比較強的大數據平台,另一個角度就是硬體擴充,但是硬體擴充的前提是要有一個可擴充的平台體系,而通過運維知識,程序員的交流會更明確,技術方案也比較直觀。
從崗位任務劃分的角度來看,程序員的工作任務與運維人員的工作任務有比較明確的邊界,但是在雲計算技術的推動下,程序員接觸運維場景的情況也在不斷增加,比如通過雲計算平台的支撐,很多傳統的運維類任務,程序員也會比較方便地完成,比如安全配置等等。
最後,程序員在進行面試的過程中,如果遇到的運維類問題並不清楚,一定要如實回答,因為運維類知識需要一個積累的過程,而且經驗往往非常重要,所以很多運維類知識,在短期內是無法掌握的,如果盲目擴展自己的知識面,會為後續的工作帶來很多麻煩。
如果有互聯網、大數據、人工智慧等方面的問題,或者是考研方面的問題,都可以在評論區留言,或者私信我!
一、提問之前的准備
首先,最重要的是,你自己一開始就應該想清楚:
只有明確這些根本性的問題,才能正確高效地完成面試。
二、提問的原則
假定你對上一節的三個問題,已經有了清晰的想法,那麼接下來就可以設計如何提問了。
有一些提問的原則,是你應該遵循的:
三、考察專業能力
為了確認面試者是勝任的,你可以問一些與職位相關的專業方面的問題。(不過通常來說,一次面試不足以看出一個人的專業能力。)
比如,你的招聘職位是系統管理員,你可以問"如何快速地在50台機器上部署Linux?"(提示:正確答案不是刻錄50張安裝光碟。)
另外,你還應該向面試者了解他的過去,因為過去是未來的最好預測依據。不過,提問的重點不要僅僅是他過去的成果,更要關注在當時的環境中,他是如何決策和實施的。
四、考察綜合素質
因為人是會發展的,所以某種程度上,面試者的綜合素質要比他的專業能力更重要。
所以,具體的技術問題(如何調用API、什麼是設計模式、編程語言的語法等等)可以少問一些,更應該關注面試者的事業心、對工作的熱情、進取心、自律能力、毅力等方面。
下面是一些典型問題:
五、考察理性思維
某些情況下,你可能需要了解面試者的分析判斷能力,看他能否全面地思考問題、客觀地評價自己。
那麼,你可以依次提出這樣三個問題:
這里的重點是,讓面試者從正反兩方面評價一件自己熟悉的東西,看看他的思維是否片面。答案無所謂對錯,只要面試者有一個明確的立場,能夠從正反兩方面說出令人信服的理由,就可以了。比如,某個軟體的口碑不好,但是面試者說他很喜歡,而且說得出一大堆理由,清楚地解釋了這種軟體的優點和缺點在哪裡,這樣就很好。
不邀自來。眾所周知,越大型的公司,分工越明確。在BAT裡面,有專門的前端,後端,ops,dba等等。他們專研一方面,所以有深度,有沉澱。遇到問題了,找到相應的人,能夠快速解決問題。
但絕大多數中小公司,更偏愛樣樣都會的全棧,恨不得你一個人把所有活兒做完。並不一定需要有多大深度,能幹活兒就行了。
再說,現在提倡devops,開發懂點運維,能夠更好地定位問題,部署和架構項目,這是需求,也是趨勢。
對小公司而言基本沒有專門的運維,所以需要研發具備一些運維的知識,比如資料庫的搭建、nginx、jdk部署,其它開源中間件,比如Kafka、es等等
其實這個目前真正大規模用的少,炒概念的多,很多公司根本沒機會用. 但是他會問
我覺得很自然的事,為什麼總有人說得高大上?裝個軟體,調個參數,做個邏輯卷,調一調網路,配置一下分布式組件,搞個文件系統程序員就應該不會?
這些工作,我們公司一般運維人員搞不定的。所以用啥,自己整。
個人觀點,計算機知識就必須全面,才能做好一個程序員吧?
而且看大家回復,我有8成猜對,有8成以上的架構師,不懂底層,知識面也沒傳說中那麼廣。
現在devops在流行,說白了企業為了省成本,研發要干一部分運維的活。運維只負責硬體網路和k8s維護,其他什麼部署啦,服務編排啦,通通交給程序員做。
不過這樣倒也合理,運維只負責全公司通用的設施建設,至於cicd,服務編排,熔斷限流等等,都和業務強相關,交給開發做比較貼近實際業務
F. 程序員如何轉型產品經理需要哪些逆天「裝備」
需要注意以下幾點:
1.關於契機
其實我覺得這不是契機的問題,是基因的問題,一個真正適合做程序員的人是不會考慮轉型的,在職業發展上,程序員比產品經理的路線更清晰,投入與產出比更穩定,而產品經理,說實話,是個很看臉的職業,這個職業的路線有很大的不確定性,為什麼我會轉型,因為我本就不適合做程序員,我無法滿足於翻來覆去就是Copy&Paste的工作,對於技術也沒有狂熱的追求,當然,我十分討厭加班,確切的說是無休止,非計劃性,帶有潛規則性質的加班。
你或許會問,既然不適合,你為什麼要選擇程序員這個職業呢?說實話,在沒做之前,我真的不知道我不適合。
回到正題,我是在一個什麼情況下轉型的產品經理呢,頗有些黃袍加身的感覺。人是有慣性的,放棄既有的優勢,去投入一個看似美好,卻很可能是刀山火海的職業,是一次危險的賭博。
沒有親身體驗產品經理,只能說是這山望著那山高而已,所以始終帶著不確定性,而當時公司規模急劇擴大,中層管理青黃不接,沒有產品經理的情況下,BOSS考慮到空降人員可能水土不服的問題,希望從內部發展可靠的同志,於是對我進行了先進性教育,我思前想後,就是那句「我發現你對產品很有感覺」,讓我抱著士為知己者死的念頭,決絕的點了點頭。
2.關於准備
說實話,沒有準備,也沒辦法准備,因為你面臨的是一個完全未知的崗位。就想你看別人玩游戲,和自己親自玩游戲,是完全不同的感覺。別人無比嫻熟的操作和風騷的走位使你拍案叫絕,但是你真正自己去玩的時候才發現,APM不夠啊,意識跟不上。
怎麼准備,看攻略,好吧,那些寫攻略的人往往討論的是在一個對方站樁的情況下,你怎麼來乾死它,卻沒討論,如果對方後退了一下,或者忽然又一個敵人出現了,你該怎麼面對。在實際的工作中,你面臨的是各種意想不到,千奇百怪的局面,想通過攻略來解決是完全不現實的。
3.關於有用
我覺得最有用的東西就是換位思考,以前做程序員的時候,我只需要考慮我怎麼來實現,我的時間夠不夠,項目什麼時候上線,有了任何問題,我可以等待,我可以扯皮,我也可以作壁上觀。但是作為一個產品的負責人(視公司崗位職責的不同,或許有很大出路),我就像一個管家婆一樣,必須時刻注意到哪裡可能出現炸彈,每天更多的時間不是在執行,而是在觀察,思考,應變中度過。
我不再擁有一個可供我自由分配的八個小時,我的上一秒可能在思考問題,下一秒就會有人過來找我,碎片時間變的很多,就連上廁所,都會有電話進來,你隨時保持著戰斗狀態,不能有一絲一毫的鬆懈。
這個時候再去看程序員這個崗位,你發現,原來是這個樣子的,但因為我也混過,我自然知道程序員的心態,這是我的最大優勢,我能夠和程序員很好的溝通,並能理解他們在別的策劃轉為產品經理的童鞋那裡難以理解的問題,所以我這邊的研發進度往往保障的很好。
我發現所有的事情都不是像我想像的那麼簡單,方案的問題,計劃制定的問題,人員本身的問題,處處都會產生蝴蝶效應,我總是在不安中小心翼翼的防微杜漸或亡羊補牢。
但我發現,即便我付出了再多的努力,項目還是會因為各種原因走向失敗,這個時候檢討是沒有意義的,天時地利人和,缺一不可,為什麼我說產品經理這個職業看臉,是因為這個職業看起來能決定任何東西,又發現自己決定不了最關鍵的問題,所謂盡人事,聽天命,以前總被我嗤之以鼻,我發現,有些時候,我真的很有共鳴。(作者:Robert Struggle)