0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

開(kāi)發(fā)人員有必要過(guò)度追求軟件靈活性嗎?

5RJg_mcuworld ? 來(lái)源:未知 ? 作者:胡薇 ? 2018-04-28 08:53 ? 次閱讀

代碼量少了不代表軟件的復(fù)雜度降低了,而是編程語(yǔ)言的表達(dá)力更強(qiáng)了。太多開(kāi)發(fā)人員癡迷于框架,過(guò)度追求軟件靈活性、可組合性等等,而忘記自己是不是真的需要這些。

在有軟件之前,只有黑暗。自從時(shí)代的黎明到來(lái)后,一直存在一個(gè)不變的事實(shí):企業(yè)想要構(gòu)建價(jià)格更低、運(yùn)行更快的軟件。

當(dāng)然,這是可以理解并且值得稱(chēng)贊的目標(biāo)——尤其是你曾經(jīng)花費(fèi)時(shí)間跟軟件開(kāi)發(fā)人員打過(guò)交道。每個(gè)工程師都應(yīng)該全心支持此目標(biāo),并且在當(dāng)前環(huán)境的約束下,應(yīng)該始終努力盡可能有效率地創(chuàng)造產(chǎn)品。

然而,事實(shí)上,我們經(jīng)常做不到這一點(diǎn)。并非故意為之,只是隨著時(shí)間流逝,在構(gòu)建軟件時(shí)會(huì)因?yàn)橐饬现獾膹?fù)雜性而陷入困境,因此自我訓(xùn)練以尋找邊界案例、差距分析以及所有可能起源于同一個(gè)需求要點(diǎn)的隱藏故障。

我們被大量的復(fù)雜度以及設(shè)計(jì)優(yōu)雅解決方案的精神執(zhí)念所迷惑:另一層抽象!干起來(lái)!分離相關(guān)量!繼承構(gòu)成!這也是可以理解的,但是在這個(gè)過(guò)程中,我們經(jīng)常忽略正在被解決的業(yè)務(wù)問(wèn)題,忘記管理復(fù)雜度是軟件開(kāi)發(fā)人員次重要的責(zé)任。

為什么會(huì)造成現(xiàn)在這樣的局面?

軟件在某些方面上已經(jīng)變得更加簡(jiǎn)單了

在過(guò)去的幾十年里,軟件產(chǎn)業(yè)非常成功地降低了編寫(xiě)大多數(shù)軟件所需要的自定義代碼量。

這種減少大部分是通過(guò)使編程語(yǔ)言更有表現(xiàn)性來(lái)實(shí)現(xiàn)的。像 Python、Ruby 或 JavaScript 這些語(yǔ)言可以用不到C 語(yǔ)言三分之一的代碼來(lái)實(shí)現(xiàn)相似的功能。使用 C 語(yǔ)言取代匯編語(yǔ)言編寫(xiě)程序也同樣帶來(lái)了類(lèi)似的優(yōu)勢(shì)。可以預(yù)見(jiàn),在未來(lái),語(yǔ)言設(shè)計(jì)不大可能帶來(lái)如同過(guò)去幾十年一樣的改進(jìn)。

然而也有很多其他不需要讓語(yǔ)言更具有表現(xiàn)力的方法,可以精簡(jiǎn)構(gòu)建軟件的代碼總量。截止到現(xiàn)在,在過(guò)去的二十年里,我們最大的收獲是開(kāi)源軟件(OSS)。如果沒(méi)有個(gè)人和公司將資金投入到他們?yōu)樯鐓^(qū)免費(fèi)贈(zèng)予的軟件中,沒(méi)有這么多的代價(jià)和努力,那么我們今天所構(gòu)建的大部分軟件將不會(huì)實(shí)現(xiàn)。

這些項(xiàng)目使我們能夠站在巨人的肩膀上解決問(wèn)題,利用工具讓我們更專(zhuān)注于解決業(yè)務(wù)問(wèn)題,而不是花時(shí)間建設(shè)基礎(chǔ)設(shè)施。

也就是說(shuō),業(yè)務(wù)是復(fù)雜的??尚Φ膹?fù)雜,而且只會(huì)更多,開(kāi)源軟件非常適合生成用以構(gòu)建系統(tǒng)的框架和工具,但在很大程度上為了獲得關(guān)注,又必須解決大量人員共享的問(wèn)題。因此,大多數(shù)開(kāi)源項(xiàng)目要么是相對(duì)通用的,要么是處于非常受歡迎的領(lǐng)域。因此,這些工具中的大部分都是建立系統(tǒng)的絕佳平臺(tái),但最終我們?nèi)匀恍枰谌找鎻?fù)雜且要求苛刻的系統(tǒng)中構(gòu)建所有業(yè)務(wù)邏輯和接口。

所以我們剩下的是一個(gè)看起來(lái)像這樣的棧(對(duì)于 web 應(yīng)用程序)…

“Our Code”部分最終變得非常復(fù)雜,因?yàn)樗从沉藰I(yè)務(wù)及其流程。如果我們有自定義的業(yè)務(wù)邏輯和自定義流程,那么我們只需編寫(xiě)組建應(yīng)用程序的接口、工作流程和邏輯即可。當(dāng)然,我們可以嘗試用不同的方式來(lái)記錄該邏輯(記住業(yè)務(wù)規(guī)則引擎?),但最終,沒(méi)有其他人會(huì)為您的業(yè)務(wù)編寫(xiě)業(yè)務(wù)邏輯。實(shí)際上似乎沒(méi)有辦法解決這個(gè)問(wèn)題……至少是在機(jī)器人到來(lái)并將我們從工作中解救出來(lái)之前。

不喜歡代碼,那么低代碼(Low-Code)如何?

如果我們必須開(kāi)發(fā)應(yīng)用程序的接口、工作流程和邏輯,這聽(tīng)起來(lái)像是難住我們了,對(duì)嗎? 在某種程度上,是的,但我們?nèi)杂袔讉€(gè)選擇。

對(duì)于大多數(shù)開(kāi)發(fā)者來(lái)說(shuō),軟件等于代碼,現(xiàn)實(shí)并非如此。 開(kāi)發(fā)軟件有許多方法,其中一種是使用可視化工具。 在網(wǎng)絡(luò)普及之前,視覺(jué)開(kāi)發(fā)和 RAD 工具在市場(chǎng)上占有更大的地位。 諸如 PowerBuilder、visual Foxpro、Delphi、VB 和 Access 等工具都具有可視化設(shè)計(jì)功能,允許開(kāi)發(fā)人員在不輸入任何代碼的情況下創(chuàng)建界面。

這些工具涵蓋了需要編寫(xiě)的代碼,但總的來(lái)說(shuō),你可以直觀地設(shè)計(jì)應(yīng)用程序,然后編寫(xiě)大量代碼來(lái)實(shí)現(xiàn)應(yīng)用程序的邏輯。 在很多情況下,你仍然用編程操作接口,因?yàn)槭褂眠@些工具構(gòu)建的接口通常是靜態(tài)的。 但是,對(duì)于大量應(yīng)用程序,這些工具通過(guò)舍棄其他性能獲得了巨大的生產(chǎn)力,主要是以靈活性為代價(jià)。

自從網(wǎng)絡(luò)興起后,這些工具可能已經(jīng)不再流行,但公司對(duì)它們的渴望并沒(méi)有降低,尤其是因?yàn)閯?shì)不可擋的軟件需求仍然持續(xù)不斷。 整個(gè)行業(yè)最新趨勢(shì)是“低代碼”系統(tǒng)。 低代碼開(kāi)發(fā)工具是最新一代拖放式軟件開(kāi)發(fā)工具的現(xiàn)代術(shù)語(yǔ)。 這些工具和其他工具之間最大的區(qū)別在于,它們主要基于 Web(和移動(dòng)端),并且通常被托管于云平臺(tái)。

許多公司正活躍于這些平臺(tái)上。Salesforce(App Cloud)、Outsystems、Mendix 以及 Kony 等廠商承諾能夠比“傳統(tǒng)”應(yīng)用程序開(kāi)發(fā)快許多倍。 雖然他們的很多說(shuō)法可能很夸張,但也有一定的可信度。依賴(lài)類(lèi)似上述平臺(tái)的所有弊端,可能的確導(dǎo)致某些類(lèi)型的程序比使用 .NET 或 Java 的傳統(tǒng)程序開(kāi)發(fā)更快。

那么,問(wèn)題是什么呢?

的確有幾個(gè)問(wèn)題。 首先,有經(jīng)驗(yàn)的開(kāi)發(fā)人員經(jīng)常討厭這些工具。 大多數(shù)嚴(yán)肅的開(kāi)發(fā)人員? 喜歡使用真實(shí)代碼? 編寫(xiě)真正的軟件?。 我知道這聽(tīng)起來(lái)像我正在迎合一群?jiǎn)柩实膵雰海ㄒ苍S我有點(diǎn)兒),但如果你傳遞的核心價(jià)值是技術(shù),那么采用頂尖開(kāi)發(fā)人員不喜歡使用的工具并非是個(gè)好主意。

其次,像我這樣的人看著這些被封裝的平臺(tái),說(shuō)“不,不要在這里構(gòu)建應(yīng)用程序”。這是合情合理的憂慮,也是最讓我困擾的事情。

如果你10 年前用 PHP 搭建了一個(gè)應(yīng)用程序,那么這個(gè)應(yīng)用程序可能會(huì)顯老,但它現(xiàn)在仍然可以嗡嗡作響。 語(yǔ)言和生態(tài)系統(tǒng)都是開(kāi)源的,并由社區(qū)維護(hù)的。 你需要保持應(yīng)用程序持續(xù)更新,卻不必?fù)?dān)心供應(yīng)商斷定不再值得花時(shí)間支持。

像我這樣的人看著這些被封裝的平臺(tái),說(shuō)“不,不要在這里構(gòu)建應(yīng)用程序”。這是合情合理的憂慮,也是最讓我困擾的事情。

如果你 10 年前選擇了有自己平臺(tái)的供應(yīng)商,那么如果他們關(guān)閉工具或頻繁更改工具(還記得 Parse 么?),你可能會(huì)被迫重寫(xiě)程序?;蛘吒?,你的系統(tǒng)會(huì)停滯在一個(gè)停止更新、不再支持服務(wù)的平臺(tái)上。

有很多理由去警惕這類(lèi)平臺(tái),但對(duì)許多企業(yè)來(lái)說(shuō),以更少的付出來(lái)搭建軟件太具誘惑以至于不忍拒絕。 軟件的復(fù)雜性仍在持續(xù),不幸的是軟件工程師幫不上任何忙。

什么需要改變?

有高效的平臺(tái),可以讓我們用真實(shí)代碼? 構(gòu)建真正的軟件?,但不幸的是,軟件行業(yè)太過(guò)擔(dān)心于跟隨科技巨頭地領(lǐng)導(dǎo),以至于沒(méi)有意識(shí)到他們的工具并沒(méi)有對(duì)項(xiàng)目添加任何價(jià)值。

我無(wú)法告訴你有多少次,曾遇到開(kāi)發(fā)人員跟我說(shuō),相比于僅僅渲染 HTML,構(gòu)建單一頁(yè)面應(yīng)用程序(SPA)類(lèi)似的東西并不會(huì)增加開(kāi)銷(xiāo)。我曾聽(tīng)開(kāi)發(fā)人員說(shuō)過(guò),所有應(yīng)用都應(yīng)該基于 NoSQL 數(shù)據(jù)庫(kù)來(lái)開(kāi)發(fā),而關(guān)系數(shù)據(jù)庫(kù)逐漸沒(méi)落了。也曾聽(tīng)開(kāi)發(fā)人員質(zhì)疑為什么應(yīng)用程序不是用 CQRS 和事件溯源編寫(xiě)的。

正是這種思維過(guò)程和常規(guī)的開(kāi)銷(xiāo)導(dǎo)致公司認(rèn)為軟件開(kāi)發(fā)過(guò)于昂貴。 你可能會(huì)說(shuō),“但事件溯源如此優(yōu)雅!在微服務(wù)之上搭建 SPA 如此整潔!”當(dāng)然,它可能是,但對(duì)你這種正在寫(xiě)十個(gè)微服務(wù)的人來(lái)說(shuō)不是這樣的。這種額外的復(fù)雜性往往是不必要的。

作為從業(yè)人員,我們需要找到各種方法來(lái)簡(jiǎn)化搭建軟件的過(guò)程,并且不忽視業(yè)務(wù)的合理復(fù)雜性。 我們需要承認(rèn),并非每個(gè)應(yīng)用程序都需要與 Gmail 相同層次的界面復(fù)雜性和運(yùn)營(yíng)擴(kuò)展性。 有很多應(yīng)用程序需要經(jīng)過(guò)深思熟慮的界面、復(fù)雜的邏輯、堅(jiān)實(shí)的體系結(jié)構(gòu)、流暢的工作流程等。但不需要微服務(wù)、AI、chatbots、NoSQL、Redux、Kafka、Containers 或任何類(lèi)似的工具。

如今很多開(kāi)發(fā)人員似乎對(duì)技術(shù)能力非常著迷,以至于他們不能退后一步,問(wèn)問(wèn)自己是否真的需要這些。

就像 MasterChef 上的人一樣,他們以分子美食家的身份入場(chǎng)兜售自己。 他們將原料分成不同的組成部分,使用科學(xué)配對(duì)口味的方法,然后用大量的二氧化碳和液氮來(lái)制作你見(jiàn)過(guò)的最有創(chuàng)意的食物。 然后他們會(huì)在一兩集之后被踢開(kāi),因?yàn)樗麄兺浟舜蠖鄶?shù)烹飪的核心原則,即食物需要口感好。 他們似乎真的很驚訝于沒(méi)有人喜歡他們發(fā)酵的茴香和芒果精華珍珠加上抹了鳀魚(yú)沫的鱈魚(yú)肉。

對(duì)靈活性、可組合性和機(jī)敏性的癡迷正在給我們帶來(lái)巨大的痛苦,并迫使公司遠(yuǎn)離我們所喜愛(ài)的平臺(tái)和工具。 并不是說(shuō)我上面列出的那些工具不會(huì)增加價(jià)值,盡管大公司在大規(guī)模操作系統(tǒng)時(shí)會(huì)遇到典型問(wèn)題,工具也僅是為了解決真正的痛點(diǎn)而產(chǎn)生的。

我所說(shuō)的是,我們需要回到簡(jiǎn)單化的方向,并開(kāi)始以更簡(jiǎn)單的方式創(chuàng)造事物,而不是僅僅一直討論簡(jiǎn)單性。 也許我們可以依靠更多的集成技術(shù)棧來(lái)提供開(kāi)箱即用的模式和工具,以便軟件開(kāi)發(fā)人員能夠更高效地創(chuàng)建軟件。

我們將把越來(lái)越多的業(yè)務(wù)添加到“低代碼”平臺(tái)和其他通過(guò)簡(jiǎn)化、移除起初寫(xiě)過(guò)的代碼來(lái)降低軟件成本的工具中。

我們需要停止假裝二十行的程序是一些需要認(rèn)真手工縫制的獨(dú)特掛毯。

聚焦簡(jiǎn)單性

寫(xiě)完之后,我仿佛聽(tīng)到一百萬(wàn)位開(kāi)發(fā)人員磨刀的聲音,但我相信如果我們繼續(xù)堅(jiān)持如下方向:想寫(xiě)所有東西、配置一切、編寫(xiě)所有內(nèi)容、無(wú)論多大規(guī)模的問(wèn)題都使用相同的堆棧,那么我們將把越來(lái)越多的業(yè)務(wù)添加到“低代碼”平臺(tái)和其他通過(guò)簡(jiǎn)化、移除起初寫(xiě)過(guò)的代碼來(lái)降低軟件成本的工具中。

我們對(duì)業(yè)務(wù)日益復(fù)雜的回答不會(huì)增加開(kāi)發(fā)過(guò)程的復(fù)雜性 – 無(wú)論它看起來(lái)多么優(yōu)雅。

我們必須設(shè)法通過(guò)簡(jiǎn)化開(kāi)發(fā)流程來(lái)管理復(fù)雜性。 因?yàn)楣芾韽?fù)雜性是次重要的責(zé)任,我們必須始終記住軟件開(kāi)發(fā)人員最重要的責(zé)任:通過(guò)使用軟件來(lái)實(shí)現(xiàn)價(jià)值。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    180

    文章

    7581

    瀏覽量

    135605
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4698

    瀏覽量

    68099

原文標(biāo)題:太多開(kāi)發(fā)人員過(guò)度追求軟件靈活性,但是我們真的需要嗎?

文章出處:【微信號(hào):mcuworld,微信公眾號(hào):嵌入式資訊精選】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    急需LABVIEW軟件開(kāi)發(fā)人員

    我們是上海市國(guó)資委直屬研究所,目前項(xiàng)目急需LABVIEW軟件開(kāi)發(fā)人員!主要做儀器和系統(tǒng)編程,需要會(huì)接口通訊軟件設(shè)計(jì),會(huì)C語(yǔ)言。如果會(huì)數(shù)據(jù)庫(kù)更好!興趣的聯(lián)系我:cxxin888@163.com陳先生,謝謝!
    發(fā)表于 09-22 13:12

    RemoTI基本遠(yuǎn)程開(kāi)發(fā)人員指南

    `RemoTI基本遠(yuǎn)程開(kāi)發(fā)人員指南目錄`
    發(fā)表于 03-16 16:28

    誠(chéng)聘兼職/專(zhuān)職LabVIEW軟件開(kāi)發(fā)人員

    誠(chéng)聘兼職/專(zhuān)職LabVIEW軟件開(kāi)發(fā)人員要求: 1、熟練掌握LabVIEW編程,具有使用LabVIEW的項(xiàng)目經(jīng)驗(yàn); 2、如果不是很熟悉,愿意從事LabVIEW開(kāi)發(fā),也非常歡迎。3、為人誠(chéng)實(shí),辦事踏實(shí)
    發(fā)表于 03-31 21:15

    嵌入式開(kāi)發(fā)人員需要重點(diǎn)監(jiān)控的五個(gè)重要特征

    `  創(chuàng)客學(xué)院嵌入式講師今天和讀者介紹嵌入式開(kāi)發(fā)人員需要重點(diǎn)監(jiān)控的五個(gè)重要特征哪些?現(xiàn)代系統(tǒng)擁有豐富的資源,監(jiān)控這些特征有時(shí)看似價(jià)值不高或沒(méi)有必要,但目前為止在現(xiàn)場(chǎng)遇到的最大問(wèn)題總是與這五個(gè)關(guān)鍵
    發(fā)表于 03-02 13:23

    MCU 集成式模數(shù)轉(zhuǎn)換器提供 MSP 應(yīng)用靈活性

    你是不是感到奇怪,為什么MSP微控制器 (MCU) 在其集成式模數(shù)轉(zhuǎn)換器 (ADC) 中提供靈活性,比如說(shuō)可編程分辨率或功率模式?這個(gè)靈活性程度通常不在單個(gè)的ADC中提供。開(kāi)發(fā)人員可以將MSP MCU用于多個(gè)應(yīng)用,借助
    發(fā)表于 04-26 15:33 ?916次閱讀

    軟件開(kāi)發(fā)人員正逐步成為一個(gè)企業(yè)成敗的關(guān)鍵

    考慮到開(kāi)發(fā)人員對(duì)公司的成敗起著決定性作用,上述問(wèn)題就變得令人堪憂了。軟件開(kāi)發(fā)人員并不會(huì)對(duì)“創(chuàng)意”造成壟斷,但是他們的技術(shù)是關(guān)聯(lián)創(chuàng)新、生產(chǎn)力和新經(jīng)濟(jì)的關(guān)鍵來(lái)源。如果開(kāi)發(fā)人員部署得當(dāng),他們可以成為“經(jīng)濟(jì)加速器”,極大的提高所在單位和
    的頭像 發(fā)表于 09-13 08:45 ?4480次閱讀

    開(kāi)發(fā)人員看的視頻

    英特爾?軟件頻道旨在通過(guò)向開(kāi)發(fā)人員提供示例,教程,提示,技巧以及如何將開(kāi)發(fā)人員與影響者,創(chuàng)新者聯(lián)系起來(lái),幫助他們。
    的頭像 發(fā)表于 11-01 06:26 ?2348次閱讀

    什么是英特爾開(kāi)發(fā)人員專(zhuān)區(qū)

    什么是英特爾?開(kāi)發(fā)人員專(zhuān)區(qū)? 觀看此視頻,了解正在使用工具和資源滿足編碼需求的軟件開(kāi)發(fā)人員。
    的頭像 發(fā)表于 11-12 06:55 ?2433次閱讀

    Intel開(kāi)發(fā)人員專(zhuān)區(qū)

    Intel?開(kāi)發(fā)人員專(zhuān)區(qū)
    的頭像 發(fā)表于 05-31 09:24 ?1558次閱讀

    英特爾64和IA-32體系結(jié)構(gòu)軟件開(kāi)發(fā)人員手冊(cè)

    英特爾64和IA-32體系結(jié)構(gòu)軟件開(kāi)發(fā)人員手冊(cè)
    發(fā)表于 07-01 09:27 ?5次下載

    Eclypse Z7開(kāi)發(fā)板讓軟件開(kāi)發(fā)人員了解FPGA

    Eclypse Z7 的軟件架構(gòu)包括預(yù)構(gòu)建的 Linux 映像以及軟件開(kāi)發(fā)人員可以使用熟悉的編程語(yǔ)言訪問(wèn)的高級(jí) API。這使開(kāi)發(fā)人員能夠利用 FPGA 硬件加速的優(yōu)勢(shì),而不必直接與 FPGA 本身進(jìn)行交互。
    的頭像 發(fā)表于 06-06 09:46 ?1901次閱讀
    Eclypse Z7<b class='flag-5'>開(kāi)發(fā)</b>板讓<b class='flag-5'>軟件開(kāi)發(fā)人員</b>了解FPGA

    IzoT BACnet 開(kāi)發(fā)人員指南

    IzoT BACnet 開(kāi)發(fā)人員指南
    發(fā)表于 03-13 19:31 ?1次下載
    IzoT BACnet <b class='flag-5'>開(kāi)發(fā)人員</b>指南

    UM-B-056:DA1468x 軟件開(kāi)發(fā)人員指南

    UM-B-056:DA1468x 軟件開(kāi)發(fā)人員指南
    發(fā)表于 03-14 20:09 ?0次下載
    UM-B-056:DA1468x <b class='flag-5'>軟件開(kāi)發(fā)人員</b>指南

    IzoT BACnet 開(kāi)發(fā)人員指南

    IzoT BACnet 開(kāi)發(fā)人員指南
    發(fā)表于 07-04 20:48 ?0次下載
    IzoT BACnet <b class='flag-5'>開(kāi)發(fā)人員</b>指南

    UM-B-056:DA1468x 軟件開(kāi)發(fā)人員指南

    UM-B-056:DA1468x 軟件開(kāi)發(fā)人員指南
    發(fā)表于 07-05 20:36 ?0次下載
    UM-B-056:DA1468x <b class='flag-5'>軟件開(kāi)發(fā)人員</b>指南