日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

如何通过提问成为更好的开发人员

發(fā)布時(shí)間:2023/12/4 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何通过提问成为更好的开发人员 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

如何通過(guò)提問(wèn)成為更好的開(kāi)發(fā)人員

這是新的一年的開(kāi)始,所以我想以一篇我已經(jīng)計(jì)劃寫(xiě)了一段時(shí)間但從未真正開(kāi)始創(chuàng)作的帖子開(kāi)始。我最近開(kāi)始了一份新工作,加入Elastic[1],負(fù)責(zé)開(kāi)發(fā)他們的 .NET 語(yǔ)言客戶端。因此,最終將這個(gè)主題編寫(xiě)并發(fā)表是合適的。結(jié)果證明這是我較長(zhǎng)的帖子之一,因?yàn)槲矣泻芏嘣捪胝f(shuō)。我建議拿起一杯茶或咖啡,坐下來(lái)閱讀這篇文章!

提出問(wèn)題是一種積極的行動(dòng)

在我作為軟件工程師的這些年里,我問(wèn)了很多問(wèn)題。開(kāi)發(fā)人員也向我提出了他們自己的問(wèn)題。有時(shí),這些對(duì)話的開(kāi)頭是“抱歉,在這么簡(jiǎn)單的事情上浪費(fèi)了你的時(shí)間……”。在這篇文章中,我想闡明為什么沒(méi)有開(kāi)發(fā)人員,無(wú)論是新的還是有經(jīng)驗(yàn)的,都應(yīng)該道歉或回避提問(wèn)。它們是構(gòu)建您自己的體驗(yàn)并成為更好的開(kāi)發(fā)人員的關(guān)鍵部分。

有幾乎無(wú)限量的知識(shí)需要學(xué)習(xí)。沒(méi)有一個(gè)人可以知道一切。在軟件開(kāi)發(fā)方面,我們的行業(yè)發(fā)展非常迅速。最新的新技術(shù)很快就會(huì)被其他東西所取代。曾經(jīng)首選的架構(gòu)風(fēng)格已經(jīng)過(guò)時(shí)或被高級(jí)模式所取代。在這方面,所有軟件開(kāi)發(fā)人員都面臨著試圖跟上步伐的相同挑戰(zhàn)。老實(shí)說(shuō),要真正跟上一切是不可能的。

當(dāng)然,一種解決方案是找到單一的技術(shù)和編碼模式,然后堅(jiān)持使用。這在變革步伐通常較慢的大型企業(yè)中并不少見(jiàn)。盡管如此,相信企業(yè)中的每個(gè)人都可以了解有關(guān)其現(xiàn)有開(kāi)發(fā)環(huán)境的一切是不切實(shí)際的。它也不能避免相關(guān)技術(shù)和工具的變化。也許您使用了源代碼控制產(chǎn)品或規(guī)劃工具,它們會(huì)隨著時(shí)間的推移而發(fā)展,從而迫使您進(jìn)行一定程度的學(xué)習(xí)和適應(yīng)。出于安全考慮,曾經(jīng)首選的 API 可能會(huì)被棄用,迫使開(kāi)發(fā)人員理解和使用更安全的替代方案。

軟件開(kāi)發(fā)是一門(mén)手藝,就像任何手藝一樣,在此過(guò)程中需要做出個(gè)人風(fēng)格和選擇。懷疑您編寫(xiě)的代碼是否是解決問(wèn)題的“最佳”方式以及您想征求他人意見(jiàn)的想法是完全合理的。

也許您是在即將開(kāi)始您的第一份軟件開(kāi)發(fā)工作時(shí)閱讀本文的。如果是這樣,恭喜!或者也許你在去年開(kāi)始了一份新工作。我的主要建議是不要害怕提問(wèn),不要覺(jué)得這會(huì)讓你成為一個(gè)更糟糕的開(kāi)發(fā)人員。我很樂(lè)意爭(zhēng)辯說(shuō),我認(rèn)為有疑問(wèn)的人在某些方面是更好的開(kāi)發(fā)人員。它表明您對(duì)自己的工作感興趣,愿意學(xué)習(xí)并熱衷于改進(jìn)。沒(méi)有什么不妥!

對(duì)于更有經(jīng)驗(yàn)的開(kāi)發(fā)人員;從那些有幾年在職經(jīng)驗(yàn)的人到那些已經(jīng)編碼了幾十年的人,你應(yīng)該仍然有問(wèn)題。我觀察到長(zhǎng)期開(kāi)發(fā)人員害怕提問(wèn)的情況,甚至可能比初級(jí)開(kāi)發(fā)人員更害怕。可能有很多因素在起作用,但在某種程度上,我懷疑這是某種程度的冒名頂替綜合癥。更高級(jí)的開(kāi)發(fā)人員可能不希望在軟件開(kāi)發(fā)的某些方面顯得天真。也許他們認(rèn)為他們應(yīng)該知道一些事情,并且害怕透露他們不知道。這可能非常危險(xiǎn),因?yàn)槟切╅_(kāi)發(fā)人員可能更愿意猜測(cè),而不是真正了解選擇是好是壞。對(duì)于閱讀這篇文章的高級(jí)開(kāi)發(fā)人員,我現(xiàn)在問(wèn)你,你還記得你上次在工作中問(wèn)技術(shù)問(wèn)題是什么時(shí)候嗎?你上周提出了多少問(wèn)題?如果您很難回答這些問(wèn)題,那么您可能下意識(shí)地避免提問(wèn)。

高級(jí)開(kāi)發(fā)人員也會(huì)換工作,雖然您可能擔(dān)任高級(jí)職位,但可以合理地假設(shè)您在為新雇主工作的最初幾周和幾個(gè)月內(nèi)會(huì)遇到很多問(wèn)題。您可能不確定為什么要使用特定方法、首選特定模式或特定代碼段的作用。在這種情況下,詢問(wèn)應(yīng)該沒(méi)有什么問(wèn)題。如果雇主和經(jīng)理對(duì)這些問(wèn)題不以為然,那么他們可能不是最好的雇主。假設(shè)所有新的高級(jí)員工都會(huì)在第一天就知道一切,這是不合理和不切實(shí)際的。

作為開(kāi)發(fā)人員,您的問(wèn)題不必局限于純粹與代碼相關(guān)的主題。您可能想知道為什么要使用特定的計(jì)劃流程,如何平衡您的時(shí)間或如何提交費(fèi)用報(bào)銷(xiāo)。這些也是提出問(wèn)題的完全合理的話題。

如果你已經(jīng)讀到這里,你現(xiàn)在應(yīng)該已經(jīng)學(xué)會(huì)了,我想鼓勵(lì)大家提出問(wèn)題。因?yàn)檎翘岢鰡?wèn)題的行為推動(dòng)了我們的知識(shí)進(jìn)步。

準(zhǔn)備提問(wèn)

必須首先說(shuō)明并非所有問(wèn)題都必須親自提出。對(duì)于大多數(shù)問(wèn)題,我建議您首先嘗試自己回答問(wèn)題。我的意思是,在線、在公司 wiki 或參考材料和文檔中研究問(wèn)題。您很少會(huì)是第一個(gè)提出特定問(wèn)題的人,因此獲得答案的最快方法通常是先向 Google 或 Bing 尋求答案。谷歌搜索還在問(wèn)一個(gè)問(wèn)題!

如果您的問(wèn)題是關(guān)于您試圖理解的某些代碼,請(qǐng)給自己時(shí)間正確閱讀(并重新閱讀)代碼。此外,請(qǐng)確保您查看所有測(cè)試。某些代碼可能非常復(fù)雜,尤其是在大型遺留代碼庫(kù)中。雖然代碼本身可能難以解釋,但測(cè)試(如果存在)可以幫助您了解它的意圖。閱讀和解釋代碼是軟件開(kāi)發(fā)人員掌握的一項(xiàng)基本技能,我之前曾在博客中介紹過(guò)[2]。任何實(shí)踐這一點(diǎn)的機(jī)會(huì)都應(yīng)該被擁抱。如果您在嘗試自己收集代碼的作用后仍然需要尋求他人的幫助,那也沒(méi)關(guān)系,但請(qǐng)先從那里開(kāi)始。

如果您的問(wèn)題是關(guān)于為什么您編寫(xiě)的某些代碼失敗或?qū)е庐惓?#xff0c;請(qǐng)?jiān)谂c其他人接觸之前花一點(diǎn)時(shí)間嘗試隔離和理解問(wèn)題。檢查您的代碼是否有可能是原因的錯(cuò)誤。您是否編寫(xiě)了任何測(cè)試,這是否有助于證明代碼的哪一部分是罪魁禍?zhǔn)?#xff1f;您是否已調(diào)試應(yīng)用程序以追蹤出現(xiàn)問(wèn)題的地方?您是否嘗試在較小的樣本中重現(xiàn)錯(cuò)誤?這些技術(shù)是一個(gè)很好的練習(xí)。同樣,這里的想法不是避免提出問(wèn)題,只是為了確保您的問(wèn)題無(wú)法在您自己的腦海中得到解答。隨著你職業(yè)生涯的進(jìn)步,你可能會(huì)解決越來(lái)越多的自己的障礙,但他們需要尋求幫助永遠(yuǎn)不會(huì)完全消失。

在 GITHUB 和 STACK OVERFLOW 上提問(wèn)

另外,請(qǐng)考慮一些問(wèn)題也可能更適合在線論壇和資源,例如Stack Overflow[3]或GitHub[4]。有些問(wèn)題是針對(duì)一段失敗的代碼,詢問(wèn)關(guān)于可接受的模式使用或使用開(kāi)源庫(kù)的方法的意見(jiàn)。對(duì)于這些,您可能會(huì)發(fā)現(xiàn)更廣泛的在線開(kāi)發(fā)人員社區(qū)可以更好地為您提供幫助。

在線提問(wèn)可能非常令人生畏,甚至比與您認(rèn)識(shí)的人聯(lián)系更令人生畏。它的優(yōu)勢(shì)之一是您可以接受更廣泛、更多樣化的意見(jiàn)和想法。您需要進(jìn)行更多過(guò)濾和個(gè)人判斷,以驗(yàn)證答案是否合理。如果在收到一些答案后,您仍然不確定它們,您可以隨時(shí)詢問(wèn)您信任的人進(jìn)行最終驗(yàn)證。

在線論壇支持培養(yǎng)良好的提問(wèn)行為。例如,假設(shè)您正在打開(kāi) GitHub 問(wèn)題或開(kāi)始討論開(kāi)源項(xiàng)目的正確用法。在這種情況下,您應(yīng)該嘗試查找之前是否已被詢問(wèn)和回答。當(dāng)一個(gè)簡(jiǎn)單的搜索就可以產(chǎn)生您需要的答案時(shí),維護(hù)人員可能會(huì)感到沮喪。不檢查會(huì)讓維護(hù)者覺(jué)得你比他們自己的時(shí)間更有價(jià)值。

你還應(yīng)該確保你遵循我上面的建議。如果您認(rèn)為自己發(fā)現(xiàn)了錯(cuò)誤或正在為庫(kù)的使用而苦苦掙扎,請(qǐng)演示并分享合理的最小復(fù)制,而不是期望其他人閱讀額外的代碼或嘗試自己復(fù)制它。確保您已嘗試先調(diào)試代碼并閱讀文檔。如果您在自己做出合理的努力來(lái)回答問(wèn)題后遇到困難,請(qǐng)不要害怕發(fā)布它。Jon Skeet 有一些很棒的內(nèi)容,可以更深入地介紹這些實(shí)踐,也可以引導(dǎo)您在此過(guò)程中解決自己的問(wèn)題。特別是,他的提問(wèn)清單[5]和他對(duì)Stack Overflow 文化的[6]看法都值得一讀。

我個(gè)人在 Stack Overflow 上有過(guò)復(fù)雜的經(jīng)歷。那里的文化可能非常好管閑事,有些成員太快批評(píng)問(wèn)題的措辭方式或是否可能重復(fù)。只要您已經(jīng)做出合理的努力來(lái)搜索以前的答案,并花時(shí)間用代碼示例形成一個(gè)精心設(shè)計(jì)的問(wèn)題,盡量不要擔(dān)心偶爾出現(xiàn)的糟糕響應(yīng)。

通過(guò)這個(gè)博客,我通過(guò)評(píng)論或聯(lián)系表收到了大量問(wèn)題。我承認(rèn),我并不總是很擅長(zhǎng)跟上。有時(shí)我發(fā)現(xiàn)這個(gè)問(wèn)題太寬泛,需要太多時(shí)間才能完整回答。其他時(shí)候,由于措辭混亂或提出的要點(diǎn)太多,我什至不確定這個(gè)人真正需要什么幫助。

準(zhǔn)備問(wèn)題時(shí),將自己置于接受者的位置。假設(shè)沒(méi)有關(guān)于您的問(wèn)題領(lǐng)域的先驗(yàn)知識(shí),并確定您希望能夠理解問(wèn)題的核心信息是什么。專注于形成一個(gè)具體而簡(jiǎn)潔的問(wèn)題,不會(huì)花費(fèi)大量時(shí)間來(lái)解釋和回答。我收到過(guò)電子郵件,其中的人只是想一口氣問(wèn)太多,我不知道他們需要了解什么才能解除封鎖。我也收到過(guò)電子郵件,其中的人希望我采用單行要求并從本質(zhì)上解釋如何構(gòu)建整個(gè)應(yīng)用程序。這太寬泛了,我無(wú)法在個(gè)人時(shí)間回答。

我不是要讓你在我上一段中提出問(wèn)題。我想提醒你,另一端的人是人,有自己的工作和承諾。考慮到這一點(diǎn),并確保您不會(huì)用含糊不清的問(wèn)題不公平地壟斷某人的時(shí)間。

詢問(wèn)同事

有些問(wèn)題自然會(huì)更具體地針對(duì)您的工作地點(diǎn)及其產(chǎn)品。您可能想知道為什么優(yōu)先使用特定的代碼段而不是另一段代碼。您可能不確定軟件產(chǎn)品中的功能實(shí)際上是如何工作的。這些可能已經(jīng)在公司 wiki 中被詢問(wèn)和回答。盡管如此,在許多情況下,答案可能永遠(yuǎn)不會(huì)被記錄下來(lái)。在這些情況下,您需要親自或通過(guò)聊天找到某人進(jìn)行詢問(wèn)。您可能還會(huì)驚訝地發(fā)現(xiàn),更多資深同事也不確定答案。這并不罕見(jiàn),因?yàn)橹R(shí)會(huì)隨著時(shí)間流逝。您正在處理的代碼可能是很久以前編寫(xiě)的,當(dāng)時(shí)做出的決定可能不再明顯。

我堅(jiān)信沒(méi)有愚蠢的問(wèn)題。每個(gè)人的思維方式各不相同,對(duì)于一個(gè)人來(lái)說(shuō)似乎很明顯的事情,對(duì)于另一個(gè)人來(lái)說(shuō)可能不太清楚。當(dāng)有人提出一個(gè)精心設(shè)計(jì)的問(wèn)題并表現(xiàn)出一些試圖自己回答的跡象時(shí),我更喜歡它。盡量簡(jiǎn)潔明了地提出你的問(wèn)題,這樣你問(wèn)的人就可以快速弄清楚你想了解什么。此外,請(qǐng)務(wù)必在提問(wèn)之前包含您已經(jīng)知道或找到的任何相關(guān)信息。

與其說(shuō)“這段代碼做了什么?”,不如說(shuō)“我試圖理解這段代碼的作用”。我在谷歌上搜索過(guò),我可以看到它可能是 XYZ 模式,但我仍然不清楚它到底在做什么。沒(méi)有針對(duì)代碼的測(cè)試,所以我無(wú)法確認(rèn)預(yù)期的行為。你能幫我嗎?”

一個(gè)表明您已經(jīng)在基礎(chǔ)知識(shí)上花費(fèi)時(shí)間,嘗試自己調(diào)查并準(zhǔn)備好您的想法的問(wèn)題始終是首選。有時(shí),您會(huì)面臨時(shí)間壓力,或者您可能擔(dān)心自己破壞了一些重要的東西。最好根據(jù)自己的感覺(jué)盡早提出問(wèn)題,而不是浪費(fèi)寶貴的時(shí)間來(lái)嘗試自己回答問(wèn)題。

有時(shí)您可能能夠根據(jù)研究完全回答問(wèn)題,這太棒了。要求某人簡(jiǎn)單地驗(yàn)證您認(rèn)為答案是什么也沒(méi)有錯(cuò)。“我正在嘗試?yán)斫膺@段代碼,我相信它是 X,我認(rèn)為它使用這種模式是因?yàn)?Y。我的理解是否正確?” 是一個(gè)完全有效的問(wèn)題。

如何提問(wèn)

一旦你嘗試自己回答問(wèn)題,如果你仍然需要一些幫助,你可能需要直接問(wèn)別人這個(gè)問(wèn)題。您的第一選擇是誰(shuí)最適合回答這個(gè)問(wèn)題。嘗試將您的查詢定向到最合適的人。知道該問(wèn)誰(shuí)并不總是那么容易,因此聯(lián)系您認(rèn)識(shí)或共事的人以征求與誰(shuí)交談的建議是合理的。

一旦確定了要交談的人,請(qǐng)考慮是否需要面對(duì)面交談,或者其他方法是否更適合。您在此處的選擇將取決于幾個(gè)因素,例如您的問(wèn)題有多復(fù)雜?有多緊急?這個(gè)人更喜歡如何參與?那個(gè)人有多忙?

作為一般規(guī)則,我建議通過(guò)您的內(nèi)部聊天系統(tǒng)詢問(wèn)大多數(shù)問(wèn)題。大多數(shù)公司使用一些異步消息服務(wù),例如 Slack 或 Microsoft Teams。這些技術(shù)的優(yōu)點(diǎn)是您可以避免打斷與您交談的人的交流。他們可以專注于自己的工作,直到有時(shí)間查看和回復(fù)聊天消息。

有些問(wèn)題可能很容易通過(guò)聊天提出,您可以通過(guò)相同的媒介得到答案。有些將難以解釋或可能需要一些來(lái)回討論。這些最終可能會(huì)成為面對(duì)面的對(duì)話。首先,請(qǐng)考慮是否因?yàn)樗軓?fù)雜而難以在聊天消息中寫(xiě)下您的問(wèn)題。也許你需要先簡(jiǎn)化它。

橡皮鴨

順便說(shuō)一句,我之前曾在此博客[7]上討論過(guò) Rubber Duck 的開(kāi)發(fā)。有時(shí),在提出問(wèn)題時(shí)解釋您的問(wèn)題時(shí),答案會(huì)突然出現(xiàn)在您身上。我們的大腦可以以神秘的方式工作,有時(shí),我們需要換檔來(lái)疏通自己。與面對(duì)面聊天相比,聊天消息的優(yōu)勢(shì)之一是您可以在撰寫(xiě)消息時(shí)回答自己的問(wèn)題。在這種情況下,您不僅會(huì)得到答案,而且您甚至可能永遠(yuǎn)不會(huì)打斷對(duì)方。他們可能在不知不覺(jué)中幫助了你。在我看來(lái),這是一個(gè)真正的雙贏。

當(dāng)問(wèn)題對(duì)于聊天來(lái)說(shuō)太復(fù)雜時(shí)

聊天是一個(gè)很好的起點(diǎn),但它并不適合我提到的每個(gè)問(wèn)題。您詢問(wèn)的人可能會(huì)意識(shí)到這一點(diǎn),并要求您親自會(huì)面或通過(guò)視頻會(huì)議。有時(shí),您可能會(huì)發(fā)現(xiàn)它首先需要面對(duì)面。如果是這樣,我建議避免開(kāi)始參與,因?yàn)檫@樣的中斷真的會(huì)破壞某人的流程。在這種情況下,我建議您使用您的工作場(chǎng)所聊天工具向您的收件人發(fā)送消息,詢問(wèn)他們下次有空的時(shí)間。這樣,他們就可以在做出響應(yīng)之前專注于完成當(dāng)前的任務(wù)。作為開(kāi)發(fā)人員,我更喜歡有人以這種方式問(wèn)我問(wèn)題,因?yàn)槿绻谀承┚幋a活動(dòng)的關(guān)鍵時(shí)刻發(fā)生編碼中斷可能是真正的生產(chǎn)力殺手。

這個(gè)建議總會(huì)有奇怪的例外。如果您認(rèn)為自己剛剛降低了生產(chǎn)量,請(qǐng)立即與人聯(lián)系!

如果您有更一般的問(wèn)題,請(qǐng)考慮您是否安排了一個(gè)可能是一個(gè)很好的論壇的會(huì)議。有時(shí)在會(huì)議上提出問(wèn)題可以提供更多樣化的意見(jiàn),并使每個(gè)人都能從討論中受益。不要害怕問(wèn)什么感覺(jué)像是一個(gè)基本問(wèn)題。如果您有問(wèn)題,其他人也可能有問(wèn)題。我離開(kāi)了會(huì)議,大多數(shù)與會(huì)者實(shí)際上并不理解一些重要的事情,但所有人都不敢問(wèn),之后每個(gè)人都單獨(dú)出現(xiàn)。

概括

無(wú)論您是為了成為軟件開(kāi)發(fā)人員而學(xué)習(xí),還是大三的第一天,還是長(zhǎng)期擔(dān)任高級(jí)開(kāi)發(fā)人員的高級(jí)開(kāi)發(fā)人員,都不要害怕提問(wèn)。求知是好事。它將幫助您成長(zhǎng)并成為更好的開(kāi)發(fā)人員。你會(huì)更深入地理解你的工作,并從你周?chē)娜四抢镂障敕ê屯评怼?/p>

請(qǐng)記住,雖然沒(méi)有愚蠢的問(wèn)題,但存在形式不佳的問(wèn)題。確保你的問(wèn)題盡可能清晰和簡(jiǎn)潔。

分享相關(guān)信息和在詢問(wèn)之前,先做研究并嘗試自己回答。如果您在此之后仍然需要幫助,請(qǐng)不要害怕提出您的問(wèn)題。我們都時(shí)不時(shí)地需要幫助。

References

[1]?Elastic:?https://www.elastic.co/
[2]?曾在博客中介紹過(guò):?https://www.stevejgordon.co.uk/become-a-better-developer-by-reading-source-code
[3]?Stack Overflow:?http://stackoverflow.com/
[4]?GitHub:?https://github.com/
[5]?提問(wèn)清單:?https://codeblog.jonskeet.uk/2012/11/24/stack-overflow-question-checklist/
[6]?Stack Overflow 文化的:?https://codeblog.jonskeet.uk/2018/03/17/stack-overflow-culture/
[7]?在此博客:?https://www.stevejgordon.co.uk/do-we-have-an-obsession-with-ducks-in-software-development/an-obsession-with-ducks

總結(jié)

以上是生活随笔為你收集整理的如何通过提问成为更好的开发人员的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。