Tag: 翻譯

  • 開發人員的面試指南 – A developer’s guide to interviewing

    開發人員的面試指南 – A developer’s guide to interviewing

    另一個標題:如何面試一家公司。 原作者:Dave Smith,Twitter: @djsmith42 原文:A developer’s guide to interviewing Louie Lu 經作者同意翻譯為正體中文。 譯註:本文描述為美國之情況,不一定能直接套用於台灣環境。 你有沒有過,當你在面試的時候,面試官坐在桌子對面,雙眼注視著問你:「你還有其他問題嗎?」,而你回眼回去並說:「umm, 大概沒有了」。如果這曾經發生在你身上,你有很大的機率得到了一個單一面向的面試經驗。 作為一個應試者,可以想見你把目標放在一件事情上:取得工作職缺。但是別忘記,面試並不是一個單向的工作。如同面試官在面試你,你也必須要面試公司。 不過,你需要問他們什麼呢? 許多在尋找工作的開發者都問過我這個問題。在過去的 15 年內,我曾在 7 間公司工作 (包含兩個實習以及一個六個月的新創公司),並且面試過無數次。我最後決定寫下我在這些面試中問的問題,好幫助其他面試者,並且期望對他們會有所幫助。 我的目標是將這些資訊記錄下來。如果你有任何的建議,請透過 Twitter 讓我知道,我會將資訊列入,讓大家都能受惠。 你跟誰談話? 當你在面試的時候,通常會遇到下面三種不同的人。根據公司的規模,這有可能是一個人或多位人選: 軟體工程師 大頭 / 管理階層 (technical lead, middle manager, director) 公司領導階層 (VP, CTO, CEO, department manager) 下面的列表中,針對不同的人,我有不同的問題詢問他們。注意到,有些問題我會在不同人之間重複詢問,然後比較他們之間是如何回答。 這是一篇很長的文章。 比較像是一份 reference,而不是一篇拿來閱讀的文章。如果我今天正在面試,我會將這份指南帶在身上,然後 (謹慎的) 在面試中使用裡面的提問。 大部分的問題沒有所謂「對」或是「錯」的答案。它們被設計來讓你更了解整個公司的文化、流程以及組織架構。它們也能拿來當作一個對話的開頭,這在你的大腦因為面試而呆滯的時候會有些幫助。 基於禮貌,我通常會在面試開始時跟面試官說,希望留下時間來問問題。這能幫助面試官規劃如何面試。通常他們會把提問的時間放在面試的結尾,要對面試官的流程有認知,並且讓他們在早期就知道你的意向。每個問題結束後,詢問他們是否可以繼續詢問問題,以及還有多少面試時間。 針對軟體工程師的問題: 你如何知道你每天要做什麼? 這個問題的目的是要了解有無工作流程上的障礙 (dysfunction)。我會希望從…

  • 中文翻譯 – 9 lessons from 25 years of Linux kernel development

    中文翻譯 – 9 lessons from 25 years of Linux kernel development

    原文網址:https://opensource.com/article/16/12/yearbook-9-lessons-25-years-linux-kernel-development Posted 14 Dec 2016 | Greg Kroah-Hartman 註:作者 Greg Kroah-Hartman,曾經來台在 COSCUP 2013 演講,是許多 linux tree 的 maintainer (usb driver core, debugfs, sysfs…etc),同時也是 staging 的 maintainer (staging 裏面有個地方是給新手練習 submit patch 的,greg kh 也會在 newbie mailing list 上解惑)。 他也是 Linux Device Drivers 跟 Linux Kernel in a Nutshell 的作者,台灣有翻譯前者,不過兩本書都很老了 (2.6的年代吧),他自己也有說LDD 4rd 近期大概不會出版QQ。 可以說 Greg KH 在 Linux…

  • 測所翻譯 – Testing on the Toilet: Web Testing Made Easier: Debug IDs

    原文網址:https://testing.googleblog.com/2014/08/testing-on-toilet-web-testing-made.html Tuesday, August 12, 2014 by Ruslan Khamitov 在每個元素中增加 id 可以讓針對網頁的測試更易於操作 DOM (e.g. WebDriver tests)。考慮到下面兩個只有內文有差異的 DOM: Save button Edit button <div class=”button”>Save</div> <div class=”button”>Edit</div> 在這個例子中,你會如何使用 WebDriver 來與 “Save” 按鈕互動呢?你有許多的選項。其中一個選擇是使用 CSS selector 來互動: div.button 但是,這個方法並不足以認出一個特定的按鈕,而且沒有其他機制可以讓你在 CSS 中以其中的文字過濾。另一個選樣是使用 XPath,這個方法非常的脆弱且不鼓勵使用: //div[@class=’button’ and text()=’Save’] 你的最佳選擇是增加一個獨特的階層式分類 ID,每個 widget 會有一個 base ID,而這個 base ID 會成為其子元素的前綴。以剛剛的按鈕為例,他們的 ID 將會是: contact-form.save-button contact-form.edit-button 在 Google…

  • 測所翻譯 – Testing on the Toilet: Writing Descriptive Test Names

    原文網址:https://testing.googleblog.com/2014/10/testing-on-toilet-writing-descriptive.html by Andrew Trenk 先來個問題:你要花多久時間來理解下面這個測試程式要做什麼? @Test public void isUserLockedOut_invalidLogin() { authenticator.authenticate(username, invalidPassword); assertFalse(authenticator.isUserLockedOut(username)); authenticator.authenticate(username, invalidPassword); assertFalse(authenticator.isUserLockedOut(username)); authenticator.authenticate(username, invalidPassword); assertTrue(authenticator.isUserLockedOut(username)); } 你大概閱讀了每一行程式 (說不定不只一次) 然後才理解每一行在做什麼。不過,如果一個測試有好的名子,你需要多少時間來理解下面這個測試想要做什麼呢? isUserLockedOut_lockOutUserAfterThreeInvalidLoginAttempts 透過良好的命名,你應該可以只透過閱讀測試程式的名稱,了解這個測試程式的想要測什麼,你甚至不用閱讀他的程式碼。前面提到的測試程式名稱只說明了他想要測試的情境 (scenario) 是 “invalidLogin”,但沒有真正的說明他期望的測試結果是什麼,所以必須要閱讀所有程式碼才能了解他的意圖。 將情境以及預期結果放在測試名稱還有其他的好處: – 如果想要了解一個類別所有的可能的行為,只要閱讀他的測試類別 (Test class) 中的測試名稱就可, 相比於原本需要花費數分鐘甚至是數小時來閱讀測試程式甚至是該類別本身來理解其行為。這對於 code reviews 也是有幫助的,因為你可以快速的了解是不是測試都已經覆蓋到所有可能的 cases。 – 藉由給予測試更為顯式的名子,可以強迫你把一個測試許多不同行為的 testing 拆分為不同的測試。 不然,你可能會想要把針對不同行為來測試的斷言放在同一個測試程式內,時間一久,這會讓整個測試程式膨脹且變得難以理解與維護。 – 測試的行為不一定每次都能從程式碼中清楚的了解其精確行為。如果測試名稱沒有顯式的告知其精確行為,有時候你會需要猜測這個測試到底在做什麼。 – 你可以簡單的了解到還沒有涵蓋進測試的功能。如果你沒有看到測試名子有那個你想要看或測試的行為,那你就知道,這個測試還沒有被實作。 – 當一個測試失敗的時候,你可以立刻知道是什麼功能失效,而不用去看測試程式碼。 . 有許多的 common patterns 來維護一個…

  • 測所翻譯 – Testing on the Toilet: What Makes a Good Test?

    原文網址:https://testing.googleblog.com/2014/03/testing-on-toilet-what-makes-good-test.html by Erik Kuefler 對於程式的正確性驗證來說,單元測試 (Unit tests) 是一個非常重要的工具。不過,撰寫好的測試遠比只驗證程式正確性還要重要 ─ 好的單元測試要有某些特徵來讓其易於閱讀與維護。 好測試的其中一個特徵是清晰 (Clarity)。 清晰的意思是指一個測試程式,應該被當作是一個易於人類閱讀的文件,描述其正在測試的 API 功能。 測試本身不應該直接介入實作的細節。一個類別的測試名稱,應該要能夠說明這個類別的用途;而他的測試應該被當作是如何使用這個類別的範例。 另外兩個重要的特徵是完整性 (completeness) 與精簡性 (conciseness) 一個測試在包含所有讓你了解其用途的資訊時為完整,以及沒有包含任何會讓你分心的資訊時為最精簡。 下面這個測試範例在並沒有剛剛提到的兩個重要特徵: @Test public void shouldPerformAddition() { Calculator calculator = new Calculator(new RoundingStrategy(), “unused”, ENABLE_COSIN_FEATURE, 0.01, calculusEngine, false); int result = calculator.doComputation(makeTestComputation()); assertEquals(5, result); // Where did this number come from? } 許多會分散注意力的資訊被放入建構子中,且整個測試中最重要的部份被隱藏在一個 helper method…

  • 2016-07-30 繼續翻譯 OO design pattern in kernel,收到 stm32f4!

    今天持續翻譯 LWN 的 Object-oriented design patterns in the kernel, part 1,因為裏面提到的例子跟 filesystem 非常有關,就拿起 Linux Kernel Development 3e 出來翻了。然後在物件導向的地方參看了 jserv 的影片 https://www.youtube.com/watch?v=IG6q8WX0sK4,比較理解 C 的物件導向的概念是如何實現的,連帶比較搞懂整篇文章例子與架構在做什麼了。 然後早上收到 jserv 寄來的開發板三塊!分別是 stm32f4-discovery、respberry pi 3 ver.b、linkit 7688,把玩了一下 stm32f4-discovery,在過程中遇到這個問題: 2016-07-30T16:15:44 WARN src/usb.c: Couldn’t find any ST-Link/V2 devices我的背景是 archlinux,用 lsusb 明明就有看到出現在裏面,卻沒有辦法找到 devices,照著前人的 note 重新編譯 st-link 跟 openocd 還是遇到相同的問題。最後在 google 搜尋了一下後,發現是沒有用 sudo 來執行,導致 st-util 無法找到 devices…,這在前人的 note…

  • Object-oriented design patterns in the kernel, part 1 中文翻譯

                Object-oriented design patterns in the kernel, part 1                                Neil Brown                               June 1, 2011                …