Algolia 的 Sarah Dayan 談什麼讓高級工程師與眾不同

已發表: 2022-08-19

雖然良好的編碼技能總是受到讚賞,但作為一名員工和工程師,需要的不僅僅是你的技術實力。 實現目標需要什麼,更重要的是,您可以在哪裡對您的組織產生最大的影響?

當您在工程軌道上達到高級水平時,您的硬技能應該是最佳的。 你是自主的,你的代碼是完美的,你對構建和交付軟件有深刻的理解。 但是進入員工和角色完全是另一回事。 有項目管理、指導和教學、決策制定、建立關係,你為公司帶來的價值不再以代碼行的質量來衡量,而是通過推動工程組織向前發展。

今天的客人就是這樣經歷的。 Sarah Dayan 是 Algolia 的一名高級工程師,這是一個“搜索即服務”平台,可幫助開發人員通過 API 在他們自己的平台中構建索引和搜索功能,並主持兩個技術播客:Developer Experience 和 Entre Devs。 她創建了前端庫,鑑於她對用戶體驗、設計和構建事物的終生熱情,這個角色非常適合她。 事實上,自從她的父母在她的地下室安裝了寬帶互聯網後,莎拉就一直痴迷於創建網站。 這是第一次點擊的愛。 她在 15 歲建立了她的第一個 phpBB 論壇,此後不久就編寫了她的第一個 HTML 頁面,並且從那時起就沒有停止過構建東西。

儘管沒有接受過正規的工程教育,Sarah 還是在法國顧問 Grand Manitou 找到了一份開發人員的工作。 然後,四年前,也就是 2018 年,她在 Algolia 找到了一份軟件工程師的工作。 她努力晉升,最終成長為一名參謀工程師的個人貢獻者角色。 突然之間,她過去幾年所關心的一切——成為一名更好的工程師,編寫更好的代碼——都為新的挑戰讓路了。 她將如何為公司提供正確的技術方向? 暢通瓶頸? 像其他人為她所做的那樣指導和幫助其他工程師?

在這一集中,我們與莎拉坐下來討論了員工和工程師角色的許多細微差別、熟練程度和期望。

以下是我們最喜歡的談話內容:

  • 如果你不想落後,那就繼續學習。 討論想法並從具有不同觀點和背景的其他工程師那裡獲得反饋。
  • 作為一名參謀工程師,您的很多精力都用於跨團隊協作以實現願景和戰略。 五年後公司將走向何方? 你怎麼去那裡?
  • 讓員工工程師擔任導師可以讓更多初級人員清楚地了解要採取哪些步驟來擔任這些角色,並且您可以快速跟踪創建工程領導者的過程。
  • 與普遍的看法相反,工程師並不是解決結構問題的快速解決方案。 在接受一份新工作之前,問問你對你的期望是什麼,以避免誤解。
  • 員工工程師必須了解公司的需求,才能幫助公司實現目標。 入職時,閱讀盡可能多的文檔並與盡可能多的人交談。

如果您喜歡我們的討論,請查看我們播客的更多劇集。 您可以關注 iTunes、Spotify、YouTube 或在您選擇的播放器中獲取 RSS 提要。 以下是該劇集的輕微編輯記錄。


從未停止學習

布賴恩斯坎蘭:非常感謝莎拉今天加入我們的節目。 我很高興有機會與您交談。 在我們談論你在 Algolia 的角色和工作之前,我很想听聽你到目前為止的旅程。 你今天的旅程是如何開始的?

莎拉·達揚:嗯,你好,謝謝你邀請我。 嗯,這實際上是一個有趣的故事。 我現在 32 歲,15 歲的時候家裡就有寬帶和無限上網。我一直熱衷於構建東西,當我第一次看到網站時,我就想,“我必須知道怎麼做。” 一件事導致另一件事,我用 phpBB 建立了我的第一個論壇。 PHP 非常非常大,而且仍然很大,但它確實是當時的 Web 語言。

“我決定這不是我的事,也許我應該做我喜歡做的事。 所以,我回到了我喜歡做的事情——建立網站”

那時,從事技術工作,尤其是作為軟件工程師,並不像今天那樣酷熱。 我的父母認為我應該考慮成為一名記者,因為我在學校擅長語言和文學。 這是我做的第一件事。 我做了第一年的新聞工作,但我完全失敗了,然後我決定這不是我的事,也許我應該做我喜歡做的事。 所以,我回到了我喜歡做的事情——建立網站。 我在一家機構找到了第一份工作,並在那里呆了六年。 它教會了我很多關於工作、與客戶合作、與知道自己想要什麼的人以及不知道自己想要什麼的人一起工作的知識。 然後,我搬到了創業世界。 我從事編碼工作超過 15 年,但在專業方面,我已經做了 12 年。這就是我在 Algolia 擔任當前職位的原因。 我已經在那里四年了,而且還在繼續。

布賴恩:超級。 你有什麼有趣的教訓,你早期學到的並一直困擾著你嗎?

莎拉:我沒有通向技術的經典路徑。 我沒有上過工程學校,如果你不這樣做,就有可能在科技領域擁有出色的職業生涯。 你絕對可以自學成才,你可以向其他人學習,而且你不必擁有學位。 但沒有學位並不是不學習的藉口。 Google 的工程經理 Sarah Drasner 在 CSS-Tricks 上發表了一篇很棒的博客文章。 即使您可以在沒有學位的情況下從事技術工作,但這並不能免除您學習和尋求知識的責任。

“我沒有得到反饋,我沒有與其他人交談:與其他工程師、其他觀點、其他背景。 所以我落後了”

你在學校真正學到的一件事就是學會學習,這是一項非常重要的技能。 在我職業生涯的早期,在我告訴過你的那家機構,很長一段時間我都是唯一的員工。 我一個人。 我有我的老闆,他也在編碼,但有點遠離我正在做的事情。 儘管它可以讓一個人工作更自由——你有很多信任,很多自由——你學得沒有那麼快,因為除了你自己之外沒有任何反饋或其他觀點。 如果你甚至不做任何主動學習,你就會落後。

這是發生在我身上的一件事。 我沒有得到反饋,我沒有與其他人交談:與其他工程師、其他觀點、其他背景。 所以我落後了。 我依賴於我所擁有的知識,我沒有理由做不同的事情,因為它有效。 這將是我在職業生涯早期獲得的最大教訓之一。 尤其是如果您沒有經歷過經典的科技之旅,那麼與其他為您提供反饋和他們觀點的人在一起是非常寶貴的,這將促進您的職業生涯。

布賴恩:我認為這對任何專業角色的人來說都是很好的建議,但聽起來它真的對你有用。 您是否懷念這些天不使用 PHP 的任何事情?

莎拉:我認為 PHP 是一門很棒的語言。 你可以從現代 JavaScript 中的 PHP 中找到很多靈感。 我不再使用它,因為 JavaScript 已經發展到可以在任何你想使用 PHP 的地方使用它的地步。 尤其是作為前端工程師,在前端和後端使用相同的語言有很多好處,比如共享。 但我認為 PHP 是一門很棒的語言。 它有很多不好的笑話,“哦,PHP 已經死了”,但是當你看到 Laravel 之類的成功時,我覺得 PHP 還遠沒有死。

當我進入 PHP 時,認真的人使用的框架被稱為 Zen 框架。 實際上,我相信 Zen 是 PHP 背後的公司,或者至少它收回了它。 沒有人再使用 Zen 框架了,至少沒有用於任何新項目,但是很高興看到 PHP 現在在哪裡。 它仍在蓬勃發展,人們喜歡用 PHP 編碼,我認為這很棒。 它不適合每個人,但你做你。 每個人都可以用他們喜歡的語言坐在桌子旁。

攀登工程階梯

Brian:你現在是 Algolia 的一名工程師。 告訴我一些關於這個角色和你的工作的信息,我們將繼續討論什麼是參謀工程師。

莎拉:當然。 我是一名工程師,我在前端工作。 我在一個名為前端體驗(簡稱 FX)的團隊中,我們為 Algolia 開發前端庫。 Algolia 是一個搜索引擎,所以它是端到端的。 您有多種語言的引擎和一些 API 客戶端來將數據發送到搜索,但您也有前端庫,因為誰有時間構建可訪問的工作搜索框、命中列表、細化列表或分層菜單?

所有這些事情都很難正確實施。 所以我們為客戶這樣做,這就是我正在工作的團隊。 我是個人貢獻者 (IC),我不在任何領導軌道上。 但問題是,當你成長為 IC 的更高職位時,你的現實與你的領導角色有點融合。 我沒有任何報告,也沒有管理任何人,​​但我花了很多時間與我的經理討論更多關於事物願景方面的主題。 但我仍然每天都在編寫代碼,並且像其他人一樣,我會給出評論並獲得評論。 所以它仍然是一個 IC 角色。 在 Algolia,您可以成長到相當高級的水平,並且仍然是每天都可以編寫代碼的個人貢獻者。

“任何高於高層的東西,你都會開始在戰略中投入大量精力——願景是什麼,五年後產品會在哪裡,我們如何在這些事情上取得成功?”

布賴恩:你認為與其他工作相比,你花費了多少時間? 分享背景,制定戰略,諸如此類。

莎拉:這很難衡量。 我會說50/​​50。 有時候我會寫很多代碼,我會在編碼中加入評論,因為它與你使用的能量相同。 但也有很多時間制定戰略,很多會議,很多願景文件,很多思考,很多對話來收集反饋,比如與產品經理、研究人員、設計師合作……所有這些都是工作的一部分. 在 Algolia,您擁有高級職員、校長等。 任何高於高級的東西,你都會開始在戰略上投入大量精力——願景是什麼,五年後產品會在哪裡,我們如何在這些事情上取得成功? 如果我們不成功,我們如何確保我們有一個備用計劃? 當你是一名高級工程師時,你能想到的任何東西都可以應用到項目中,比如編碼,你可以將它應用到產品的策略中。 你在產品上做了很多工作,這是我最喜歡在科技初創公司工作的事情之一。

當我在一個機構時,你沒有做任何策略,你沒有說出你的想法,你也不一定會給出建議。 你做了你被告知的事情。 但是,當您是初創公司的工程師時,尤其是在那些級別上,您的聲音和願景就很重要。 我們正在為工程師打造產品。 即使我們必須非常小心,不要為自己構建東西——我們有知識的詛咒,我們知道產品,我們知道如何使用它,我們知道所有的警告——我們仍然對工程師關心的東西很敏感關於,他們想要什麼,以及什麼會讓他們的生活變得輕鬆或艱難。 因此,人們非常重視產品,將想法帶到桌面上,提出具有挑戰性的想法,確保您打造出經久不衰的最佳產品。

“在花了數年時間思考如何成為一名更好的工程師之後,你需要轉變思維方式來開始考慮其他事情。 我怎樣才能幫助其他人? 我怎樣才能解除封鎖?”

Brian:您花多少時間與您的組織或團隊之外的其他員工和首席工程師一起工作? 那是貴公司的一個活躍社區嗎? 你會與它合作做很多工作嗎? 你在你的團隊中主要是獨立工作嗎? 或者是否有與您一起工作的其他高級工程師的子集?

莎拉:沒有我想要的那麼多。 在任何組織中,您的級別越高,您擁有的人員就越少。 所以它不像有大量的 IC 5、IC 6、員工和校長。 我們現在正在招聘很多資深人士,所以六個月後我的回答可能會有所不同。 我花了很多時間與其他員工甚至首席工程師交談,但並不是因為我們人數不多,就沒有任何社區或任何官方的東西。 現在,我花了很多時間與年長及以上的人討論,因為這是我職責的一部分。

我的部分職責是幫助高層人員成長並晉升為員工級別。 作為許多公司的高級工程師,尤其是像 Algolia 這樣規模的公司,你知道你需要做什麼才能到達那裡。 它更像是一個清單。 在那之後,它變得更加複雜,因為有很多事情可以解釋,根據你的個性,你可以做的事情與另一個人完全不同。 但我們的想法是,當您達到高級水平時,我們希望您在硬技能方面達到最佳狀態。 我們知道你很優秀,你處於一定的技術水平,我們不希望你成長得比這更高,但你會被要求發展其他類型的技能。

“我們應該找到你擅長的,你喜歡做的,這將幫助你發光,並培養牠。 涉及很多指導”

在花了數年時間思考如何成為一名更好的工程師、編寫更好的代碼、進行更好的評論或在獲得評論時減少評論之後,你需要轉變思維方式來開始考慮其他事情。 我怎樣才能幫助其他人? 如何解除封鎖情況? 如何創建自己的工作負載? 這些不一定是您在達到這些水平之前必須考慮的事情。 我幫助人們接近它,理解他們的意思,並理解他們將能夠利用他們個性的哪一部分來達到目標。

例如,有些人喜歡上台演講。 如果這是他們喜歡的東西,無論如何,我應該幫助他們更好地參與會議並撰寫更好的論文徵集。 但如果這不是你的事,我們就沒有理由對此進行投資。 我們應該找到你擅長的,你喜歡做的,讓你發光的,然後培養牠。 有很多指導。 這是我在這個資歷級別最喜歡的部分之一。

對於一家公司來說,擁有一名員工或一名高級工程師並不是很有趣——你希望擁有 3、5、8、16 名。你能夠做到這一點的唯一方法就是擁有那些已經在那裡幫助低一級的人。 你不能指望你的工程經理自己和整個團隊一起做這一切。 當你讓工程師幫助其他工程師完成他們在一兩年前所做的工作時,你就會產生這種乘數效應。 我認為這對人們來說真的很激動,因為他們可以向他人學習,向在同一組織中實際經歷過這一過程的人學習。 有信心,如果他們遵循這些步驟,如果他們傾聽,它可能會奏效。 我想向能夠幫助我了解實現目標需要做些什麼的首席工程師學習。

這對教學的人來說特別有趣,因為他們可以剖析他們實際做了什麼。 之後它變得模糊,你就像,“是的,我只是做了一點點這個,一點點那個。” 不,你做了什麼? 您採取了哪些具體步驟? 你答應了哪些事情? 你說不的事情是什麼? 我認為它可以幫助你澄清你的想法,澄清你的過程,它會讓你在接下來的工作中更有效率。

入職員工和工程師

布賴恩:你提到讓新員工和首席工程師加入一個組織,這可能非常棘手。 這是你有經驗的嗎?

莎拉:老實說,這不是我們經常做的事情。 我們有三四個首席工程師,他們都不在我的團隊中。 我的經驗主要是帶高級工程師。 現在,有些事情對每個人來說都是共同的,然後有些事情對首席工程師來說可能很有趣,我仍然可以嘗試嘗試一下。

“一個非常非常資深的人可以幫助你做很多事情,但他們不會解決公司或團隊的結構性問題”

清晰是極其重要的,當然,當您僱用員工或首席工程師時,您不會期望得到相同的幫助。 你希望他們成為自我啟動者。 清晰不是要告訴您對您的期望,所有任務等等,而是要讓您了解自己的使命。 你來這裡的目的是什麼? 你在這裡做什麼? 我想說這要從面試層面開始。 我對員工或首席工程師加入公司的建議是詢問這個問題,因為有時人們會嘗試聘請非常高級的職位來解決他們的問題。 他們就像,“哦,讓我們僱傭一個非常非常資深的人,因為他們知道我們不知道的事情。” 這不是真的。 一個非常非常資深的人可以幫助你做很多事情,但他們不會解決公司或團隊的結構性問題。

另一方面,工程經理應該想知道為什麼他們認為他們需要那個人。 大多數情況下,你不會僱傭這個級別的人來編寫代碼。 如果您的團隊中有一名高級工程師,那將是 Algolia 的 IC 4。 他們在編碼方面已經完全有能力,或者至少他們應該是。 員工或首席工程師具有您想做的事情的經驗,並且您可能需要他們,例如,當您知道您需要達到團隊中沒有人達到的規模時。 也許你可以弄清楚,但你想要一個加速器,這就是你團隊中一位非常資深的人要做的事情。

事先提出這些問題是確保預期內容沒有錯位的好方法。 如果您非常資深,並且僅僅因為存在偏差而被要求進行編碼或在高層工作,那麼您會感到失望,並且很可能會離開。 你不想花很多時間僱傭這個級別的人只是為了讓他們離開,因為這非常昂貴。

在那之後,我希望這個資歷級別的人會大量閱讀並進行大量對話。 當您是初級工程師時,這是您通常不會做的事情。 你來到你的組織,你得到了你的第一個任務,它就這樣流動了——你開始工作,你開始編碼,這就是你應該做的,因為這會讓你進入下一步。

“你的職責是確保交付的產品適合併且能夠擴展。 如果你不與公司的其他人討論,你就無法做到這一點”

但是當你處於那些高級水平時,重要的是你要了解你在哪裡,正在發生什麼,誰在做什麼。 您不僅需要與其他工程師和高級人員建立關係,還需要與更多初級人員、產品經理、設計師和研究人員建立關係。 您需要了解公司的運作方式以及您如何適應這種方式,以及您可以幫助改進什麼。 如果有任何書面的內部文檔,請閱讀它,完成後再次閱讀。

然後,問問你的工程經理你應該會見哪些人。 每次與新人交談時,請詢問他們認為與誰交談會很有趣。 這會給你翅膀,因為你會建立關係並了解正在發生的事情。 產品有哪些? 目前的鬥爭是什麼? 你可以在哪裡提供幫助? 您的團隊和您正在構建的產品如何適應該計劃? 因為在這些級別上,隨著對產品的關注,它不再只是代碼的質量。 團隊中的前輩已經在處理這個問題,而且他們做得非常好。 您的角色是確保交付的產品適合併且可以擴展。 如果您不與公司中的其他人討論,您將無法做到這一點。

新的挑戰

Brian:對於不了解的聽眾,Algolia 是一個強大的託管搜索 API。 從外面看,它看起來是一家相當成功的公司,但我敢肯定,你心中有很多挑戰和事情。 您能否告訴我們您正在考慮或正在解決的一些重大問題?

“我們的想法是,無論您採用何種路徑來搜索該數據、獲取數據並登陸頁面,您都會獲得正確的數據”

莎拉:正如你所說,Algolia 是一個託管搜索 API。 這是我們擁有的最大的 API,也是目前最成功的 API,但我們也進行了一些擴展。 目前,有一個名為 Algolia Recommend 的產品,它使用您用於搜索的相同數據集,但基於給定的產品,它會為您提供建議。

Algolia 的重點不僅在於搜索,還在於展示內容。 您有很多內容,但並非所有內容都同時與同一個人相關。 這個想法是,無論您採用何種路徑來搜索該數據、獲取數據並登陸頁面,您都會獲得正確的數據。 這是阿爾戈利亞的重點。 這方面存在挑戰。 我們是搜索專家,但推薦和機器學習方面是一項更新的技術,所以我們正在學習最新的東西。 與搜索相比,我們要學習的東西很多。 這不是最大的挑戰,但要確保我們能夠重申我們在搜索方面取得的同樣成功,這仍然是一個挑戰。

現在,有些事情是阿爾戈利亞不擅長的。 它是一個搜索引擎,而不是一個數據庫。 它會很快,最終會保持一致,但你不能保證你會擁有所有的數據,你的數據總是一致的,或者你的所有數據都會在那裡。 這是圍繞搜索引擎的設計選擇,這使得它與數據庫非常不同。 話雖如此,很多人喜歡將 Algolia 用作數據庫,因為將數據發送到 Algolia 非常容易,而且它就在那裡,而且速度很快。 也許有一些東西需要學習。 也許它也可以是一個數據庫,我並不是說它會是,但也許它可以。 也許還有其他東西需要我們去理解和研究。

有許多 Algolia 無法使用的用例。 其中之一是預訂用例。 如果您想預訂 Airbnb,當您搜索它時,它會出現在您的結果中,這意味著它是可用的。 但是一旦您到達該頁面,它就不再可用,因為您將數據從數據庫複製到 Algolia。 當您在數據庫中保存某些內容時,您將以稍微不同的格式將該更改發送到 Algolia。 而且由於存在延遲——這不是實時的——像預訂用例這樣的東西無法工作。 當您與 Airbnb 打交道時,現在可用的東西可能在 30 秒內不可用,但它仍然可能會出現在您的搜索引擎中,因為當您保存時,您可能需要 10 秒或類似的時間才能將其傳播到Algolia,也許它失敗了,你需要再做一次。 這些是我們正在考慮的搜索引擎級別的事情。 這是我們可以支持的東西嗎? 是不在話下嗎? 這背後的商業案例是什麼? 因為它驅動了很多東西。

“它應該是看不見的; 它應該是無縫的。 這些是單獨的 API 的事實不是您的問題。 這是我們要解決的問題”

現在,關於前端團隊,我提到了 Algolia Recommend。 當您是客戶時,您並不真正關心有不同的產品。 您不在乎是否擁有具有這些功能的 Algolia Search 和具有這些子功能的 Algolia Recommend。 您訂閱 Algolia 並為一組您被告知可以很好地協同工作的功能支付月費或年費。 您不想也不需要了解我們在此 API 和數據 API 之間在內部創建的人為邊界。

有這樣一句話,“不要發布你的組織結構圖”,我認為這是我們下一個重要主題之一。 我們如何確保在前端,當您使用 Algolia 前端庫時,您不必懷疑是否需要這個或那個? 那你感覺不到那些界限嗎? 它應該是不可見的; 它應該是無縫的。 這些是單獨的 API 的事實不是您的問題。 這就是我們要解決的問題。

我們創建了與搜索 API 緊密耦合的庫,現在我們必須擴展到可以協同工作的新 API,有時您需要調用其中一個,然後調用另一個以獲得最終響應。 現在所有這些事情都不像我們希望的那樣無縫。 當您想將這些 API 連接在一起時,邊緣仍然有點粗糙。 這是可能的,但是你必須閱讀教程,堅持到底,在這里和那裡做一些小改動,並編寫一些樣板代碼。 這不愉快,不好玩,而且工作量太大。 如果我們要告訴你,“使用那個庫”,它需要做你不想做的工作。 如果較低級別的原語同樣易於使用,則沒有理由使用該庫,對吧?

目前,最大的挑戰之一是確保我們提高圖書館的價值。 他們已經做了很多大多數人不想做的事情,但在某些時候,對於某些客戶來說,它不像以前只有搜索時那樣無縫和令人愉快。 這就是我們所追求的感覺。 那種感覺,“哇,這比我想像的要簡單得多。”

布賴恩:最後,我們的聽眾可以去哪裡跟上你的步伐?

莎拉:所以你可以在 Twitter 上找到我,我是 frontstuff_io。 我痛苦地意識到這是 Twitter 上最糟糕的處理方式。 你也可以在 sarahdayan.com 上找到我,如果你願意,可以在 GitHub 上關注我; 我有時會做一些事情。 但是,是的,如果你想聊天,我相信我的 DM 是開放的,所以給我發任何東西。

布賴恩:超級。 莎拉,非常感謝你今天加入我。

莎拉:謝謝你邀請我。 那很有趣。

職業 CTA - 工程(水平)