當前位置:
首頁 > 科技 > 程序員的職業技能不止於敲代碼!

程序員的職業技能不止於敲代碼!

程序員,除了編碼,還需要關注哪些技能?

當我在尋找一名可以合作的程序員時,我認為相比起專業技能來說,非專業方面的技能更能讓他們成為優秀的合作者。

事實上,本文中談到的所有技能都能幫助技術項目編寫好的代碼。其中大多數的技能也有助於促進編程以外的職業發展,但我想專心討論一下為什麼這些技能對於程序員尤其有益。

共情

為了打造一款出色的產品,你必須設身處地地為用戶考慮。他們將如何使用你的產品?哪些功能對他們有幫助?你的程序怎樣才能幫助他們改善生活?反過來,你的產品會如何傷害他們,或對他們的生活產生負面影響?你的應用程序的倫理意蘊是什麼?

共情對於你的許多應用程序至關重要。如果保管不當,那麼你的用戶信息會被第三方濫用。

如果有人無法訪問你的產品,那麼會妨礙使用產品的人數。如果產品運行非常慢或需要大量寬頻才能運行,那麼用戶就會離開,而且網速很慢的用戶以及移動用戶都無法使用產品。

每天有關一些公司實現了一些有害演算法的文章層出不窮,比如 YouTube 的演算法中激進的右派,亞馬遜建立的帶有性別歧視的招聘演算法(最終他們並沒有使用該演算法),或是 AI 誤判黑皮膚女性的性別。在你寫代碼的時候,仔細想想每個人!

此外,共情有助於成為團隊成員和導師。設身處地的為經理或其他開發人員想想。為什麼他們要做出這些決定?你怎樣做才能幫到他們?擁有共情肯定能夠提高你的能力,讓你成為一名高效的隊友。如果你是老闆,那麼你可以留住你的人才,如果你表現出共情,那麼員工的工作效率會更高。

耐心地對待其他程序員,尤其是那些正在學習新技術的人。提醒你自己你當初學習的時候也非常難,你當時的感受如何。他們可能也很類似。粗魯地對待他們,只能讓他們的進步減慢,在他們面前裝腔作勢只能給他們帶來傷害,讓他們舉步維艱。

你的言行都會帶來一定的後果,你可以用自己的言行來引導積極的改變,也可以傷害他人。這不僅會發生在面對面的交流中,也會發生於在線溝通中。你可能認為自己很幽默,或者只是想放鬆一下,但是實際上對某人的生活造成了負面影響。你的行為由你自己決定,而在傷害到某人後也由你自己決定如何道歉。

解決問題

在教人編程的時候,我發現很多人的困難在於解決問題,而非代碼本身。能夠將問題分解成小問題,然後解決這些小問題的能力需要許多的實踐。善於解決問題可以幫助你成為一個更強大的程序員。

此外,大多數問題都有多個解決方案。作為軟體程序員,我們工作的很大一部分是思考這些不同的解決方案並選擇最佳解決方案。應該選擇實現更快的那個?還是運行效率更好的那個?還是價格上更經濟的那個?所有這些都是重要的問題,選擇正確的解決方案是軟體開發中充滿挑戰又非常重要的部分。

合作

作為程序員,你與他人合作的機會非常多。如果你是自由職業者或是企業家,那麼你必須與其他開發員、業務員、經理、開源貢獻者、利益相關者以及其他不計其數的人合作。學習如何與不同的人和不同性格的人一起工作至關重要。

有很多東西可以促進良好的合作。首先必須清楚孤掌難鳴,一個人無法做好所有的事情。不同的人擁有不同的技能、觀點和生活經驗,所謂三個臭皮匠頂一個諸葛亮。不要總覺得你需要背負一切,是所有人的救世主。如果讓別人也貢獻力量,你可以做得更好。

向他人尋求幫助,同時也要願意幫助別人。你不需要在所有事情上都成為專家,而不同的人可以在不同的領域成為專家。依賴其他人,如果遇到困難,請務必尋求幫助,這樣做你就不會長時間陷入困境。

有人請你幫忙時,你要願意幫助他們。在幫助他人的過程中你自己也可以學習很多東西,而且還能加強自己對某個主題的了解。如果你是管理層,那麼請務必留出時間指導和有效合作!

同樣,不要試圖說服別人或立即駁回他們的觀點。如果他們的意見不被重視或體諒,那麼將來他們就不大可能會作出貢獻。

在別人分享他們的想法時積極地傾聽,而不是在他們說話的時候思考你要怎麼回應或為什麼你的想法更好,而是應該多想想為什麼他們的方法也很好,或是怎樣才能實現。

最後,如果你實現了別人精彩的想法,那麼要將這些想法歸功於他們。在團隊中,成員的想法被忽視、被低估、或是功勞被別人搶走是抹殺員工效率的最大因素。

溝通

當與其他人一起工作時,無論這些人是同事、客戶、使用產品的人、經理、或是下屬,良好的溝通至關重要。凡事都要抱著誠實的態度,誠實並且和藹地彙報項目的進展,項目目前的狀況,以及你的觀點。如果你的態度粗魯或沒有建設性,那麼別人就不太願意接受反饋。但是,如果你不誠實,或不言明要害,那麼就看不到積極的改變。我們要在這一點上做到涇渭分明。

我現實生活中遇到的一件真事:有人曾經在看了我的一篇博文後,寫了一封長信針對我的語調形容我有多麼傻。我常常會使用大量感嘆號,而且會努力讓我的博文聽起來令人興奮,而且我有意使用駭人聽聞或有趣的標題。那個人在信中表現得非常性別歧視,還說了很多傷人的話。話雖如此,我可能會減少使用感嘆號,仍然會讓別人對編程感到興奮。如果那個人可以用更加具有建設性的批評來說我,那麼我會更加容易接受他的批評。

如果事情進展不順利,我們也需要據實相告。誠實地說需要推遲截止日期,或者在工作中哪些事情進展不順利。只有坦誠相告才更有可能改變狀況,讓一切都好起來。

包容

我曾經在夏令營擔任攀岩教練和輔導員,與我一起的大多數人是中學女生。她們是我最喜歡的一批人。但是,話雖如此,通常中學生不是很能接受不同的意見或很容易集體反抗。

有一次我們一起做遊戲,我們畫了一個大圈,然後如果一個輔導員說某某「出圈」,那麼他們就必須離開遊戲,而背後的決定因素並沒有告知他們,而且他們也無法掌控。依舊在圈裡的人可以玩遊戲,而圈外的人將被排除在外,只能遠遠看著。

通過這個遊戲讓這些女孩明白:因為一些在你掌控之外的因素而被排除在外時,你的心理感受。而我也在思考這個問題。作為成年人,我們還會將別人排除在圈外,因為一些他們無法控制的因素將他們排除在外。但是,如果我們讓他們回到圈中,讓他們貢獻自己的力量,那麼我們的產品可以贏得更多不同的體驗,可以更好。

關於多樣化團隊表現更好的研究有很多。但是從個人的角度來看,想想如果自己被排除在圈外時的感受,我們應該讓這個圈更大,而不是更小。

有可能你的很多用戶都是傳統意義上被排除在科技圈之外的人。我可以根據自己的親身經驗告訴你,成為團隊中與眾不同的一份子滋味並不好受,因為在我的編程職業生涯中,只有 5% 的時間裡團隊中會有另一位女性。

這也與共情相關,確保你做的程序可以服務於各種各樣的用戶。不只是四肢健全的人,或是擁有尖端互聯網或技術的人。你可以吸引更多人。

耐心

在編程的時候,第一個你需要有耐心的就是你自己。編程很難,有時你會遇到 Bug 或難以克服的問題。如果編程工作總是很容易,那麼你就不會遇到挑戰,也就不會成長為程序員。

堅韌不拔,堅持努力工作。但是,你也可以休息一下,過一段時間再來解決問題。也許休息一下有助於你解決問題。

另外,對待他人也要有耐心。學習需要花費時間,人無完人。犯錯和失敗是學習過程中最重要的經驗,在不安全的環境中才能冒險或成長。你需要理解尺有所長寸有所短,還要知道學習需要投入時間。

創造力

作為一名程序員,我最喜歡發揮我的創造力,建立對他人有益的事物。你可以創造性地建立非常酷的東西。

在提出新功能、介面和應用程序的時候,創意的想法非常重要。有人購買我為一家公司做的一款產品很大一部分原因是因為該產品擁有的創意界面,而我的作品展示網站備受矚目也好是因為它富有創意。

除此之外,許多問題都需要創造力來解決。每個編程問題都有多個解決方案,提出一些具有創意的方法往往可以帶來優化的解決方案。

謙遜

你可以從其他程序員那裡學到很多東西,一個人不可能掌握編程世界裡所有的東西。接受建設性的批評,而不是抵觸。你可以根據反饋改進代碼和自己,一味固執己見不利於個人的成長。你不可能不犯錯,而且你應該接受別人的想法。

自信

反過來說,我們要有自信。我承認這對我來說可能是最困難的事情,而有些人可能會過度自信。在我的職業生涯中,每次業績考核時我需要改善的頭等大事就是自信。我還單獨撰寫過有關這個主題的一篇文章,對自己充滿信心、相信自己的能力非常重要。

首先,請相信你可以參與項目。不要覺得自己只能承擔簡單的工作,或在分配到較難的工作時質疑自己。盡自己所能解決問題,然後尋求幫助克服最困難的部分。

此外,不要覺得需要調查一切。相信你自己,在 Google 上搜索答案之前,請嘗試自己作答。只在 Google 上搜索部分問題,而不是全部。如果你做的每一件事情都是正確的,那麼在開發中嘗試別的方法,看看它們是否可行,這也沒有什麼壞處。有時候你可能會驚訝自己知道的如此之多。

還有一個辦法是記錄勝利時刻。我的計算機上有一個文件記載了所有我做過的很酷的事情,還有別人給我的讚譽。當遇到困難或質疑自己的時候,打開這個文件就會讓我更加自信。

適應性

編程仍然是一個新世界,它正在以超快的速度發展。在情況發生變化時,能夠快速適應至關重要。當遇到一個新的框架、庫或語言的時候,學習這些東西非常重要(當然是在合理的範圍內)。如果我們仍然在 Fortran 中編寫代碼,那麼這個行業將是完全不同的局面。當情況發生改變時,我們需要改變和適應。

此外,項目的目標和功能通常也會發生變化,特別是在面向客戶的工作方面。當情況發生變化時,我們必須調整並適應這些需求(再次重申,在合理的範圍內)。

參與社區

社區對於編程非常重要,會議、博客文章、社交媒體和聚會對於學習和成長非常重要。此外,開源軟體和周圍的社區是該行業的命脈。能夠與人們建立聯繫對於教育、尋找經驗和新機會都非常重要。

即使你是一個內向或不喜歡社交的人,那麼也可以通過很多在線社區,從中學到很多東西。而且,即使在公司內部,擁有一支緊密聯接的團隊也可以幫助大家更好地共同工作。

總結

以上這些技能通常被稱為「軟技能」,但我覺得這樣說還遠不夠。這些技能不僅有助於編程,也有助於成為一名優秀的同事。這些技能的重要性超過了對一門具體的語言、庫或框架的了解,它們甚至超越了科技的範疇。對於程序員來說,以上這些技能真的非常重要。話雖如此,但是人無完人,每個人都有成長的空間。所以持續發展自我,並努力掌握這些非編程技巧!

原文:https://medium.freecodecamp.org/the-most-important-non-programming-skills-for-programmers-d39fadc1a0fa

作者:Ali Spittel,Python 以及 JavaScript 開發人員。General Assembly 的首席講師。

譯者:彎月,責編:屠敏


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 CSDN 的精彩文章:

比特幣蒸發 1 萬億;中興入局無人駕駛|極客頭條
蘋果回應下架 iPhone X;滴滴將恢復深夜出行;拼多多趕超網易

TAG:CSDN |