實習一年算工作一年嗎?
by Andrew Ngo
通過安德魯·恩戈
經過一年的努力,我如何找到軟件工程工作 (How I landed a software engineering job after a year of hard work)
Many of us think the path to becoming a software engineer requires years of education and an extremely high IQ. While software engineering is one of the brightest professions, don’t let that discourage you from learning to code and becoming a software engineer.
我們中的許多人認為,成為軟件工程師的道路需要多年的教育和極高的智商。 盡管軟件工程是最杰出的職業之一,但不要因此而灰心,因為這會阻礙您從學習代碼到成為一名軟件工程師。
I thought it was too late for me to transition into computer science, but no matter where you are in life, it’s never too late to learn and pursue your passion.
我以為進入計算機科學領域為時已晚,但是無論您身在何處,學習和追求自己的熱情永遠不會太晚。
我的非傳統背景 (My non-traditional background)
I did not attend a top ranked university nor do I have a technical background. I didn’t have a passion for solving puzzles as a kid nor compete in math competitions. I actually strayed away from troubleshooting computers as a kid after the many failed attempts of getting the wifi to work.
我沒有上過一流大學,也沒有技術背景。 我小時候沒有解決難題的熱情,也沒有參加數學競賽的熱情。 在使wifi無法正常工作的許多嘗試失敗之后,我實際上還是從小就放棄了對計算機進行故障排除的工作。
I graduated with a Business Administration degree and worked two finance jobs that didn’t challenge me. They were easy, simple jobs, but it got mundane and boring really fast. I didn’t feel like the work I was doing was fulfilling and was turned down every time I asked for more analytical tasks. I then decided to better my skill set and create my own opportunities.
我獲得了工商管理學位,并且從事過兩項財務工作,這些工作對我沒有挑戰。 他們是簡單,簡單的工作,但很快就變得平凡而無聊。 我覺得自己所做的工作沒有完成,每次要求進行更多分析任務時都被拒絕了。 然后,我決定提高自己的技能,創造自己的機會。
A little over a year ago, I picked up SQL since it’s a popular skill in financial analytics. After learning the syntax, coding didn’t seem as intimidating anymore. It was kind of like learning a new language. Once you are able to read and write, you can understand things that once looked completely foreign. I really enjoyed learning a new language and being technical in my work, so I knew that this was something I had to pursue.
一年多以前,我選擇了SQL,因為它是財務分析中的一種流行技能。 在學習了語法之后,編碼似乎不再令人生畏。 這有點像學習一種新語言。 一旦能夠讀寫,就可以了解曾經看起來完全陌生的事物。 我真的很喜歡學習一種新語言,并且在工作中精通技術,所以我知道這是我必須追求的。
選擇正確的道路 (Choosing the right path)
I considered the different routes to pursue a career in development. I did not want to spend another two years in undergrad, and I didn’t want to learn everything on my own. I’d heard success stories of people who attended coding bootcamps and were able to transition into a software engineering role. After doing a lot of research, I decided this was the best option for me and applied for the next Hack Reactor cohort.
我考慮了追求職業發展的不同途徑。 我不想再花兩年的時間去讀本科,也不想自己學習任何東西。 我聽到過一些成功的故事,這些人參加了編碼訓練營,并且能夠轉變為軟件工程師。 經過大量研究,我認為這對我來說是最佳選擇,并申請了下一個Hack Reactor群組。
I needed to pass a technical interview in order to be admitted into the program, so I spent all my time either after work or on the weekends learning as much as I could. It was difficult making time to learning something completely new after being drained from a full-time job, but my motivation to reach my goal kept me going.
我需要通過技術面試才能被錄取,所以我下班后或周末都花了很多時間學習。 在全職工作耗盡之后,很難抽出時間去學習全新的東西,但是我追求目標的動力使我繼續前進。
I completely bombed my first interview, but I learned from my mistakes and I booked another interview on the day of the deadline. I made sure this time I was prepared and communicative with my entire thought process. The next day I received my letter of acceptance and my journey to becoming a software engineer had officially begun.
我完全炸毀了我的第一次采訪,但我從錯誤中吸取了教訓,并在截止日期當天又進行了一次采訪。 我確定這次我已經準備好并且可以與我的整個思考過程進行交流。 第二天,我收到了錄取通知書,成為軟件工程師的旅程正式開始了。
磨練你的手藝 (Hone your craft)
The campus I decided to attend was in San Francisco, one of the biggest tech hubs in the world. Being in SoCal all my life, it was definitely a major change and it wasn’t easy saying goodbye. I packed up all my things and moved into a shared apartment in SF.
我決定參加的校園位于舊金山,這是世界上最大的技術中心之一。 一生都在SoCal中,這絕對是一個重大的變化,說再見并不容易。 我收拾好所有東西,搬進了舊金山的一間共用公寓。
During the first few days into my program, I got to know my classmates. A majority of them came from highly respected universities and had STEM degrees. Many of them had prior knowledge of other scripting languages and experience with Object Orientated Programming. I knew I had a lot to catch up on if I didn’t want to fall behind.
在計劃的前幾天,我認識了我的同學。 他們中的大多數來自備受推崇的大學并擁有STEM學位。 他們中的許多人具有其他腳本語言的先驗知識,并且具有面向對象編程的經驗。 我知道如果我不想落后的話,我還有很多要追趕的機會。
They call it a coding bootcamp for a reason. Classes were scheduled from 9am — 8pm, six days a week, but I would usually stay till 10pm or midnight. I pretty much lived, breathed, and slept code.
他們稱其為編碼訓練營是有原因的。 上課時間為每周六天,從上午9點至晚上8點,但我通常會呆到晚上10點或午夜。 我幾乎過著呼吸,睡覺和睡覺的代碼。
The first few weeks I really struggled. I would cram as much information as I could while making sure I still retained the previous days’ information, and repeated this process again the next day. There were moments where I doubted myself and didn’t think I had what it takes to be a programmer. I sacrificed so much to be there and my friends and family were all counting on me to finish strong. I knew this was my only shot, so I persisted and weathered the storm.
前幾周我真的很掙扎。 在確保仍然保留前幾天的信息的同時,我會盡可能多地填充信息,并在第二天再次重復此過程。 有時候我會懷疑自己,不認為自己有成為程序員的能力。 我為在那里而犧牲了很多,我的朋友和家人都指望我能保持堅強。 我知道這是我唯一的機會,所以我堅持并度過了難關。
Days and weeks began to fly by and I slowly started to get into the flow. I began to learn “how to learn” and be reliant on my own skills to figure out the problems I faced. Google is any developer’s best friend and it’s very likely that someone else has come across the same error you’ve run into.
幾天又幾周開始飛逝,我慢慢開始進入潮流。 我開始學習“如何學習”,并依靠自己的技能來解決自己面臨的問題。 Google是任何開發人員的最好朋友,很可能其他人遇到了您遇到的相同錯誤。
I worked on sprints every two days which covered JavaScript fundamentals, frontend frameworks, servers, databases, deployment and much more. I was just going with the motions for the first few weeks, but when I finally created an entire full stack application, that’s where it all clicked. I finally understood the purpose of specific technologies I was using and everything made sense.
我每兩天進行一次sprint工作,其中涉及JavaScript基礎知識,前端框架,服務器,數據庫,部署等。 前幾周我只是在進行動議,但是當我最終創建了一個完整的全棧應用程序時,一切都在這里。 我終于了解了我正在使用的特定技術的目的,并且所有事情都說得通。
讓我們來構建一些東西 (Let’s build something)
Once the foundation was set, my program’s curriculum shifted toward building projects. I would work on capstone projects with teams that would emphasize either frontend or backend. They say you get out what you put in, so I made sure to show my absolute best work into these projects. Not only did it have to work, but the code had to be clean and readable in case potential employers reviewed my git repositories.
一旦確定了基礎,我的計劃課程就會轉向建設項目。 我將與強調前端或后端的團隊一起進行頂點項目。 他們說您會付出很多,所以我確保在這些項目中展示我絕對的最佳作品。 它不僅必須工作,而且代碼必須清晰易讀,以防潛在的雇主審查我的git存儲庫。
The last capstone project was called MVP, also known as Minimal Viable Product. We basically had 72 hours to create anything we wanted as long as it was a full stack application. The limited time was a challenge and I had to make sure I was able to manage my time efficiently. I couldn’t be over ambitious with my project, but I also wanted it to be something I would be proud of.
最后一個頂點項目稱為MVP,也稱為最小可行產品。 只要是全棧應用程序,我們基本上有72個小時來創建所需的任何東西。 有限的時間是一個挑戰,我必須確保自己能夠有效地管理自己的時間。 我不能對我的項目過分雄心勃勃,但是我也希望它成為我引以為傲的東西。
My first idea was to build a decentralized app that would utilize the Ethereum blockchain. It sounded impressive for employers, but I wasn’t familiar with the Solidity language and wasn’t sure if I would be able to complete the entire dapp in time. Another idea I would joke about was a boba rating app for all the nearby boba shops my classmates and I would visit.
我的第一個想法是構建一個利用以太坊區塊鏈的去中心化應用程序。 對于雇主來說,這聽起來令人印象深刻,但是我對Solidity語言并不熟悉,也不確定我是否能夠及時完成整個dapp。 我會開玩笑的另一個想法是為我的同學和我附近的所有附近的boba商店提供boba評級應用程序。
When it came time to decide, I remembered I picked up coding because it was fun for me. I felt like I would put in 110% into something that I would enjoy, rather than something I would constantly stress about. I ended up choosing the boba rating app and loved every second of it.
是時候決定了,我記得我選擇了編碼,因為這對我來說很有趣。 我覺得我會投入110%投入到自己喜歡的事情中,而不是不斷強調的事情。 我最終選擇了boba評分應用程序,并愛上了它的每一秒鐘。
Once I got the basic functionality down, I would keep implementing additional features to it. It eventually became a passion project and will always be a memorable project that I’m proud of. Don’t do something because it may look impressive to others, do it because you truly enjoy it.
一旦掌握了基本功能,我將繼續為其實施其他功能。 它最終成為一個激情項目,并將永遠是我引以為傲的令人難忘的項目。 不要做某件事,因為它可能會讓他人印象深刻,請這樣做,因為您真正喜歡它。
By the end of the 13th week, my entire mindset changed from when I started my program. I felt more confident as a developer and proud of everything I accomplished. I learned so many new technologies that would have taken me years to learn on my own. I’ve become more autonomous and rely on my own skills to solve problems. I was finally prepared to jump into my job search and couldn’t wait to start.
到第13周結束時,我的整體思維方式從我啟動程序時開始改變。 作為開發人員,我感到更加自信,并對我所取得的一切感到自豪。 我學到了許多新技術,這些技術需要我數年才能自行學習。 我變得更加自主,依靠我自己的技能來解決問題。 我終于準備好進入工作搜索了,迫不及待地想開始。
磨 (The Grind)
Before my program ended, I knew I had to hit the ground running. I had prepared for months and now it was my chance to show employers what I had. I knew the entire MVC and how to build the full stack, but when I had mock interviews, I would get so nervous and completely blank out. At that point, it would be a downward spiral and my entire thought process would derail. How was I going to pass an actual technical interview when I couldn’t even handle mock ones?
在我的程序結束之前,我知道我必須堅持到底。 我已經準備了幾個月,現在是我向雇主展示我所擁有的機會。 我知道整個MVC以及如何構建完整堆棧,但是當我進行模擬面試時,我會變得如此緊張,完全空白。 到那時,這將是一個螺旋式下降,而我的整個思維過程將脫軌。 當我什至無法處理模擬樣例時,我該如何通過實際的技術面試?
I doubled down on studying data structures and algorithms while grinding Leetcode questions. I had to make sure that I wasn’t memorizing specific problems, but understanding the problem solving process to tackle any question. Once I was able to come up with a basic solution to a problem (also known as brute force), I knew interviewers would be looking for an optimal solution. They want to know if you can be efficient with your algorithms with respect to both time and space.
我在研究Leetcode問題的同時加倍研究數據結構和算法。 我必須確保我沒有記住特定的問題,而是了解解決問題的過程以解決任何問題。 一旦我能夠提出問題的基本解決方案(也稱為蠻力),我就知道面試官會尋找最佳解決方案。 他們想知道您是否可以在時間和空間上提高算法的效率。
Once I built a better problem solving foundation, it was time for me to face my fear of interviewing. I heard of the concept of shock therapy, basically facing your fears head-on. Similar to how Batman overcame his fear of bats by surrounding himself in a cave full of them, I had to practice interviewing more.
一旦我建立了一個更好的解決問題的基礎,就該讓我面對面試的恐懼了。 我聽說過電擊療法的概念,基本上是直面面對您的恐懼。 與蝙蝠俠如何將自己包圍在充滿蝙蝠的洞穴中來克服對蝙蝠的恐懼一樣,我不得不練習更多的采訪。
I used a site called Pramp that would pair you with another person and you would take turns interviewing each other. I mustered up the courage and scheduled my first interview. I would talk out my thought process and the solution naturally came to me. I could slowly feel my nervousness fade away and I started to enjoy interviewing.
我使用了一個名為Pramp的網站,該網站可以將您與另一個人配對,并且您會輪流互相采訪。 我鼓起勇氣,安排了我的第一次面試。 我會說出自己的思考過程,然后自然就找到了解決方案。 我逐漸感到自己的緊張情緒消失了,我開始喜歡采訪。
By the end of the mock interview, I asked for feedback and learned what I could improve on. After it was all over, I felt great! Interviewing wasn’t all that scary and you can really benefit from the process. I then practiced every day so I would be prepared for an actual interview.
在模擬面試結束時,我征求了反饋,并了解了可以改進的地方。 一切都結束之后,我感覺很棒! 面試并沒有那么可怕,您可以從該過程中真正受益。 然后,我每天都要練習,以便為實際的面試做好準備。
“Success is not final, failure is not fatal: it is the courage to continue that counts.” — Winston Churchill
“成功不是最終的,失敗不是致命的:重要的是繼續前進的勇氣。” - 溫斯頓·丘吉爾
所有數字游戲 (All a numbers game)
While I was preparing for interviews, I started applying to jobs as well since the application process would take some time, especially for larger companies which could take weeks or months.
在準備面試時,我也開始申請工作,因為申請過程會花費一些時間,尤其是對于大型公司而言,可能要花幾周或幾個月的時間。
I noticed it was a common trend for new developers to solely focus on preparation prior to applying, but that could be a costly mistake. There is always something to study when it comes to software engineering so you can’t prepare for everything. I’ve been asked about all sorts of topics such as data structures and algorithms, system design, frontend design, testing, and domain knowledge. By the time you’ve studied “everything”, it may take months to get your first interview.
我注意到,對于新開發人員而言,在申請之前僅專注于準備工作是一種普遍趨勢,但這可能是代價高昂的錯誤。 在軟件工程方面總要學習一些東西,因此您不能為所有事情做準備。 我被問到各種各樣的話題,例如數據結構和算法,系統設計,前端設計,測試和領域知識。 到您學習“一切”時,可能要花費數月才能進行第一次面試。
One strategy is to interview with companies that you know aren’t your first choice. This way you will be more prepared and know what to do correctly when you do get a chance to interview for your dream companies.
一種策略是采訪您知道不是您首選的公司。 這樣,當您有機會為夢想中的公司進行面試時,您將更加準備就緒,并且知道正確的做法。
I knew attending a Bootcamp was not going to guarantee me a job. I was competing with those with Computer Science degrees and previous industry experience. Being an applicant without a technical degree or relevant work experience, I was going into the job search with a disadvantage.
我知道參加Bootcamp并不能保證我得到一份工作。 我正在與擁有計算機科學學位和先前行業經驗的人競爭。 作為沒有技術學位或相關工作經驗的申請人,我在找工作時處于不利地位。
I applied to any engineer or developer role I came across and reached out to any connections at potential companies I would want to work at. I sent out over 300 cold applications and received an incredibly low response rate. I was being filtered out and received countless automatic rejection emails.
我申請了我遇到的任何工程師或開發人員角色,并與我想工作的潛在公司的任何人接觸。 我發出了300多個冷申請,收到的響應率非常低。 我被過濾掉并收到無數自動拒絕電子郵件。
What I found to be the most effective method of getting in touch with a recruiter was through referrals. Referrals make complete sense from the employer’s standpoint. Why trust a complete stranger that you haven’t met when you have a candidate vouched for by a current employee that you can trust? One thing anyone can do is expand their network by going to meetups and events. LinkedIn is a great tool for finding mutual connections at companies; utilize it to the fullest.
我發現與招聘人員聯系最有效的方法是通過推薦。 從雇主的角度來看,轉介是完全合理的。 當您有一個可以信任的現任員工擔保候選人時,為什么要信任一個您還沒有認識的陌生人呢? 任何人都可以做的一件事就是通過參加聚會和活動來擴大他們的網絡。 LinkedIn是查找公司相互聯系的好工具。 充分利用它。
There will be many obstacles in your first job search. I’ve killed it multiple times in technical screens and received great feedback from the interviewer, only to get a rejection email from the recruiter later on. You just need to be persistent, learn from past interviews, and keep going. If you keep doing everything right, you are bound to eventually find the right opportunity and land an offer.
首次求職中會有很多障礙。 我已經在技術屏幕上將其殺死了多次,并得到了面試官的好評,后來才收到招聘人員的拒絕電子郵件。 您只需要持之以恒,從過去的訪談中學習,然后繼續前進。 如果您繼續做正確的事情,那么您一定會找到合適的機會并提出要約。
誠實的勤奮回報 (Honest hard work pays off)
By the end of my three-month job search, I was invited to five on-site interviews and received three offers. After much thought, I am happy to announce that I will be joining Zume Inc. in the San Francisco Bay Area. I love the mission and everyone I have met. All my hard work and long nights finally paid off and I couldn’t be any happier with where I am in my life right now. I am so thankful for everyone that has supported me on this journey. I know I will be challenged every day and make more of an impact with my work.
在為期三個月的求職結束后,我被邀請參加了五次現場采訪,并收到了三份工作邀請。 經過深思熟慮,我很高興地宣布我將加入舊金山灣區的Zume Inc.。 我熱愛這項使命,也喜歡我遇到的每個人。 我所有的辛勤工作和漫長的夜晚終于得到了回報,現在我對自己的生活再滿意不過了。 我非常感謝在此旅程中支持我的每個人。 我知道我每天都會受到挑戰,并會對我的工作產生更大的影響。
What I love about software engineering is that it doesn’t matter what background you have. Anyone can learn how to code and hone their skills. If you are coming from a non-traditional path like me, it may take a bit more work than the rest, but it will all pay off. Life is too short to settle for less, so do something you love.
我對軟件工程的熱愛是,無論您擁有什么背景都沒有關系。 任何人都可以學習如何編碼和磨練自己的技能。 如果您來自像我這樣的非傳統道路,則可能需要比其他工作多一些的工作,但一切都會有所收獲。 生命太短暫了,無法減少生活,所以做點自己喜歡的事情。
Wishing you the best of luck on your endeavors — Andrew
祝你一切順利—安德魯
Feel free to connect and follow me on LinkedIn as I help inspire those wanting to break into the tech industry: www.linkedin.com/in/andrew-ngo/
請隨時與我聯系,并在LinkedIn上關注我,以幫助激發想進入科技行業的人們: www.linkedin.com/in/andrew-ngo/
翻譯自: https://www.freecodecamp.org/news/how-i-landed-a-software-engineering-job-in-a-year-f7475fce471d/
實習一年算工作一年嗎?