1. 程式人生 > >《The most important non-programming skills for programmers(程式設計師的軟技能)》

《The most important non-programming skills for programmers(程式設計師的軟技能)》

文章標題:
The most important non-programming skills for programmers(對程式設計師很重要的軟技能)

作者主要從11個方面進行了闡述,總結了一些對程式設計師來說比較常用的“編外”技巧,接下來我會大致介紹一下,並且附上自己的心得

1.Empathy(移情)

    選鞋要合腳,在條件允許的情況下,明晰自己要做的會在哪些方面造成積極的效果,哪些方面會造成消極的效果,從完全相反的兩面考慮問題,是最簡單的防止出問題的方式。在移情中,作者舉了資訊保安、頻寬、程式執行速度等例子,從多方論證瞭如果程式開發者沒有移情,那麼可能會出現的種種問題。
    多想想使用程式的人,多考慮一下一塊寫程式碼的同事,移情不僅能夠提高程式設計能力,更能融洽同事間關係。
    最後,多些寬容,多些理解,每個人身上都會有值得他人學習的地方(這不得不讓人聯想到那個程式設計師槍擊事件),包容、交流、異位而處,這就是移情的做事方法。

2.Problem Solving(解決問題)

    這個標題一言蔽之就是舉一反三,不斷優化。一個問題解決,相似情境下的問題要有方向,一個問題解決完成後,最好思考下是否還有更優方案
    提供更多的解決方案,選擇在其中最好的一個,他可以不在單方面具有最佳的技能,但是綜合多面是最合適的。

3.Collaboration(協作)

    工作環境中,我們會有很多機會和不同角色的人相處,開發、運營、管理者、客戶、開源貢獻者等等,明晰不同角色特色,一個人不能做所有事情。學會請求幫助,然後回饋幫助給別人,不需要事事都是專家,只要在某一方面有自己的特色就行了。教學相長,團隊協作,而不是單兵作戰。
    這裡作者認為結對程式設計是一個不錯的選擇,在發表觀點的時候,不要立刻提出或者否決其他人的觀點,做一個優雅的傾聽者,從所有idea中,選擇最合理的那個。如果成功,別忘記了獎勵。

4.Communication(交流)
    對於交流,作者更重視說話技巧,順耳的話總是能夠讓他人開心,學會對於自己的觀點進行包裝,將話說的漂亮一點。
    這個標題中,作者舉了一個自己的一個自己曾經寫部落格的例子。
    在遇事不順的時候,一定要說出來,尤其是像deadline這種卡時間點的事情。

5.Inclusiveness(包容)
    會議上的一言不發?做事情時的憤世嫉俗?又或者其他某些原因,讓我們觀察到許多“沉默”現象。
    我想,每一個人都會有自己的感受,自己的訴求。當觀察到“沉默”時,作者呼籲進行溝通,而不是摒棄他們到討論圈外面。
    集思廣益、博採眾長,汲取不同的經驗,我們才能成長的更好。

6.Patience(耐心)
    對於程式設計來說,什麼時候最煩躁?bug?產品要求做個會變色的手機殼?還是老闆讓你明天交出個系統?又或者某個不專業的傢伙吃了你的口糧(時間)?
    有些時候我們會遇到瓶頸,一些曾經的技巧可能會幫助我們擺脫他(比如原先做題的30分鐘技巧),休息一下,走動走動,聊聊天,吃點小點心,這樣把注意力分散一下,減緩自己身上的壓力,也許這樣的轉換,會有助於你得出更好的解決方案。
    作者在這裡強調人並非生而知之,能夠幫助別人儘量幫助一下,這並不困難。不要把新人扔到不毛之地讓他荒野求生,那樣既不效率,還有些殘忍。

7.Creativity(創造力)
    創造力對於程式設計師有多重要?我認為這很重要。我常說的一句話是,如果程式設計師習慣了墨守成規,不再擁抱變化,那麼很難說這個人還是一個合格的程式設計師。在他心裡,可能這僅僅只是一份工作而已。
    我相信每一個程式設計師都夢想改變世界,這是最刺激也最有意思的地方,雖然有些時候工作非常忙,每天眼一睜一閉,人就在公司了。但是我依然能夠擠出點時間背背英語,搞個閱讀,學個小知識(畫個草圖弄個demo),雖然非常累,但是習慣之後還是很爽的。
    我最高興的時候是我給別人講東西時,順著思路能夠將一個比較複雜的事情講明白,超有成就感。
    做專案時,偶爾也會偷偷測試一個原來沒有的功能,看看效果,這就是我力所能及的改變。

8.Humility(謙卑)
    每一個程式設計師擅長的領域幾乎不會相同,雖然有可能覆蓋面有重疊,但是你在他人身上總能學到新的知識。
    個人感覺每一個行業的大佬,都是經歷過沉澱和積累的,只有把心靜下來,才能仔細品味出自己獨有的風格。

9.Confidence(信心)
    時常做一些有挑戰性的事情,將自己放在挑戰者的位置上。無傷痛,不成長,開一個文件,記一下自己做過的事情,
    當感覺撐不住的時候,就回來休息一會。

10.Adaptability(適應性)
    code其實是一個學無止境的事情,世界的變化發展日新月異,曾經看起來遙不可及的技術,也許幾年的時間就會大範圍普及
    在這裡作者建議根據職位規劃和個人目標選擇自己的專精方向,適應時代潮流,做一個喜歡衝浪的弄潮兒。

11.Community participation(加入社群)
    社群對於程式設計很重要,其重點在於他收羅了多方的資訊,人人都可以通過社群交流並獲取自己感興趣的資訊
    即使你並不擅長社交,但這並不妨礙你坐在電腦前,瀏覽一個帖子。

12.Conclusion(結論)
    作者認為以上都是“軟技能”,對於coder的好處遠遠大於瞭解語言、庫或者框架,我認為程式設計師的工作並不單只是編碼,每一個人都會對自己的工作有自己的想法、理解與追求
    在工作中思考自己,在實踐中檢驗自己,也許我們都在成長的路上,但只要不迷失方向,終有一天,人人都會站在山頂,俯瞰風雲。