導航:首頁 > 程序命令 > 程序員業務代碼

程序員業務代碼

發布時間:2023-08-21 14:52:18

1. 什麼是程序員什麼是代碼

程序員所寫的代碼,是為某一特定程序或某一個應用程序所制定的編碼和內部測試的組織實施,使此應用或程序應能夠在程序員編寫的代碼中,實現各種功能。程序員(英文Programmer)是從事程序開發、程序維護的專業人員。一般將程序員分為程序設計人員和程序編碼人員,但兩者的界限並不非常清楚,特別是在中國。軟體從業人員分為初級程序員、中級程序員、高級程序員(現為軟體設計師)、系統分析員,系統架構師,測試工程師六大類。代碼又臭又長
我見過最長的方法是5000多行,那段代碼沒人敢動,只敢往下加 if else,每次需要改這段代碼的開發都戰戰兢兢,生怕出現什麼莫名其妙的bug。java 可是一門面向對象的語言,一個方法裡面有5000多行可以說是很可惡的事情了。我想一開始代碼長度可能沒這么誇張,是什麼導致這種結果的?一個是當初寫這段代碼的人本身寫的是直來直去的方法,一堆if else ;後面迭代的開發,面對這么長的代碼瞬間失去了從頭讀到尾的耐心,直接繼續在後面加 if else 迭代,最後這個方法就變成了一個縫合怪一樣的玩意。
好的 sql 可以很大程度上簡化代碼的復雜程度,但是太過復雜sql 本身就會給後來的開發人員造成閱讀困難,結果又是變成一條無人敢動的祖傳代碼,我想這應該是不少公司極度抵制存儲過程的原因之一。當然不少銀行應用開發還是大量使用存儲過程,存儲過程有用武之地的,但是一個又臭又長的存儲過程就等著變成祖傳代碼吧。當年我見到一個60多個join的sql,看到第一眼就驚為天人從此難以忘懷,當然那段sql也成了沒人敢去動的代碼了。
代碼邏輯不明
代碼邏輯不明所以是我們開發很容易去犯的毛病,是一個不致命卻煩人的毛病。在代碼上的體現是,邏輯判斷寫的比較反人類各種雙重否定是肯定,不把你繞暈不罷休。或者是寫起代碼來東一榔頭西一棒槌,讓人不知道你想幹嘛。導致這個的原因有可能是開發人員在需求理解上出現偏差,做到後面發現不對勁,再回去改又不大可能了,只能硬著頭皮往下寫,結果就是代碼彎彎繞繞;還有很重要的鍋是在產品經理,任意變更需求,想一出是一出,開發人員無奈只能跟著想一出寫一出。還用可能是開發人員方法或者類命名太藝術了,什麼四川方言拼音這種沒有十年腦血栓想不出的命名咱就不說了。就說那種國產凌凌漆式的無厘頭命名——這看上去是個刮鬍刀實際上是個吹風機,就這種不知道讓人說什麼好。
規劃代碼的核心思想
吐槽了一堆代碼規范問題,接下來我們說說如何去規范我們的代碼以及如何做到就算開發人員更換了,或者項目轉手給他人了,仍然可以讓後面的開發可以無礙的去閱讀代碼修改代碼。當然各個公司/團隊都有自己的一套代碼規范,比如項目的結構、代碼命名風格、代碼格式等等。不同團隊有不同的風格,但核心思想是大同小異的。接下來我就我個人的開發經驗來分享一下一些代碼規范的思想。

2. 程序員做些什麼工作是打代碼嗎打代碼是為了完成什麼程序員需要有那些方面的知識需要哪些基礎

***簡單說明
1.首先程序員並不是打字員。代碼是有需要思考,需要結合實際業務,並不是簡單的打字。

2.打代碼是為了讓計算機根據自己的代碼邏輯(比如你可以讓它去打開某個文件),完成某些具體功能
程序員工作是基於一種計算機語言,用這種語言去實現某些具體的功能~
#程序員分類比如#:java 程序員,c++程序員等等
#代碼的作用#:比如你去銀行存錢。
a.古代最原始的存錢方法,就是你去錢庄存錢,然後錢庄用自己的一個記賬單給記錄下來,下次再存,再找到對應的記錄,修改那條記錄的信息。
當賬單頁數特別多的時候,這個時候找到一個用戶信息,就會變得很困難。

b.現在的方法,銀行都會有一些應用系統,你要存錢,但電腦並不能直接理解你要干什麼。
這個時候,就需要把你要存錢這個東西轉換成計算機能懂的東西。這些電腦能夠明白的東西
就是你所說的代碼,代碼會經過一些處理,變成二進制的數據,電腦就能理解了

3.需要哪些知識:
計算機的常用操作, 最少會 一門編程語言,會使用一種開發工具,熟悉一種資料庫等等...

3. 寫代碼是什麼工作

寫代碼是指程序員工作。

程序員是從事程序開發、程序維護的基層工作人員,一般將程序員分為程序設計人員和程序編碼人員,但兩者的界限並不非常清楚。

程序員的工作就是通過寫代碼進行軟體的設計、開發、測試、維護等。程序員一般分為初級程序員、中級程序員、高級程序員、系統分析員,系統架構師,測試工程師等幾個類別。

(3)程序員業務代碼擴展閱讀:

崗位職責:

1、對項目經理負責,負責軟體項目的詳細設計、編碼和內部測試的組織實施,對小型軟體項目兼任系統分析工作,完成分配項目的實施和技術支持工作。

2、協助項目經理和相關人員同客戶進行溝通,保持良好的客戶關系。

3、參與需求調研、項目可行性分析、技術可行性分析和需求分析。

4、熟悉並熟練掌握交付軟體部開發的軟體項目的相關軟體技術。

5、負責向項目經理及時反饋軟體開發中的情況,並根據實際情況提出改進建議。

6、參與軟體開發和維護過程中重大技術問題的解決,參與軟體首次安裝調試、數據割接、用戶培訓和項目推廣。

7、負責相關技術文檔的擬訂。

8、負責對業務領域內的技術發展動態進行分析研究。

4. 只會寫業務代碼的碼農,如何拿阿里的開發offer

最近公司需要招聘幾個java開發工程師,2個周面試了有20多人,有個很強烈的感覺:很多有天賦的開發者,技術面試表現差強人意,問原因比較統一歸結為——長期跟著公司只寫業務代碼,而自己沒有時間擴展提高,更不知道如何提高自己。

就此說說我的看法:如何提高自己?當然你再怎麼提高也不一定能拿到阿里的offer,不過至少能接近一點是一點嘛!哈哈

首先做個定性結論:要提高自己,首先要能寫好業務代碼!如果連業務代碼都寫不好,那麼你別讀下去了,轉行,出門右轉娛樂版!

寫好業務代碼的不一定很牛,但是連業務代碼都寫不好的一定好不了!

直接總結點干貨吧。

1,盡可能多熟悉業務

無論是不是你的業務盡可能的都弄明白,成為專家。你懂的越多,對團隊作用做大,別人越依賴你,你可以做到進可攻退可守。這是你的護城河

業務越熟悉,作出更加完美設計方案的可能性越大!

2,做端到端的專家

一個小問題:在PC瀏覽器里輸入 toutiao.com 點回車以後,從本地瀏覽器到伺服器再到瀏覽器中間發生了哪些處理?親們,有幾個人都把這個問題回答完美?我面試的時候問過很多人,有人連DNS是啥都不知道。。。。這是一個端到端的典型例子,但是細思恐極,DNS、瀏覽器緩存、本地host、路由、nginx反向代理、tomcat、集群、redis cache、mysql、代理、dfs、cdn。。。。,哇塞,好爽!我們做技術一定把知識做成體系化,很多人只知道springmvc的xml裡面配置映射,這是遠遠不夠的。

體系化,系統性,宏觀全局性,這些是能力提高的必備!說起來也不難,用心整理即可!

3,怎樣自學

如果你在一個成熟團隊,恭喜你,只要你用心,通讀現有架構多向別人請教,然後自己回家搞一套出來多練練就行了。

如果你有機會從頭開始搭建一套,那麼更加恭喜你,雖然很累很辛苦,但是只要你扛下來以後就是康莊大道。

JVM調優是啥?nginx、redis、mongoDB、neo4j、atlas、elasticsearch這些玩意是幹嘛的?好吧,如果你不知道,那麼恭喜你,我給你打開了一扇窗,自學去!但是我不可能天天來給你開窗,怎麼辦?簡單啊,開源中國多逛逛啊,infoQ,ITeye這些網站收藏起來,順便刪掉你的1024嘛!時間總會有的,你也總會牛起來的。

前天有人私信我問怎麼學redis?要買什麼書看?我說不要買書,去qq上找找相關的群加進去,再去網路找個最簡單的例子,在自己電腦上把redis裝上,然後敲命令,一個新手的知識就從網路上找+群里請教就足夠了,敲差不多了再結合自己的語言比如java,從網路上找例子能夠通過java執行命令,剩下就是進階,再群里多向大佬請教一下最好有業務能夠結合使用一下。怎麼結合spring,怎樣使用高級屬性,怎樣做到數據一致性等等。。。。。

當然,這個例子是完全自己學,其實這是很辛苦的,更快一點的辦法是借力,找懂的人幫你最快的開一個頭,入了門再開始自己研究,這就是我個人一直覺得在線學習網站app是非常好工具的原因!不要在乎那點錢,先開個頭再說!

4,學習——>實踐——>教別人

上面的第3條適合小白,非小白呢?以JVM調優為例子,我覺得三步走:

學習,了解基本知識,該網路的網路,該頭條的頭條,該花錢去上在線教育網站學習的也別在乎那幾百塊錢,學好了能幾百倍的賺回來,比投資股市和房地產都合算

實踐,就是動手嘛,公司項目能有機會練習更好,沒有的話自己動手吧。當然具體到JVM調優,一般看不出來效果的,你配啥參數都能跑起來,用jstat,jmap之類的也看不出來啥,那好,我們想辦法跑死它!執行無限循環、做超級大對象,讓它stop the world!你進行跟蹤!好玩的很呢。設計各種場景,多方位多角度的跟它折騰

你以為的「學會了」,跟真正的「學會了」是有差距的,差在哪裡?如果你有嘗試過去教會別人,或者自己准備寫個說明文章你就明白了,差距真大,目測好記層樓那麼高的差距。這幾天寫頭條,我深有體會,大家有興趣可以翻一下我前面的文章,我覺得我會的不少,但是寫的時候頭發都快被我自己薅沒了,真心難,不過寫的過程中不斷的否定自己、確認自己這一圈下來收獲也確實很大!好了,你懂該怎麼做了吧,有興趣一起來頭條寫文章吧,挺好玩!

本文不適合大牛!實在沒有那個能力去指導大牛。所以有覺得文章不妥的大牛們還請善意的回復指正和討論,上來就想罵街的還請您看在我敲了30分鍾字挺不容易的份上,饒我一命!代表全家老小在雙11這么偉大的日子給您想說一聲「謝謝」。

有緣的朋友,歡迎回帖探討。謝謝

5. 程序員是做什麼的

程序員一般的工作是從事程序開發、程序維護。

程序員是從事程序開發、程序維護的專業人員。一般將程序員分為程序設計人員和程序編碼人員,軟體從業人員分為初級程序員、中級程序員、高級程序員(現為軟體設計師)、系統分析員,系統架構師,測試工程師六大類。具體工作職責如下:

1、負責軟體項目的詳細設計、編碼和內部測試的組織實施,對小型軟體項目兼任系統分析工作,完成分配項目的實施和技術支持工作。

2、協助項目經理和相關人員同客戶進行溝通,保持良好的客戶關系。

3、參與需求調研、項目可行性分析、技術可行性分析和需求分析。

4、熟悉並熟練掌握交付軟體部開發的軟體項目的相關軟體技術。

5、負責向項目經理及時反饋軟體開發中的情況,並根據實際情況提出改進建議。

6、參與軟體開發和維護過程中重大技術問題的解決,參與軟體首次安裝調試、數據割接、用戶培訓和項目推廣。

7、負責相關技術文檔的擬訂。

8、負責對業務領域內的技術發展動態。

(5)程序員業務代碼擴展閱讀:

職業要求

一般的程序員都有四年的在專業領域的學習,需要一個在程序領域的學士學位獲得者,不論是數學方面的還是工程方面的都是可以的。

大約有20%的人在這一領域的計算機科學和工程學擁有更高的學位。還有很小一部分程序員是自學的,盡管一些專業性的學校或者綜合大學可以提供,但是也需要一些別的途徑來提供相關的人才。

盡管學歷是比較重要的,但是公司經常把重點放在應聘者的工作經驗上,很多剛從大學畢業的大學生雖然有引人注目的學位證書,但是他們找不到工作是因為他們缺乏經驗。

一個程序員雖然沒有正規的學歷,但是如果一個人擁有程序設計的深厚知識背景或者豐富的工作經驗的話,那麼他的機會要比有學歷的應屆畢業生大得多。

對於職業程序員,另外一個重要的方面就是,程序員需要不斷提升自己的業務技術,他的技術必須一直保持在一個較高的水平,並且要不斷發展,程序員也要尋找貿易的機會,要參加研討會,在周刊上發表文章和接受職業教育,這些使程序員在自己的領域中分級或者不斷並排前進。

6. 天天寫業務邏輯代碼改Bug,程序員該如何實現

這件事讓她自己也覺得不可思議:「以往我覺得編程與自己是遙不可及的事情,如今我發現編程可以像搭積木一樣,只要你有自己的業務邏輯藍圖,你就可以設計出自己想要的管理系統。」

編程可以像搭積木一樣簡單

易群利在網上查找很久關於企業信息化系統開發的各類商家後,最終發現雲表是最能幫助她實現自己願意的供應商。於是她於3月12日來到珠海參加了雲表開發工程師培訓。

ERP的顛覆者

雲表,是一個基於表格數據處理的免代碼的企業信息系統構建平台,這個系統內建了強大的底層編譯體系,它就像搭積木一樣編程,只要你會熟悉業務流程和計算公式,你就可以為自己設計一套管理軟體。

雲表創始人張軍是一名編程高手,在經過10年企業ERP開發無窮的折磨之後,他潛心研究表格插件,將企業管理的業務邏輯全部使用表格來進行描述,提出了「一切管理基於表格」的思想。在這個思想框架之下,雲表被他開發成一種能像「DEAMWARE」一樣可視化編程的軟體開發工具。

張軍在多年承攬客戶的ERP管理軟體開發過程中,嘗到了諸多痛苦,最大的痛苦在於客戶經常自己也不清楚軟體的業務邏輯應該是怎樣,頻繁的改動,讓他在代碼開發層面修改過程受盡折磨。於是,他希望開發一個平台,一是讓開發能夠快速適應需求的變更,更重要的是讓那些真正熟悉自己業務的人去為自己開發系統。這就要求用雲表開發一個系統,不需要任何編寫代碼的技能。

這件事情背後,是對原有包括全球一流ERP等企業信息化軟體二次開發體系的顛覆,因為,對於企業老闆來說,以往沒有程序員,不可能擁有合適自己企業的管理系統,而有了雲表,老闆們甚至自己動手,研究一兩個月,都能一個人將一個管理系統開發出來。

真正的「免代碼編程」系統

2016年3月12日,雲表創始人張軍首次進行了為期三天的合作夥伴培訓大會,這次合作夥伴大會,意在未來讓一群原本從事IT顧問的人員,用雲表這套系統,按照十分之一的成本,不編寫一行代碼,就能實現以往經過數月才能完成的系統功能。

7. 如何提升程序員的代碼編寫能力

一、先列三個常見的開發場景:

1、拿到一個模塊詳細設計文檔,大部分程序員的通常做法就是開始搭建界面代碼,然後從第一個按鈕點擊事件或頁面Load事件開始寫第一行業務代碼。寫的差不多了,就運行一下,發現哪裡不是自己想的那樣,就改改,直到改到是自己預想的那樣。

2、做完了一個功能模塊或幾塊相關聯的功能模塊,輸入111asd,發現新建正常、保存正常,就提交給測試人員。測試員用測試用數據、測試場景用例來測試,發現有問題,就登記bug。對於嚴重的影響下一步測試的BUG,測試員就用內部IM通知這個開發人員。對於不影響繼續往下測試的BUG,測試員就登記下來,等程序員有空時處理。

3、程序員一般工作不希望大家打擾,所以開發起來就是開發。等手頭開發告一段落,就看看BUG庫。發現有與自己有關的BUG,就從第一個BUG開始看起。就開始通過IM和測試員掰扯起來(這不是個BUG啊、業務邏輯不是你想的那樣啊、我這里不能重現啊、你給的信息描述不清晰啊),於是IM幾來幾往,甚至跑過去當面交流一番,甚至會拉扯上產品經理一起討論,更甚者需要項目經理或產品經理發起一個會議來集體討論一下

這是不是很熟悉呢?這就是大部分程序員開發的三個步驟:寫代碼、自測、修復BUG。

二、說好的代碼設計、代碼測試呢?

代碼設計?那不是都有開發平台么,已經固化了啊。那不是維護舊功能做完善修改呢么,又不是寫新代碼,只能在現有代碼基礎上修改啊,你又不能大幅重構。

代碼測試?你丫需求討論期、產品設計期、設計評審期那麼長,都把研發項目時間佔光了,就留下2個星期讓我們寫代碼,我們哪裡有時間搞那麼深的測試。還想讓我們搞結對編程?還想讓我們搞測試驅動開發?

而且你看測試,什麼功能測試、集成測試、性能測試、安全測試、安裝部署測試、升級測試、遷移測試、UAT測試,一大堆測試,測試也需要很多時間。

一個項目,需求討論、產品范圍規劃與評審、產品設計與設計評審佔了一個半月,開發+自測就一個月,測試佔了一個半月,這就4個月了啊。

三、為啥程序員寫代碼總是寫寫測測?

剛才大家也都看到了,大部分程序員都是從界面代碼開始寫起,而且寫一寫,就運行一下看看。為什麼會是這種開發方式?

那是因為大部分程序員缺乏在腦子中的整體建模能力。只能做出來一點,真實的感覺一下,然後再往下。

有些是產品經理的上游就有問題,沒給出業務流程圖(因為產品經理也沒做過業務),也沒畫清楚產品功能操作流程圖。

為啥沒給出業務流程圖?因為產品經理不熟悉業務,另外,產品經理也沒有流程建模能力啊。為啥沒畫清楚產品功能操作流程圖啊?因為不會清晰表達流程啊。

很多產品經理、程序員,都缺乏分類、分層、相關、先後能力,更別說總結、洞察能力。

這是基本訓練,是一個做事頭腦清醒的人必備的技能,這不是一個程序員或產品經理或測試員的特定技能要求。

我經常看書就梳理書的脈絡,每看一本就寫一篇總結。我過去閑扯淡還梳理過水滸傳、紅樓夢的人物關系圖呢,其實就在事事上訓練自己的關聯性、層次性、洞察性。

我經常面試一個人時,我會問這樣的問題:「你把我剛才說的話復述一遍,另外你再回答一下我為什麼會這樣?」,其實,我就在看一個人的細心記憶、完整梳理、重現能力,我也在看一個人的梳理、總結、洞察能力。

我個人寫代碼就喜歡先理解業務流,然後理解數據表關系,然後理解產品功能操作流,大致對功能為何這樣設計、功能這樣操作會取什麼表、插入或更新哪些表,哪些表的狀態欄位是關鍵。

然後我寫代碼的時候,就根據我所理解的業務流、功能操作流、數據輸入輸出流,定義函數,定義函數的輸入與輸出。

然後,我會給函數的輸入值,賦上一些固定值,跑下來看看能否跑通這幾個關聯函數,看看還需要怎樣的新增函數,或者看看函數的輸入輸出參數是否滿足跑通。

剩下的事,就是我填肉寫詳細邏輯代碼了。

當然,大部分人沒我這樣的邏輯建模能力。怎麼閱讀理解也想像不出來,也沒法定義函數。畢竟有邏輯建模能力的程序員都很少,100個人里有10個,已經是求爺爺告奶奶好幸運了。

那怎麼辦呢?

我建議是分離分工配合,這就是現實中沒辦法的辦法。讓有邏輯建模能力的人來設計函數框架、來設計工具來設計代碼模板,然後讓沒有邏輯建模能力的人來填肉寫詳細邏輯代碼。

我們可以先從最緊要的模塊開始這么做。不緊要的模塊,還讓它放任自流,讓熟練手程序員繼續塗抹。

我曾經還讓有頭腦的程序員做榜樣,給大家分享他是怎麼規劃函數的,怎麼做維護性代碼的代碼結構改善的。但是發現效果並不佳,其他人並沒有因此能做代碼設計。可能邏輯建模能力是個人的基本素質,是從小到大訓練成型的,不是你一個大學已經幾年的人能夠短時間內可以訓練的。

所以啊,還是讓能走的人先走,讓從最緊要的模塊開始這么做。

不必擔心這樣做後,因為過去一件事被分工(一個做代碼框架一個填肉)成兩個人做了會降低工作效率。我們很多的工作效率低就是因為半瓶子醋搞出來的,來回反復修改。

真是應了劉德華在電影里說的那句話:說你又不聽,聽又聽不懂,聽懂了又不做,做又做不好,做不好還不服氣。

四、為什麼大部分程序員不做代碼測試或白盒測試或單元測試呢?

還是因為沒有代碼設計。因為沒有函數啊。所以,一個按鈕功能有多復雜,代碼就有多長。我見過2000行的函數,我也見過1000多行的存儲過程和視圖SQL。怎麼做白盒測試啊,這些代碼都粘在一起呢,要測,就得從頭到尾都得測。

所以啊,先學會設計函數,先寫好函數,這就求爺爺告奶奶了。很多開發了5年的熟練手程序員,可能都未必會寫函數。

函數的輸入輸出值就很有講究。很多人都寫死了,隨著版本迭代,發現過去定義的函數參數不夠用了,於是就新增了一個參數。然後,相關性異常就爆發了,其他關聯的地方忘改了,到底哪些有關聯,怎麼查啊,本系統沒有,沒准其他系統就調用你了,你根本不知道哪個神經人曾經COPY過你的代碼修吧修吧就改成了他的功能呢,而且裡面的很多代碼他看不懂也不敢刪,只要他實現的功能正常了他也不管了。於是,你改了你這個函數,他的系統就莫名出錯了。

所以,我一般會定義幾個對象來做參數。另外,我也很注重函數的日誌、函數的異常保護、異常拋出、異常返回。另外,我也很注重參數輸入值的合法性校驗。

所以啊,應該開發Leader們先制定函數編寫規范最佳實踐,輸入輸出參數怎麼定義比較好,函數的返回值如何定義比較好,函數的日誌記錄應該怎麼寫比較好,函數的異常保護、異常拋出、異常返回如何寫比較好。先教會一般程序員,先從會寫函數開始啊。

當然,你光有一份規范,程序員們還是不理解、不實際應用啊。所以,還得Leader們做好典型的代碼模板,裡面是符合函數規范的代碼框架,只有這樣,一般程序員們才會照貓畫虎適應了函數設計的編程習慣。

所以啊,我專門重新定義了leader的明確職責,其中第一個重要職責就是:負責工具/框架/模板/規范的制定,並且負責推廣且普及應用落地。

你不明確定義Leader的這個重要職責,你不對這個職責做明確的KPI考核,誰尿你啊。你以為好的工具/框架/模板/規范是靠人們的熱情、自發產生的么?我們還沒有那麼自覺高尚啊。

五、為什麼大部分程序員不寫注釋啊?

我經常說一句話,千萬別多寫注釋。為啥?

因為我們經常遇到的問題不是沒有注釋,而是更糟的是,注釋和事實代碼邏輯是不相符的。這就出現常見問題了:殘存下來的設計文檔是一個邏輯、注釋是一個邏輯說明、真實代碼邏輯又是一個,鍾表多了,你也不知道正確時間了。

所以啊,產品文檔、注釋、真實代碼,三者總是很難一致同步。我為了幾百人研發團隊能做到這個同步花了大量心血和辦法,但我最終也沒解決了這個問題,還把Leader們、總監們、我都搞的精疲力盡。

索性回歸到一切一切的本源,代碼,就是程序員的唯一產出,是最有效的產出。那麼,讓代碼寫的不用注釋也能看懂,咱得奔著這個目的走啊。

為啥看不懂,不就是義大利面條式代碼么,又長又互相交雜。

OK,我就規定了,每個函數不能超過50行。用這一個簡單規定和靜態代碼檢查插件,來逼迫大家嘗試著寫函數。有的函數屬於流程函數,是串起其他函數的,有的函數就是詳細實現函數,實現一個且唯一一個明確作用的。

有了流程函數和功能函數,而且每個函數不超過50行,這就比過去容易看懂了。

六、為什麼大部分程序員不抽象公共函數啊?

我經常說一句話:千萬別抽象公共函數啊。為啥?

因為大部分程序員缺乏抽象洞察能力。特別是有些積極熱情有餘、愛學習愛看書、半瓶子醋晃悠的二桿子,看了幾本UML、重構、設計模式、整潔代碼之道,就躍躍欲試了,還真敢給你抽象公共函數了。

一開始,他覺得80%相似,20%不相似,於是在公共函數裡面簡單寫幾個if..else做個區隔就可以。沒想到,越隨著版本迭代,這些功能漸漸越變越不一樣了,但是這個代碼已經幾經人手了,而且這是一個公共函數,誰也不知道牽扯多少,所以誰也不敢大改,發現問題了就加一個if..else判斷。

沒想到啊沒想到,這個本來當初公共的函數,現在變成了系統最大的毒瘤,最復雜的地方,誰也不敢動,除非實在萬不得已,手起刀落。

所以,我平時告誡程序員,純技術的、純通用的,你們可以嘗試搞搞抽象公共函數,對於業務的,你們還是簡單粗暴的根據Leader們做的代碼模板代碼框架,乖乖的復制、修改、填肉吧。

你們啊,先從做模板做代碼片段開始吧,咱們放到咱們內部代碼片段開源庫里,看誰的代碼片段被別人復制的多,說明你的代碼抽象設計能力越好了。那時候,我就大膽放心讓你撒丫子跑了。在沒有學會跑之前,給老子乖乖的復制、修改、填肉吧。

8. 大家怎麼理解「業務代碼」為什麼有人覺得寫業務代碼很low

在我眼裡,也經常會把程序員分成兩類:一種是我等這種寫業務代碼的程序員,另外一種是研究高深演算法、造「輪子」的「科學家」...

將他們稱之為科學家是有些誇張,第一次冒出這樣的想法是參加一個技術大會,當別的嘉賓都在分享開發、設計、架構、管理方面的經驗時,一名在騰訊工作的演算法工程師(應該已經是一個小領導了),他上台分享了一些諸如:滑動平均自回歸模型、神經網路基因表達式編程、SVM回歸機集成學習...坐在台下的我第一次冒出這樣的念頭:「這**是科學家研究的東西吧。」

當然,倒也不能說寫業務代碼就很 low,寫業務代碼也不是想像中那麼簡單的。

寫業務相關的代碼,必須了解業務流程,還需要了解業務人員心裡是怎麼想的,也就是業務出發點是什麼樣子的。

比如我最近遇到一個需求,過程大概是這樣的:銷售人員在賣一款產品,這款產品非常火,有些優秀的銷售人員一周可能能賣出去幾百上千單;結果我們接到一個需求,要限制每個代理人的銷售數量,比如每人只能賣 10 個(之前已經賣掉的不算);這就讓我們非常奇怪,本來賣的好好的,為什麼要做這個限制呢?這個需求看起來就非常的不合理。

後來業務人員和我們解釋了一下原因:因為這款產品公司不掙錢,銷售人員為了推這個產品,花在別的產品上的時間就少了,所以出這個功能,就是讓銷售人員「收收心」,把精力放在其他產品上。

這么一解釋,我們就立刻明白了;所以如果你不明白業務的時候,看著需求敲代碼也是非常容易出錯的。

有些人會認為業務邏輯就是一堆 if-else,但是我認為在實際工作中,這些 if-else 也是非常難做到的。

業務邏輯是人設計的,業務邏輯難不可怕,可怕的是它不嚴謹和變化快;業務邏輯和那些確定性的東西不一樣,比如我們寫好的代碼 if-else 兩個分支,那麼再怎麼也不會跳出這個范圍,業務邏輯就不一樣了,它是非常靈活的、不確定的,業務機會來的快消失的也快,我們很難開發出來一套全面的、完善的、靈活的的系統,去應對將來可能會發生的需求。

所以在開發過程中,如果可以將業務流程拆分成多個組件模型,組件和組件配合完成一個完成的業務流程;當業務發生變化或有新業務的時候,只需要重新編排這些組件,或對某一個組件做少量更改,就可以滿足業務變化;如果能做到這個程度,也是非常不容易的。

在這個過程中,你需要做到高內聚低耦合,避免過度抽象,從業務流程和動機出發,已滿足業務需要為主;既然做不了「科學家」,我們就努力把業務代碼寫好把。

我將持續分享Java開發、架構設計、程序員職業發展等方面的見解,希望能得到你的關注。

首先,我認為寫業務代碼不「low」,但是大部分不假思索拷貝粘貼的業務代碼比較「low」,換句話說就是所謂的五年工作經驗就是把第一年的工作重復了五遍。

技術人員成長一般有兩條線,一條是成為技術專家,一條是成為領域專家。所謂的轉管理我理解也就是領域專家,畢竟不懂得領域知識是無法做好管理的,比如說你是互聯網金融某個業務部門的leader,那麼你肯定要懂金融。領域知識就是在不斷的寫業務代碼和思考中積累起來。

還有一個問題就是如何定義業務,比如說「實現一個修改訂單功能」,這是一個業務需求,看起來很low,但是如果業務需求改成「實現一個修改訂單功能,要求在有限資源的情況下並發10k,響應時間不高於10ms」,那這個需求就有挑戰。說這個問題想說明白一件事情,如果做業務不要停留的在業務表面,僅僅滿足於實現功能,要主動思考。

最後總結一下,沒有最好的技術,只有最適合業務的技術。技術是內功,業務是招式,內功不足,後續成長乏力,沒有招式,內功也不能發揮威力。這是也很多互聯網創業公司做大了之後要技術轉型的原因。

業務程序開發相對於底層基礎架構層的程序開發有所不同:

業務開發的時間比較緊,變化快。

這個特點導致程序員沒有時間重構代碼,或者不願意重構代碼,而是用最簡單粗暴的復制黏貼的方式快速實現業務邏輯。其實所有的復制黏貼都意味著需要重構。

底層系統的開發,一般是架構師和高級程序員來設計和控制項目時間。相對來說,開發周期長,變化緩慢。會更加註重架構的合理性和穩定性,而且會不斷重構和改進。

業務開發一旦完成,只要平穩運行就不會有人再回來補技術債務,不會把它寫得更好。除非這個業務爆發了,不得不從新架構以支持更高的並發。如果上線之後表現不佳,很可能下線不再維護。所以公司也不太願意花太多精力在一個還沒有被市場認可的產品項目上。

而底層架構框架的項目會在不同的產品項目中不斷應用。不斷地進化。就像Spring之類的開源框架一樣,不斷的升級和完善。

相對來說,業務開發程序員會花大量的時間學習和理解業務知識;而底層框架程序員更多的時間在學習技術架構。如果業務知識在行業內通用,比如財務,金融行業知識。那麼長期的積累對業務開發也是很有幫助的。如果業務是很小眾的,甚至,這幾個月做這個業務,下半年又做另一個業務,做的時候也一知半解,就像很多外包一樣,那就沒有什麼業務沉澱了。

我就是寫業務代碼的,不過我覺得這很正常啊,不知道你是怎麼就覺得low啦?

所以,做為一個企業,支撐發展的肯定是他的業務,不管是賣什麼服務,都要通過業務來賺錢,可能針對業務,企業內部還會做一些細化。比如說,有人會是做一些前端,一些人做後端,還有運維,運營,產品的配合。前端再細化,一部分人會做一些頁面的展示,呈現,還有一部分人會做一些適合業務的工具,來提升開發效率。

那如果你自己的定位是只是單單寫頁面的,那隻能說你對自己的要求有點低,你沒有去考慮如何做一些提升工作效率的事情。舉個例子,比如說常見的後台管理系統,因為功能都很類似的,那你有去考慮如何做一個通用的模版嗎,還是就是不斷地去重復。

這個別人的產出,做了一個vue的後台管理系統的模版,現在的GitHub star在6萬多,通過這個項目,他就可以得到更多人的認可,也能得到更多的好的工作機會。

所以,不要覺得業務代碼就是low的,要善於去總結,然後再分享自己的經驗,沒准你也能成為一個領域內的Top。

不要太在意所謂low與不low,需要在意的是做了這個項目或業務後,對自己的能力有沒有長進,如果有,那說明不low。如果沒有,那說明你只是在機械的勞動而已。

每個大佬都是從業務代碼做起的,大佬們注重的是能否成長,學習實踐的機會,以及平台的大小和未來是否和自己的目標相匹配。

總結來說,只要能提升自己能力的任何工作,都是值得的。

業務代碼不一定low,能完成用戶需求的代碼就是好代碼。

另外,對於我們搞嵌入式軟體、EDA工具軟體的來說,業務軟體反而是更有技術含量的,更具科學意義的代碼,而軟體可能只是載體,你啥時候透過代碼理解了它們背後的物理概念、數學公式,你就超越了程序員,能向科學家又邁進一步。

互聯網軟體其實也一樣,軟體實現的是一個業務流程的自動化,你完全可以透過你寫的程序還原甲方用戶的業務流程,而這種流程是老闆制訂的,認識會上一個層次,將來可以向老闆邁進

我覺得首先大家要理解什麼是「業務代碼」,業務代碼是一個相對的概念。

1.對於一個一般的物聯網應用型公司來說,業務代碼就是根據客戶需求基於一個MCU或者MPU的應用控制邏輯的實現。

2.對於一個做純上層應用的公司來說,業務代碼就是基於一個操作系統為客戶量身定製對應的app,並實現對應的應用邏輯。

3.對於一個微型控制器設計廠商,業務代碼就是底層架構裸機的具體實現和各個外設驅動的框架設計。

4.對於一個設計操作系統的開發人員來說,業務代碼就是架構設計、內存管理、調度機制優化、優先順序管理、進程間通信機制優化、線程管理和內核完善等等。

所謂」業務代碼」都是相對的,沒有參考系怎麼談。像操作系統,站在操作系統內核提供方的角度看,上層所有的應用框架,進程服務,都是業務代碼,我是為他們服務的。技術只是工具,業務實現才是目的,站在不同供應商的角度,只要涉及代碼的地方都可以稱之為業務代碼。所以站在這個維度,如果要說業務代碼「LOW」,那就沒有代碼是不"LOW"的了。

不過,真正接觸底層或者實現RTOS底層業務框架的工程師其實是很少的。大部分工程師基本上都是對於客戶需求做一些非驅動底層非操作系統框架的應用型的開發,所以大多時候「業務代碼「又單一的被指向了那些只是對客戶的上層應用的需求做開發、調整或者迭代的代碼。

而這部分代碼究竟"LOW"還是不"LOW"呢,我的答案是:不"LOW"。但是現實卻是很「LOW」,之所以會被想成LOW,是因為:

1.判斷一個程序員的優秀程度已經不單單看你寫了多少應用型的代碼,設計了多少應用框架,而是你懂不懂底層驅動邏輯,懂不懂操作系統內核,懂不懂內核裁減等等。所以這種情況會經常出現在面試過程中,面試官會因為你不懂底層驅動、不懂內核而給你比較低的薪水。

2.懂得寫業務代碼的人,他的程序員基礎並不一定就牢固。因為上層應用可能對業務比較看重,但是對於一些特定的語言的編程並沒有那麼嚴謹。能用就可以,所以會自然而然的認為這樣的程序員「LOW」。而一個會寫底層驅動的人,他考慮更多的是基礎代碼的安全、嚴謹性和容量問題等等,他們的語言基礎相對來說要牢固很多。

3.技術負責人一般都是全能型的人。會寫底層驅動或者更懂操作系統內核的人更容易成為技術的領頭人。而那些只會「業務代碼」的人,放在大部分公司,一般都不會有太多的上升空間。

根據以上分析過後呢,做「業務代碼」的程序員基本上會被想的很「LOW」,但是結合我的親身經歷,不同的人對於這個事情卻會有不同的看法。

比如對於領導來說,那就不一樣了。你將「業務代碼」的需求迭代了,完善了,提前任務完成了,客戶很滿意。那領導不會認為你是一個很「LOW」的程序員。你很高級,領導很欣賞,「後果」很舒服。但是對於一個面試官來說,你就會點上層應用的調用和設計。我為什麼要給你這么多薪水?雖然會被想成很"LOW",但是也是現實。

好了,這個問題就回答到這里,以上都是個人結合實際經歷的一些體會,喜歡的加關注,我是一名深漂的嵌入式程序員,歡迎私信留言,感謝!

我有面試過一個40歲的程序員,做過幾百個網站,要求工資才6000元,他只會做簡單的企業網站,因為他一直在很小的公司工作,只能做小項目,這我覺得是業務代碼,就是做一些重復和沒難道的工作。

林子大了什麼鳥都有,不知道你說的有人是指多少比例的人。我的理解代碼可以分為兩類:1:工具欄或者框架類2:業務類。寫工具類偏重於健壯可拓展可復用;寫業務類偏重於邏輯嚴謹沒有漏洞,化繁為簡。畢竟有些時候需求或者業務都不甚清楚他們想要的邏輯。有時候復雜的業務流程你捋都不順,更別說代碼寫的好了。當然,工具類到高深,工具好用,框架優秀確實需要的技術功底深厚,比業務類要考慮的東西也多,但不代表寫業務類代碼很low。當然,不管寫什麼代碼,完全復制黏貼而不去考慮與實際場景結合,不去想為什麼?有沒有更好的處理方案是比較low的

有人覺得low

1.可能是覺得沒有什麼技術含量吧,用的都是一些成熟的技術框架,就是一些增刪改查而已,但是這並不意味著寫業務代碼就很簡單,因為這裡麵包含著業務邏輯,業務邏輯有簡單的也有復雜的,如果對業務邏輯業務背景不理解或理解不透就很難實施下去,其實現在很多專家級別的程序員並不是技術有多牛,而是對某個行業領域有比較深刻的理解。

2.還有可能就是內心裡對業務就很輕視,這個更是不應該的,因為技術是為業務服務的,是業務讓技術變的有價值。

9. 對程序員來說最難的是寫代碼嗎

謝邀。我是一名Java後台開發,還是一名工作沒多久的「碼農」。寫代碼作為工作的一部分其實不算難,甚至程序員寫代碼的時間比其他事情花的更少。我就分享一下咱們Java後端開發的小體會吧:

初級程序猿大部分都是寫增刪改查的業務代碼,增刪改查最需要技術含量的是查,歸根結底都是寫SQL語句,有的業務邏輯復雜一點就SQL語句復雜一點,或者資料庫里不好處理就在Java代碼里處理。只要資料庫學的還行,MySQL比較會用,Java功底有一定基礎,基本上都能勝任敲代碼的工作。

文|熱心哥哥宇文笑

文|熱心哥哥宇文笑

業務復雜
,有的系統尤其是一些toB的系統,比如一個上市公司的超市人力管理系統,這是非常復雜的,人事組織,薪資社保,還要針對不同地區分公司不同類別的員工進行不同的代碼處理。

業務復雜

需求變動頻繁
,有些項目的顧問或者產品經理沒把控好,導致需求被客戶拖著走,搞產品的可能覺得也就變化一點點東西,實際上有的功能代碼需要後端重寫,資料庫的表結構一變,那改動也是得跟著變。咱們敲代碼的朋友最不喜歡的就是返工,我們寧願去接受更多的開發新任務也不想再去重寫自己以前寫的代碼。(不用說什麼重構,這些業務代碼重構其實並沒有什麼技術上的突破)

需求變動頻繁

代碼優化
,其實比較難得住人得,尤其是難住我們這些剛入行的程序員。有的業務數據量龐大,就得先考慮資料庫優化,代碼多線程優化,總之優化代碼倒是一件比較進階的拆事,比敲代碼難。

代碼優化

來說說,作為程序員的你,最難的什麼呢?

閱讀全文

與程序員業務代碼相關的資料

熱點內容
線程javalock 瀏覽:892
c語言編譯運行結果查看器 瀏覽:110
androidpx轉dip 瀏覽:839
西藏編譯局是什麼級別 瀏覽:999
php提交代碼 瀏覽:597
如何用命令查找並刪除代碼塊 瀏覽:580
python初學路線圖 瀏覽:531
matlab遺傳演算法旅行商問題 瀏覽:304
將辦公軟體加入加密軟體的進程 瀏覽:724
聯想小新pro14編譯器 瀏覽:460
為什麼伺服器要關掉icmp協議 瀏覽:853
源碼編輯器如何設置難度 瀏覽:353
給pdf加目錄 瀏覽:476
加密軟體怎麼改安全問題 瀏覽:552
cmd命令ip 瀏覽:946
python輸出單引號雙引號 瀏覽:272
腳本編程管理命令 瀏覽:379
小愛音箱pro怎麼自己裝app 瀏覽:118
建立ftp文件夾命令 瀏覽:571
sha1withrsa演算法 瀏覽:454