首頁>Club>
42
回覆列表
  • 1 # IT人劉俊明

    作為一名從業多年的IT人,我來說說我對這幾個概念的理解。

    工程師是一個比較寬泛的稱呼,比如軟體工程師、硬體工程師、網路工程師、前端工程師等等,往往工程師崗位的工作內容更偏向於實施。比如我們研究所裡有研究員職稱體系,也有工程師職稱體系,一般從事實施任務的技術人員走的都是工程師職稱體系。工程師體系以專案實施情況作為重要考核標準,而研究體系則更多的看研究成果的技術含量、論文質量等等內容。

    程式設計師則是對專注於程式設計工作崗位的一種稱呼,程式設計師的崗位細分也非常多,有後端程式設計師、前端程式設計師、嵌入式程式設計師、移動端程式設計師(Android、iOS)等。程式設計師通常分為應用級程式設計師和研發級程式設計師,應用級程式設計師主要的工作內容是做業務功能實現,而研發級程式設計師往往解決的是系統級問題。簡單的說,應用級程式設計師往往是呼叫研發級程式設計師的功能模組來解決業務問題。科技公司中應用級程式設計師的數量通常大於研發級程式設計師,尤其是大型軟體企業。

    碼農是很多程式設計師對自己的一個“戲稱”,早期國內很多大型軟體公司的主要業務以外包為主,這種開發整體上來說技術含量比較低,大量的工作就是複製貼上,而且加班情況非常普遍,因此很多從事此類工作的程式設計師戲稱自己為“複製貼上員”、“搬運工”或者“碼農”等。目前隨著我國IT領域的結構化升級,“碼農”會逐漸消失。

    簡單的總結一下,工程口的技術人員多稱為工程師,研發口的技術人員多稱為程式設計師,技術含量低、工作量大的應用級程式設計師稱自己為“碼農”。

    如果有IT領域的問題,也可以諮詢我。

  • 2 # 大學生程式設計指南

    正常來講工程師範圍更加廣泛,包括程式設計師,現在有硬體工程師,實施工程師,安裝工程師等等都屬於工程師的範疇,一般稱呼程式設計師高大上的稱呼軟體工程師。

    程式設計師這個稱呼目前來講最貼切,但是很多程式設計師又自稱碼農,目前大部分的碼農其實和程式設計師是一個含義,碼農更多是工作枯燥程式設計師自嘲一種稱呼,覺得自己整天做在電腦旁邊和農民工沒有多少差異,真正意義上的碼農屬於程式碼的搬運工,從網上找找程式碼直接複製貼上,然後進行除錯。

    無論是叫程式設計師,還是工程師,還是大家自嘲用的碼農,保持自身的市場競爭力才是關鍵,名字只是一個表面的代號而已,現在科技更新速度之快,稍不留神就會發現自己已經落伍了,跟上新的技術熱點,讓自己時刻保持市場競爭力才是正道。

  • 3 # 萱言聊管理

    工程師,攻城獅,工程師是個比較泛泛的說法,包括很多種,比如軟體工程師、硬體工程師、機械工程師、測試工程師、器件工程師等等。

    程式設計師也就是軟體工程師,主要工作是程式設計,用程式語言編寫出程式,包括跑在電腦上的程式,和跑在手機上的APP。

    碼農一般是程式設計師的自嘲……碼農每天工作就是敲程式碼,或者說是複製貼上程式碼,所以碼農說自己是搬磚的。

    中國的程式設計師千千萬萬,但是面對巨大的需求,還是很缺好的程式設計師,所以很多人不管是學什麼專業的都要來當程式設計師,以為能夠翻身做主賺錢,其實程式設計師還真不是那麼好當的。

    只看到了光鮮亮麗的一面,而沒看到辛苦、無奈的一面。

    程式設計師們不是那麼好當的。

  • 4 # 北大青鳥中博軟體學院

    我們對大部分軟體開發人員統稱為軟體開發工程師,需要在有限的時間裡開發出有價值的應用程式,其中包含兩點,一是開發目標,另一個則是開發成本;

    程式設計師通常是由興趣驅使,主動的研究一些具有挑戰性的技術,給人以技術感及理想色彩,他們追求極致,會採用最新的方法,因此工程師更注重時間,而程式設計師則更在意執行時間,程式設計師經過一段時間的成長才能成為一個軟體開發工程師;

    而碼農常常被成為藍領工人(戲稱“人肉編碼機”),沒有人願意做程式碼的搬運工,因為軟體業裡的體力勞動者幾乎就是笨蛋的代名詞,也無法體現程式設計師的邏輯和真正意義。

  • 5 # 光明右使8787

    工程師通常是指佈署系統的人。程式設計師是指研發底層應用和基礎框架的人。碼農是在基礎框架上實現業務邏輯的人。大部分企業只有碼農,沒有程式設計師,框架一般用開源的。

  • 6 # java高階

    一、如何定義架構師

    Java架構師,首先要是一個Java程式設計師,熟練使用各種框架,並知道它們實現的原理。jvm虛擬機器原理、調優,懂得jvm能讓你寫出效能更好的程式碼;池技術,什麼物件池,怎麼解決併發量、連線池,執行緒池。

    Java反射技術,寫框架必備的技術,但是有嚴重的效能問題,替代方案Java位元組碼技術;nio,沒什麼好說的,值得注意的是”直接記憶體”的特點,使用場景;java多執行緒同步非同步;java各種集合物件的實現原理,瞭解這些可以讓你在解決問題時選擇合適的資料結構,高效的解決問題,比如hashmap的實現原理,好多五年以上經驗的人都弄不清楚,還有為什擴容時有效能問題?不弄清楚這些原理,就寫不出高效的程式碼,還會認為自己做的很對;總之一句話越基礎的東西越重要,很多人認為自己會用它們寫程式碼了,其實僅僅是知道如何呼叫api而已,離會用還差的遠。

    熟練使用各種資料結構和演算法,陣列、雜湊、連結串列、排序樹…,一句話要麼是時間換空間要麼是空間換時間,這裡展開可以說一大堆,需要有一定的應用經驗,用於解決各種效能或業務上的問題。

    二、技術歸納

    熟練使用linux作業系統,必備,沒什麼好說的 。

    熟悉tcp協議,建立連線三次握手和斷開連線四次握手的整個過程,不瞭解的話,無法對高併發網路應用做最佳化; 熟悉http協議,尤其是http頭,我發現好多工作五年以上的都弄不清session和cookie的生命週期以及它們之間的關聯。

    系統叢集、負載均衡、反向代理、動靜分離,網站靜態化 。

    分散式儲存系統nfs,fastdfs,tfs,Hadoop瞭解他們的優缺點,適用場景 。

    分散式快取技術memcached,redis,提高系統性能必備,一句話,把硬碟上的內容放到記憶體裡來提速,順便提個演算法一致性hash 。

    工具nginx必備技能超級好用,高效能,基本不會掛掉的伺服器,功能多多,解決各種問題。

    資料庫的設計能力,mysql必備,最基礎的資料庫工具,免費好用,對它基本的引數最佳化,慢查詢日誌分析,主從複製的配置,至少要成為半個mysql dba。其他nosql資料庫如mongodb。

    還有佇列中介軟體。如訊息推送,可以先把訊息寫入資料庫,推送放佇列伺服器上,由推送伺服器去佇列獲取處理,這樣就可以將訊息放資料庫和佇列裡後直接給使用者反饋,推送過程則由推送伺服器和佇列伺服器完成,好處非同步處理、緩解伺服器壓力,解藕系統。

    三、面試方面

    企業應用的系統架構師應該關注的幾個方面 (具體情況具體分析,以下未必準確,只是參考)

    先來一些基礎面試題,您答得出麼?

    1、說說JVM原理?記憶體洩露與溢位區別,何時產生記憶體洩露?

    2、用java怎麼實現有每天有1億條記錄的DB儲存?mysql上億記錄資料量的資料庫如何設計?

    3、mysql支援事務嗎?DB儲存引擎有哪些?

    4、mvc原理,mvc模式的優缺點,如果讓你設計你會怎麼改造MVC?

    5、hibernate支援叢集嗎?如何實現叢集?

    6、tomcat 最多支援併發多少使用者?

    7、map原理,它是如何快速查詢key的?map與set區別?

    8、描術演算法,如何有效合併兩個檔案:一個是1億條的使用者基本資訊,另一個是使用者每天看電影連續劇等的記錄,5000萬條。記憶體只有1G???

    9、在1億條使用者記錄裡,如何快速查詢統計出看了5個電影以上的使用者? ----可以參考 點陣圖索引的原理

    10、Spring如何實現IOC與AOP的,說出實現原理?

    以上純粹是常用的技術,還有很多自己慢慢去摸索吧;因為要知道的東西很多,所以要成為一名合格的架構師,必須要有強大的自學能力,沒有人會手把手的教給你所有的東西。

    想成為架構師不是懂了一大堆技術就可以了,這些是解決問題的基礎、是工具,不懂這些怎麼去提解決方案呢?這是成為架構師的必要條件。

    架構師要針對業務特點、系統的效能要求提出能解決問題成本最低的設計方案才合格,人家一個幾百人使用者的系統,訪問量不大,資料量小,你給人家上叢集、上分散式儲存、上高階伺服器,為了架構而架構,這是最扯淡的,架構師的作用就是第一滿足業務需求,第二最低的硬體網路成本和技術維護成本。

    架構師還要根據業務發展階段,提前預見發展到下一個階段系統架構的解決方案,並且設計當前架構時將架構的升級擴充套件考慮進去,做到易於升級;否則等系統瓶頸來了,出問題了再去出方案,或現有架構無法擴充套件直接扔掉重做,或擴充套件麻煩問題一大堆,這會對企業造成損失。

    在此跟大家分享一份工作2-5年的Java程式設計師學習路線圖:

    Dubbo、Redis、Netty、zookeeper、Spring cloud、分散式、高併發等架構技術

    總結:其實架構師定義是模稜兩可的,有些7、8年開發人員也算不上架構師,架構師一般是在某領域超乎常人的理解,在公司遇到技術方面難題的時候,這個時候如果你技術過硬,能快速的解決問題。

  • 7 # 小鳥慢慢飛

    工程師包括的工種很多,如軟體工程師,軟體工程師又分為多個工種:軟體開發工程師、軟體測試工程師、軟體運維工程師、資料庫管理員等。程式設計師專指軟體開發工程師。碼農是程式設計師對自己的戲稱之一。外行人把程式設計看得太神秘,給了程式設計師一些高大上的稱呼,如“研發”。

  • 8 # 電商和區塊鏈

    對應於軟體領域的開發工種,這些稱呼沒有區別。

    就如一個男子的老婆可以叫:妻子、愛人、賤內、娘子,等等等等。

    正式一點就叫工程師,隨意一點叫程式設計師,戲說一點就叫碼農。

  • 9 # 恩酷科技

    你這裡指的工程師應該是軟體軟體開發工程師

    軟體開發工程師、程式設計師、碼農光從字面上來講就不難看出,軟體開發工程師的社會地位普遍比較高,要有一定的資質證書,一定學歷,開發出軟體,而程式設計師更多的是重複寫程式,沒有開發的性質存在,碼農往往是程很多序員對自己的自嘲稱呼

    1、軟體工程師Software Engineer會把軟體作為一種工藝持續不斷提高,他不是簡單將東西硬拼在一起,他從工程角度構建軟體,並不是說其他人有點魯莽,但是軟體工程師共同點是講究巧妙,而不是直接率性。

    2、程式設計師Programmer能編寫令人驚奇的程式碼,使得它清楚、分解良好和很少出錯,這些都是他關心的方面,他們能寫好程式碼,並且掌握演算法天的工作內容,國內的程式設計師很多時候就是把別人已有的東西按照自己的——甚至不是自己的——需求裝配一下,沒有什麼創造性,

    3、碼農主要指的做一些重複性工作,碼農編寫的程式碼不太優美,也沒有良好的松耦合分解,但是程式碼能夠運作正常工作。

  • 10 # 夏洛克夜

    很明顯,這個問題屬於IT界。工程師當然是說的軟體工程師(Software Engineer)。與程式設計師,碼農都是屬於從事軟體程式設計的領域。說的通俗一點,都是在寫程式碼。他們的區別應該是這樣的。

    軟體工程師是從事軟體職業的人員的一種職業能力的認證。所具備的技術是比較全面的。具有軟體程式設計的架構思想。在工作中,把專案作為一項工程來開發。編寫的程式碼更具有架構,高內聚,低耦合;魯棒性較好等特點。

    程式設計師或許是外界對從事軟體程式設計人員的一種稱謂,或者也是這類人員的自嘲。編寫程式碼質量高,稍次於軟體工程師。

    碼農就純屬於自嘲了。本質上與程式設計師,工程師沒有太大區別。也就是說,這個稱呼更接地氣。當然,這類人從事軟體工程,或許並沒有太嚴謹的架構思維,設計思想;他們僅僅是為完成業務而編碼,從網路上搬運別人程式碼。

  • 11 # 專案經理笑哈哈

    在PM圈子網,有對於IT技術從業者有很多稱呼,有:碼農、程式設計師、工程師等。不管是CPPer,Javaer,還是PHPer等等,不少開發人員經歷過這樣的困惑:我到底是工程師(SDE,or Developer),程式設計師(Programmer),還是Coder(編碼員)呢?

    這個問題看上去似乎沒有什麼意思,甚至不過是一次無聊的名詞解釋。但是,我們以這裡作為所有話題的起點,是因為任何觀點並沒有絕對的對與錯,決定最終選擇的恰恰是看問題的角度——身份當然是其中的一個重要影響力。屁股決定腦袋,這樣的道理無需贅述。

    好吧,還是先回到這個話題上來。

    軟體開發工程師(SDE,or Developer)是我們大多數軟體開發人員的職業稱呼。既然是一個職業稱呼,其身份與職業自然有密不可分的關係。作為一個開發工程師,其主要職責是在有限的時間內開發出具有實際實用價值的應用程式。

    這裡面至少包含兩點。

    其一,開發目標。開發工程師的開發目標是使用,沒有使用價值的程式是沒有意義的;

    其二,開發成本。既然是職業稱呼,開發工程師的工作往往由商業因素驅動,其開發特點突出表現為大量的功能需求和有限的成本。因此需要開發工程師具備在各種需求(包括時間成本等等)之間尋求平衡的能力。

    程式設計師(Programmer)常常被簡單地被歸結為一群追求技術的狂熱分子,他們更多地由興趣驅動,開發一些有挑戰性的東西。這樣說也許並不確切,但毫無疑問,程式設計師這個名稱給人更多的技術感和理想色彩,以至於很多人把他作為自己引以為豪的稱號。我也喜歡自詡為程式設計師,甚至很多IT公司那些數年未寫一行程式碼的技術主管也喜歡自詡為程式設計師。

    程式設計師開發習慣的一個顯著特點是追求極致:最新潮的方法,最小的二進位制檔案大小,最少的程式碼量,最強大的功能……時間?唔,開發時間從來不是程式設計師工作的決定因素,它甚至根本不被考慮;執行時間倒是個重要因素,所有程式設計師聽到這個就像貓聞到腥味一樣。

    看上去,軟體開發工程師和程式設計師是多麼截然不同的兩種人。難怪有人說,軟體開發工程師來自火星,程式設計師來自金星。

    另外一些人給兩種稱呼設定了等級,似乎程式設計師經過一段時間的成長才能成為一個軟體開發工程師。當然,我不認同這樣的說法:不同的追求導致不同的發展而已。

    儘管我們給兩種稱呼映射了兩種截然不同的行為,然而實際上,這兩種行為常常同時出現在同一個人的身上:你可能上班時像個開發工程師,下班則更像個程式設計師;他可能對待一些問題時像個開發工程師,對待另一些問題時則更像個程式設計師。

    很多軟體專案開發週期過長,一個重要原因就是由於軟體開發工程師在開發當中融入了過多的個人樂趣,開發出了很多個人認為很酷其實不必要的功能。而一個程式設計師哪怕是搗鼓一個只有他自己才用的軟體,他也需要在他力所能及的範圍(成本)內開發出自己滿意的功能。

    與上面兩種稱呼不同,Coder(編碼員)常常被稱作軟體業的藍領工人(戲稱“人肉編碼機”)。沒有人願意做這樣的藍領工人,因為軟體業裡的體力勞動者幾乎就是笨蛋的代名詞。

    其實,絕大多數開發人員會常常扮演編碼員的角色。想想你複製一大段程式碼,修修改改完成一個功能,然後又複製另一大段程式碼,修修改改完成另一個功能的經歷,這不正是個Coder的角色麼?要將這些“體力編碼”的片段跟“腦力編碼”的片段分割開來,派給兩種開發人員去做顯然是不切實際的。

    即便存在Coder這樣的職業,只是從事將設計翻譯為程式碼的“體力”工作,他們的工作也仍然是舉足輕重並值得尊敬的。任何一個成功的軟體專案,除了得益於其成功的設計,編碼的質量一樣不可或缺。

    如果你真的領導著一些商業性專案開發,你應該會深深體會到編碼質量對一個專案舉足輕重的影響,而一個編碼質量令人放心的開發人員在任何組織裡都不會是簡單的Coder角色。

    再次強調,不管是SDE,程式設計師,還是Coder,我嘗試做出一些定義並不是為了讓你從無數開發人員當中區分出誰屬於哪一型別。恰恰相反,我認為對於絕大多數開發人員而言,他並不是一直扮演某一種角色,而是在不同時候,不同的方面,表現為不同的角色。

    我們區分這些型別,只是為了闡述觀點時,有一個角色的定位。但是,你知道,世界是複雜的,而人不會是一成不變的。

  • 12 # 千鋒武漢

    碼農是很多程式設計師對自己的一個“戲稱”,早期國內很多大型軟體公司的主要業務以外包為主,這種開發整體上來說技術含量比較低,大量的工作就是複製貼上,而且加班情況非常普遍,因此很多從事此類工作的程式設計師戲稱自己為“複製貼上員”、“搬運工”或者“碼農”等。目前隨著中國IT領域的結構化升級,“碼農”會逐漸消失。

    程式設計師則是對專注於程式設計工作崗位的一種稱呼,程式設計師的崗位細分也非常多,有後端程式設計師、前端程式設計師、嵌入式程式設計師、移動端程式設計師(Android、iOS)等。程式設計師通常分為應用級程式設計師和研發級程式設計師,應用級程式設計師主要的工作內容是做業務功能實現,而研發級程式設計師往往解決的是系統級問題。簡單的說,應用級程式設計師往往是呼叫研發級程式設計師的功能模組來解決業務問題。科技公司中應用級程式設計師的數量通常大於研發級程式設計師,尤其是大型軟體企業。

    工程師是一個比較寬泛的稱呼,比如軟體工程師、硬體工程師、網路工程師、前端工程師等等,往往工程師崗位的工作內容更偏向於實施。比如我們研究所裡有研究員職稱體系,也有工程師職稱體系,一般從事實施任務的技術人員走的都是工程師職稱體系。工程師體系以專案實施情況作為重要考核標準,而研究體系則更多的看研究成果的技術含量、論文質量等等內容。

    簡單的總結一下,工程口的技術人員多稱為工程師,研發口的技術人員多稱為程式設計師,技術含量低、工作量大的應用級程式設計師稱自己為“碼農”。

    無論是叫程式設計師,還是工程師,還是大家自嘲用的碼農,保持自身的市場競爭力才是關鍵,名字只是一個表面的代號而已,現在科技更新速度之快,稍不留神就會發現自己已經落伍了,跟上新的技術熱點,讓自己時刻保持市場競爭力才是正道。

  • 中秋節和大豐收的關聯?
  • 和貓一起睡覺,發生過什麼趣事?