Java英雄:丹·艾伦
“ Java英雄 ”系列休息了很長時間。 老實說,我想即使有很多人想在這里收錄,它也可能會以虛無收場。 其中之一是丹。 我第一次要求他捐款已經將近一年半了,與此同時發生的一切,讓我不再有任何答案就讓我安心了。 但是以下內容在JavaOne期間到達了我的收件箱,并且基本上是我的生日禮物。 因此,我今天再次打開Java英雄書,并在其中添加新的章節! 謝謝丹! 稱您為朋友非常好!
丹·艾倫
Dan Allen是開源和標準的倡導者和創新者。 他曾在Red Hat擔任首席軟件工程師。 他曾擔任Arquillian社區經理,為各種開源項目(包括Arquillian,Asciidoctor,Awestruct和JBoss Forge)做出了貢獻,并參加了JCP。 他幫助各種開源項目取得了巨大成功。 他還是《 Seam in Action》(曼寧,2008年)的作者,為各種出版物撰寫過技術文章,并且是國際公認的演講者。
一般
你是誰?
我是一名開源倡導者和開發人員,社區催化劑,作家,演講者和企業主。 目前,我正在努力通過領導Asciidoctor項目,通過倡導Arquillian來提倡更好的軟件質量來改善文檔狀態,并且,總的來說,我會盡一切努力制作我所貢獻的開源項目及其社區,大獲成功。 經過漫長的會議后,您可能會發現我和社區成員一起喝著Trappist啤酒歡呼雀躍。
您在公司的正式職位?
我與Sarah White共同創立的咨詢公司OpenDevise的開源黑客和社區戰略家副總裁。
你在乎嗎?
與過去的標題相比,我更關心此標題,主要是因為我必須對其進行定義。
不過,總的來說,標題可能毫無意義。 拿我以前的頭銜,中間件首席軟件工程師。 像這樣的所有真正成功完成的職務都是傳達員工的薪資等級。 “校長”之后的榮譽是“高級校長”。 那接下來呢 “校長?” 我以前是什么? 初級微不足道的工程師? 我們不妨像美國政府那樣使用數字等級(例如GS-10)。 至少這是一個邏輯系統。
像許多同齡人一樣,我一直在為自己的角色定義自己的頭銜。 對我來說,標題的目的是幫助他人了解您的專業和重點。 這樣,他們就會知道您何時需要找到他們。 這就是為什么我選擇標題“開源黑客和社區戰略家”的原因
我生活和呼吸開源,所以標題的“開源”部分很合適。 如果您想討論有關開源的任何事情,我總是很游戲。
我也喜歡社區,尤其是熱情社區。 我一直在思考它,以及如何使其更好地工作。 這就是“社區戰略家”一詞的來歷。
我喜歡讓人們對技術感到興奮,然后在他們發現自己對技術進行改進或創新的熱情時幫助他們前進。 雙方都經歷了如此激動而自豪的經歷。 在我看來,這種感覺被稱為開源。 我只是反復地以“開源黑客和社區策略家”的身份來復制它。 也許有一天,人們會認出我是“串行社區創建者”!
我們這些開源的人也通過我們領導或幫助管理的項目(如果有)來識別自己。 目前,我是Asciidoctor項目的負責人-盡我所能。
你會說外語嗎? 哪個?
我希望。 我在高中學習法語,但認為這種經歷純屬學術性質。 我正在挑戰自己閱讀法文推文,以重溫我曾經知道的內容。
我在外語方面的現實生活經驗來自與來自全球的開源社區成員的互動以及在其他國家/地區度過的時光。 即使我聽不懂其他語言,也喜歡聽音樂般的聲音和節奏。 我從聆聽中獲得了一定的愉悅感,而不會分散注意力。
我最喜歡的外語經驗是使用《 Arquillian用戶指南》的翻譯及其翻譯。 它不僅使我接觸了多種語言(超過十二種),而且使我對一種語言在一個人的身份中所扮演的角色以及對一個國家的自豪感產生了直接的欣賞。
經驗也促使我理解Unicode和字體。 我很自豪地說,我了解了Unicode的全部內容及其工作方式(至少從編程的角度來看)。
我期待著與翻譯更多地合作,重新考慮翻譯的管理方式,并繼續吸收語言的聲音和節奏。 也許有一天,我至少會精通其中之一。
您的日常“引導”過程需要多長時間?
一個更有趣的問題可能是“何時?” 因為我保持一些奇怪的時間。 我的日常目標通常是在太陽升起之前上床睡覺。 這使我的早餐和自助餐可以處理您的午餐。 當然,這全都取決于時區。 正如我的一位同事指出的那樣,我在會議上是非吸血鬼的。
您可能想知道瘋狂的時間表是怎么回事。 關于管理開源項目的事情是,您永遠不知道某人何時準備好參與。 當有人準備參加時,您需要抓住機會。 他們可能需要一段時間(如果有的話)才能再有時間。 這個人可能在世界任何時區。
說實話,無論如何我也喜歡夜晚和白天。 晚上我很孤單,然后我經常做一些最好的工作。 其他時候,我只是享受沉默。 我也期待這一天,尤其是在科羅拉多洛磯山脈的景色很清晰的時候。 我在紫色或白色峰頂的背景下做了一些我最好的工作。 您可能會說,我白天和黑夜都汲取了靈感,以培養我的創造力。
在“早上”我只做咖啡的第一件事,但是我每天做幾次其他引導活動(例如Twitter)。 我花了大約一兩個小時才能瀏覽自己的電子郵件和Twitter,并在Google+進站。
推特
你有推特手柄嗎? 為什么?
當然。 這是@mojavelinux 。
我有一個Twitter帳戶:
- 開放
- 連接
- 去探索
- 報告
- 保持聯系
當我第一次使用Twitter(超過6年前)時,許多人認為它是荒謬而毫無意義的。 之所以吸引我,是因為它提供了一種無需事先安排即可進行交流的方法。 它有點像一個全局IRC通道,并對其應用了上下文過濾器。
Twitter改變了我開展業務的方式以及與同事和社區互動的方式。 寧愿嘗試解釋它,我將給出兩個示例。
當我們發展Seam 3社區時,我們不僅在等待人們加入郵件列表。 我們在Twitter上尋找了談論JSF和Java EE的人。 布萊恩·里瑟姆(Brian Leathem)是當時最有聲音的人之一。 當他發布有關JSF的反饋或投訴時,我們會通過直接回復他來吸引他。 那把他的帖子變成了對話或設計會議的開始。 當需要雇用某人擔任相關職位時,他已經是最高候選人,并且自此成為最高雇員。 有像布萊恩的故事。
很容易得出結論,我們“雇用了在Twitter上認識的人”。 這沒有抓住重點。 Twitter的公共頻道使我們有機會找到對特定技術或平臺有濃厚興趣和經驗的人。 如此公開,我們甚至不必知道在哪里尋找對方(Twitter上除外)。 聚會是不可避免的。
Twitter還消除了與您自己的公司甚至其他公司的員工進行通訊的開銷。 您只需在Twitter上發布廣播,通常會植入一些觸發詞或標簽,該人將看到它,或者有人將其傳遞給該人。 無論哪種方式,您都可以消除雇員目錄的整個麻煩。 Twitter上正在進行全球對話,我們都參與其中。 現在打開了。
您總體上關注誰?
首先,我的社區成員。 正如我提到的那樣,Twitter是我保持社區脈動并全天與他們交流的方式。 我遵循一些公司和項目的提要,例如GitHub和Java EE,但大多數時候我想知道該帳戶背后有個人。
我不愿跟我認識的任何人進行面對面的交流,無論是面對面還是在線對話。 我也對LinkedIn和Google+遵循相同的政策。
你對推特有個人的“政策”嗎?
一種政策是保持撥入狀態。我每天至少在時間軸上耕作一次,并嘗試回答我遇到的任何問題。 作為社區負責人,出席并參與全球對話很重要。 有時候,我只有在咨詢了自己的信息流之后才確定議程。
我確實確保不讓它接管(某種)。 當我發現自己只在閱讀或轉發而不是分享時,我意識到我需要重新進行創作,以便可以分享一些東西(或稍作休息)。
我非常謹慎地發布和轉發有用的信息。 這是我個人政策的重要組成部分。 我使用諸如Klout,“ Twitter提及”標簽和新的Twitter分析之類的工具來了解人們認為有用或有趣的內容,并專注于擴展這些主題。 我撥出沒有反應的主題,因為我尊重追隨者的時間。
貴公司是否限制或鼓勵您使用Twitter?
公司的政策是,使用您自己的判斷。
公共社交網絡對開源產生了巨大的積極影響,主要是因為開源既是公共的又是社會的。 這使Twitter對我的職位至關重要。 我們經常在Twitter上發現新的貢獻者(反之亦然)。 我們有時也將其用作限制為140個字符的郵件列表(相信我,這是對真實郵件列表中經常出現的論文的一種緩解)。
簡而言之,沒有Twitter(或類似的東西),我就無法完成工作(在當今時代)。
工作
您的日常開發設置是什么?
一個帶有大量Vim和網絡瀏覽器的選項卡式終端。 我所做的幾乎所有工作都在這些環境中進行。 由于我一直大量參與AsciiDoc和編寫內容的工作,因此我的許多Vim會話都有排隊的AsciiDoc文檔。
我在Vim中進行所有的Ruby開發。 我依靠語法高亮顯示和自己的直覺作為Ruby IDE。 如果您看到我分割窗戶的次數,它會使您感到恐懼。 不要模仿我的工作,它可能效率很低,但是以某種方式對我有用。
當我需要進行Java黑客攻擊時,我絕對必須啟動IDE。 在Vim中編輯Java(無需任何其他插件)只是浪費時間。 我最喜歡Eclipse,因為那是我職業生涯中最先使用的東西。 但是,最近我經常啟動IntelliJ IDEA,有時我確實喜歡Netbeans。 當我必須在項目中編輯XML時,我會回到Vim,因為復制粘貼效率更高!
瀏覽器中的開發工具在編輯CSS時可節省生命和時間。 我喜歡在實時會話中制定所需CSS規則,然后將其轉移到項目中的樣式表中。 一切都始于“檢查元素”。
哪種工具可以為您的工作提供最高的生產率?
Vim。 在過去的十年中,我每天都在計算機上使用Vim。 沒有生命,我無法想象。 Vim是我的錘子。
您更喜歡與同事互動的方式?
主要是異步通信,一年進行幾次面對面的聚會。
異步通信是郵件列表,社交網絡,電子郵件和(開和關)IRC的混合體。 由于我們所有人都有太多電子郵件,因此我與密友的大多數私人電子郵件已被Google+和Twitter的私人消息所取代。 您會驚訝那些私人消息更有效。 當然值得一提。
我們通常在Devoxx和JavaOne之類的會議上會面。 這次非常重要,因為這是我們在屏幕名稱后面形成人的印象的時候。 遇見某人并聽到他們的聲音后,您再也不會再從他們那里收到一封電子郵件了。 您會聽到他們的聲音和表情來自他們的聲音。 這些印象,以及當您親身時所形成的聯系,才是使虛擬關系起作用的原因。 除了技術(特別是技術)之外,您還發現了其他需要談論的事情。
有時,我會被安排參加這些喜歡進行電話會議的團隊。 首先,有人可以殺死會議電話嗎? 他們太恐怖了,被嗡嗡聲殺死了。 除此之外,跨國公司的電話根本不起作用。 沒有時間是某人的好時光。 當我們最終設法(最多)使每個人都通電話時,沒人知道什么時候該說話(或閉嘴)。 這是馬戲團。 讓我回到我的異步通訊中。
如果確實需要“打電話”,我更喜歡Google Hangouts(在可行時)。 當我說這幾乎和當面一樣好時,我并不夸張。
您最喜歡的待辦事項管理方式是什么?
我在這方面做了很多研究,并決定使用一個名為Nirvana的在線應用程序。 它比我評估過的任何其他方法都更加忠實地遵循David Allen的GTD方法。 當我擅長堅持時,它對我很有幫助。
當我表現不佳時,我會回到兩個錨點,即一個名為WORKLOG的文本文件和我的電子郵件收件箱。
我使用多年的一個技巧(對于上下文切換非常有用)是在我從事的每個項目中維護一個WORKLOG文件。 該文件中的任務并不是很急,但是確實讓我想起了當我有時間從事該項目時下一步要做的事情。 長時間休息后返回項目時,此功能特別有用。
如果您希望在自己喜歡的公司工作,那會是什么?
現在,我的理想工作不是在別人的公司,而是我自己。 我喜歡開源的主要原因之一是它賦予的自治權。 我沒有找到方法來創造價值的問題,但是有時候我確實有說服雇主追求價值創造的問題。
在我現在追求的理想工作中,無論如何我都可以創造價值,我可以判斷何時成功以及何時為自己失敗,我可以決定何時需要增長,何時不需要增長我可以捍衛對我重要的原則。 這就是為什么我和妻子采取步驟創建自己的公司的原因。 我們的目標非常簡單:生存,快樂與健康,創造價值,以開源方式工作并幫助客戶取得巨大成功。
Java
您正在用Java編程。 為什么?
我堅信可移植性和選擇。 我相信JVM為我們提供了這種自由。 它是最優化,最有效的運行時之一,這錦上添花。
我使用Java是因為它是JVM上的默認語言。 如果將另一種語言替換為默認語言,我可能會改用它。 Java是在JVM的常見運行時上運行和集成代碼的一種方法,并且可以結束該代碼。 有一些引人入勝的功能使Java變得令人愉悅,例如注釋和現在的lambda和流。 但是,如果我有選擇的話,我會選擇其他語言,例如Ruby,Groovy和Clojure ...只要該語言在JVM上運行良好!
Java的最大樂趣是什么?
儀式和冗長。 輸入太多。 我喜歡可以在很小的空間內完成很多工作的代碼,但是仍然易于閱讀和直觀。 Java需要大量空間。
Java還缺少您在大多數其他語言中找到的標準庫中的某些真正關鍵功能。 一個很好的例子是可以從文件或URL中讀取所有內容的單個函數。 這是一個簡單的概念。 它應該具有簡單的功能。 Java并非如此。
而且,獲取器和設置器是愚蠢的。
如果您可以用Java更改一件事情,那將是什么?
減少進口儀式。 我知道,這不是很多人想到的第一件事...那是除非您已經使用動態語言完成了大量工作。
Java語言和動態語言之間最大的區別之一(是經常提及的)是默認語言集中的類型數量和需要更多獲取的導入語句數量。
看起來似乎沒什么大不了的,尤其是因為IDE可以幫助管理導入語句,但是您會驚訝于它們仍然使您慢下來,并且在沒有IDE的幫助下徹底癱瘓了開發。 在Ruby(在某種程度上是Groovy)中,您可以編寫最簡單的程序而無需單個import(require)語句。 這意味著您可以繼續插拔電源。
Ruby還使您可以導入整個庫,以便可以使用一個語句(RubyGem)訪問應用程序中的所有文件。 在Java中,您必須在每個文件中導入您使用的每種類型(或至少包含它們的每個包)。 這是要管理的大量額外行。
我希望這種改進與Java模塊化一起出現。 您可以將模塊導入應用程序,然后在任何地方使用它的類型。 那對我來說將是改變游戲規則。 結合Java 8中的語言改進,我的Java效率也許可以趕上Ruby的效率。
您最喜歡動態語言的什么?
Ruby。 現在,我用Ruby寫的代碼比使用任何其他編程語言( https://www.openhub.net/accounts/mojavelinux/languages )都要多。 (我還廣泛研究了Ruby和Java互操作)。 我可以證明Ruby是非常自然的,正如語言設計師所預期的那樣。
我也是Groovy和Clojure的粉絲。 我喜歡Groovy的原因是我喜歡Ruby,它具有與Java無縫集成的附加好處。
Clojure是我的“挑戰自己的語言”。 我不會說這對我來說還很自然,但是它促使我編寫更好的代碼。 他們對LISP說的是真的。 它確實擴大了您的思維范圍。
哪種編程技術使您前進最多,為什么?
毫無疑問,函數式編程。 這是一個流行的回應,但有充分的理由。 這不只是一種趨勢。
根據我與Java EE,Seam和CDI的合作經驗,我相信我有資格說在最佳情況下在共享上下文中管理狀態是困難的,通常是容易犯錯或不可能的。 隨著孤立的流程變得越來越稀有,我們必須改變我們的發展方式。
函數式編程為我們提供了必要的工具。 高階函數使我們無需依賴類層次結構和依賴共享狀態的誘惑就可以編寫邏輯。 持久的集合且沒有副作用,讓我們編寫默認情況下線程安全的代碼,更好的是,準備針對多核甚至分布式進行優化。
不過,請不要相信我。 只需聽聽Rich Hickey的一些演講,然后獲取有關Clojure的書或教程并開始學習即可。 您的思想會說服您。
您從事過的最大項目是什么?
這是一個J2EE Web應用程序,它促進了抵押貸款和自動評估服務。 該應用程序是在一個不太清晰的基于組件的框架中編寫的,該框架早于與EJB2后端和webMethods服務進行通信的JSF。 為了使其能夠運行,必須將其加載到Weblogic的bootclasspath上,其原因我永遠也不會理解。 在我在那里工作期間,測試套件從未成功完成,而且沒人能解決如何修復這個龐然大物。 調試是一場噩夢。 不好看 可以說,我很欣賞像Spring這樣的輕量級框架的需求,并且一旦我不肯使用該系統,就改變了我的職業道路。
這項工作的好處是我獲得了使用XP開發方法的經驗(故事卡,結對編程,持續失敗的集成等)。 這可能是該應用程序保持生存并向前發展的唯一原因。
您犯過的最嚴重的編程錯誤是?
沒有記錄(也沒有測試)。
我總是因為沒有記錄而自欺欺人。 我們將編程錯誤視為邏輯或語法錯誤,但我們可能犯下的最嚴重罪行沒有傳遞知識和穩定性。 這就像在某個物業周圍散布地雷,忘卻了它們,然后將其變成公園一樣。 錯誤將由下一個不知道要確保系統安全運行所需的所有知識的人員所犯。
最后,我將對今年OSCON上最受歡迎的Tweet進行修改,以幫助鼓勵您成為更有紀律的程序員。
總是[編寫文檔],好像最終維護您代碼的[人員]將是一個知道您的住所的暴力精神病患者。
—約翰·伍茲( 來源 )
翻譯自: https://www.javacodegeeks.com/2014/10/the-heroes-of-java-dan-allen.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的Java英雄:丹·艾伦的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 自制烧烤架的方法 做烧烤架的步骤
- 下一篇: Java和甜蜜的科学