怎么從運營轉到前端開發
On August 18, 2015, I was on a one-way flight headed to Copenhagen from Toronto Pearson Airport. I was starting my two semester exchange at the Copenhagen Business school.
2015年8月18日,我乘坐單程飛機從多倫多皮爾遜機場前往哥本哈根。 我在哥本哈根商學院開始了兩個學期的交流。
I can easily remember the date because it was my brother's birthday. He was forced to spend it at the airport with our family as they sent me off to Denmark, for what they thought would only be 8 months.
我很容易記住日期,因為那是我哥哥的生日。 當他們把我送到丹麥的時候,他被迫與我們的家人一起在機場度過,因為他們以為只有8個月了。
My only familiarity with Copenhagen was from watching the CPH Open on Thrasher Magazine's YouTube channel. Luckily for me, I absolutely fell in love with the city and, after my first semester abroad, I made it my mission to stay here even longer. I was due to start an internship upon returning back to Canada and challenged myself to find one in Copenhagen instead.
我對哥本哈根的唯一了解是在Thrasher Magazine的YouTube頻道上觀看了CPH公開賽 。 對我來說幸運的是,我完全愛上了這座城市,在國外的第一個學期后,我把在這里呆更長的時間作為我的使命。 我本打算回到加拿大后開始實習,并挑戰自己去哥本哈根找人。
在哥本哈根工作 (Working in Copenhagen)
I didn't really have a plan, so I started looking for roles as a sales development representative (SDR). I had just learned about this entry-level role in one of my classes. Since all of my previous experience was in sales and customer service, I thought it would be a good fit.
我確實沒有計劃,所以我開始尋找擔任銷售開發代表(SDR)的職位。 我剛剛在我的一堂課中了解了這種入門級角色。 由于我以前所有的經驗都是銷售和客戶服務,所以我認為這很合適。
I sent out my application to a young startup and within 4 hours, I was on the phone with my soon-to-be sales manager. That was my first taste of how quickly things can move in startup-land! About a month later, I had my first day. This was also the first time I had met professional developers.
我將申請發送給了一家年輕的初創公司,并在4小時內與即將成為銷售經理的我通了電話。 那是我對事物在初創公司中能以多快的速度遷移的第一印象! 大約一個月后,我度過了第一天。 這也是我第一次見到專業開發人員。
I've always had a deep interest in technology, although the closest I'd been to software development at that point was in my Visual Basic class in high school!
我一直對技術有著濃厚的興趣,盡管那時我最接近軟件開發的是我在高中的Visual Basic課!
Starting my new job was the first time I got to work directly alongside developers. It was thrilling to hear about their work. There were always so many buzz words and technologies they spoke about – React, Ember, Scala, Python, TypeScript, boilerplate-code, compliers, rendering. It was intimidating to think you had to know about so much to develop software.
開始我的新工作是我第一次直接與開發人員一起工作。 得知他們的工作真令人激動。 他們總是談論很多時髦的詞和技術– React,Ember,Scala,Python,TypeScript,樣板代碼,編譯器,渲染。 認為您必須了解太多有關開發軟件的知識,這真是令人恐懼。
I spent the next year and a half continuing to progress in my sales career, eventually being promoted to account executive. I felt like I had greatly developed my communication, time-management, and presentational skills.
我花了一年半的時間繼續發展自己的銷售事業,最終被提升為客戶經理。 我覺得自己在交流,時間管理和表達能力方面有了很大的發展。
發現freeCodeCamp (Discovering freeCodeCamp)
Although I was successful in my current role as an account executive, I wasn't sure if a future in sales was exactly what I wanted. It was also limiting to my future job prospects if I wanted to continue to remain in Denmark – it's not easy find a good job selling in English in a country where the first language is Danish!
盡管我現在擔任客戶經理一職很成功,但是我不確定銷售的未來是否正是我想要的。 如果我想繼續留在丹麥,這也限制了我未來的工作前景–在以丹麥語為第一語言的國家,找到一份以英語銷售的好工作并不容易!
I found myself reading more, searching for a new hobby or challenge. That's when I found the freeCodeCamp blog (it was still on Medium at that time). It actually took me a few days before I realized freeCodeCamp wasn't just a blog, it was an entire platform available to learn how to code online, for free! As if the name didn't speak for itself...
我發現自己,正在尋找新的愛好或挑戰。 那時我找到了freeCodeCamp博客(當時該博客仍在Medium上)。 實際上,花了我幾天時間,我才意識到freeCodeCamp不只是一個博客,而是一個可免費學習在線編碼的完整平臺! 好像這個名字并不能說明一切...
It only took completing a few HTML challenges before I was absolutely hooked. It was then that I decided I would spend all my free time working through the freeCodeCamp curriculum, with the goal of one day in the long-distant future maybe becoming a developer. I loved the idea of being able to speak to my colleagues about React, however far-away that felt.
在完全迷上我之前,只需要完成一些HTML挑戰即可。 那時,我決定將所有的空閑時間都花在freeCodeCamp課程上,目標是在很長的將來有一天成為一名開發人員。 我喜歡能夠與同事談論React的想法,無論感覺如何。
掙扎于基礎 (Struggling with the Basics)
I was feeling fairly confident in how quickly I was learning HTML and CSS until I actually attempted to complete one of the projects. Create a simple portfolio? This should be easy!
在真正嘗試完成其中一個項目之前,我對自己學習HTML和CSS的速度非常自信。 創建簡單的投資組合? 這應該很容易!
But it was overwhelming how lost I suddenly felt in an editor outside of freeCodeCamp. Attempting to start a project from scratch seemed impossible and it was frightening how quickly it felt like I forgot everything. Becoming a real developer suddenly felt like an impossibility.
但這令人不知所措,我在freeCodeCamp之外的編輯器中突然感到迷茫。 嘗試從頭開始一個項目似乎是不可能的,這讓我感到忘卻一切的速度令人震驚。 成為一名真正的開發人員突然感覺不可能。
Finally asking for help was the best thing I did for myself. After stewing in my frustration for far too long, I reached out to a colleague who patiently guided me through using VS Code, structuring my HTML document, and linking it to a CSS file. After finally cobbling together a portfolio, I checked the box as done, even though I felt my work was terrible compared to others attempting this same challenge.
最終尋求幫助是我為自己做的最好的事情。 經過一段長時間的挫折之后,我聯系了一位同事,他耐心地指導我使用VS Code,構造我HTML文檔并將其鏈接到CSS文件。 最終湊齊一份投資組合后,我把盒子打完了,盡管與其他嘗試同樣挑戰的人相比,我覺得自己的工作糟透了。
I eventually made my way into the JavaScript curriculum, which I had been impatiently waiting to start after about a month and half of struggling through HTML and CSS.
我最終進入了JavaScript課程,在經歷了大約一個半月HTML和CSS苦苦掙扎之后,我一直不耐煩地等待著開始學習。
學習JavaScript (Learning JavaScript)
It started out easy enough, although it wasn't before long that I found myself lost and frustrated again. After completing all of the JavaScript modules, I felt I was lacking the confidence and tenacity to attempt the more difficult JavaScript projects. Instead, I took the easy way out and started through the Codecademy JavaScript curriculum.
它開始很容易,盡管不久之后我發現自己迷失了自己,又一次感到沮喪。 在完成所有JavaScript模塊之后,我感到我缺乏嘗試更困難JavaScript項目的信心和毅力。 相反,我采取了簡單的方法,并開始了Codecademy JavaScript課程。
It was certainly helpful in solidifying the basics for me – after all, repetition is key. However, the biggest mistake I made in my learning journey was not going back to attempt those challenges.
這對于鞏固我的基礎肯定是有幫助的-畢竟,重復是關鍵。 但是,我在學習過程中犯的最大錯誤不是回頭嘗試這些挑戰。
After working through all of the Codecademy modules, I started yet another JavaScript course, this time purchasing "The JavaScript Bootcamp" through Udemy. As this was my third time working through the fundamentals, I left that course with more stable footing and more confidence in my ability to work with JavaScript.
在完成所有Codecademy模塊的學習后,我又開設了另一門JavaScript課程,這次是通過Udemy購買“ JavaScript Bootcamp”。 因為這是我第三次研究基礎知識,所以我以更穩定的基礎并且對使用JavaScript的能力更有信心離開了那門課程。
從Pleo開始 (Starting at Pleo)
From there, I jumped straight into another course, this time on Node directly followed up with a course on React.
從那里,我直接跳到另一門課程,這次是在Node上,然后是React的一門課程。
Somewhere between the Node and React courses, I had started a new job as an account manager at what I still deem to be Denmark's coolest startup. It was and is incredibly exciting to be a part of a company growing so fast. It was even more exciting to meet so many new and talented developers to learn from.
在Node和React課程之間的某個地方,我以一名客戶經理的身份開始了新工作,至今仍被認為是丹麥最酷的創業公司 。 成為如此快速發展的公司的一部分曾經是,而且令人非常興奮。 結識這么多新的有才華的開發人員以供學習,真是令人興奮。
About three months into my new job, my manager and I were discussing how my role could develop in the future. I was honest with her and said I wasn't interested in any further responsibility. I wanted to spend any and all excess capacity teaching myself to code, with the hopes of one day becoming a developer.
在我的新工作大約三個月后,我的經理和我正在討論我的角色將來如何發展。 我對她很誠實,說我對任何進一步的責任都不感興趣。 我想花費所有多余的能力自學代碼,以期有一天成為一名開發人員。
This is not something you want to hear from a relatively new sales rep on your team. But to my surprise, she was incredibly supportive and made a commitment to help me any way she could, as long as I hit my targets.
您不想從團隊中相對較新的銷售代表那里聽到這些信息。 但是令我驚訝的是,只要我實現了目標,她便會給予極大的支持,并承諾盡一切可能幫助我。
嘗試編碼挑戰 (Attempting the Coding Challenge)
After speaking with one of our engineering directors, it was clear that for us to continue a conversation around what a transition from sales to product would look like, I would need to complete our frontend hiring challenge, like an outside candidate would.
與我們的一位工程總監交談后,很明顯,要讓我們繼續圍繞從銷售到產品的過渡過程進行對話,我需要像外部候選人那樣完成前端招聘的挑戰。
The thought of attempting this was both incredibly intimidating and motivating. This is when I started staying late in the office every night. I didn't want to waste time biking home, so the second the clock hit 17:00, I would scurry to find some dinner, returning to my desk as soon as possible, to start my day pretending to be a developer.
嘗試這樣做的想法既令人難以置信,又令人振奮。 這是我每天晚上開始在辦公室呆到很晚的時候。 我不想浪費時間騎車回家,所以在第二個時鐘17:00到達時,我會急忙找些晚餐,盡快回到我的辦公桌上,開始假裝自己成為開發人員。
I had finally finished my React course just before the Christmas holiday and was working on a few side-projects, although I never really followed through with any of them. I knew I needed to start applying my knowledge but found it difficult to complete a project without a real end goal.
我終于在圣誕節假期之前完成了我的React課程,并且正在做一些副項目,盡管我從來沒有真正完成任何一個。 我知道我需要開始運用我的知識,但是發現沒有真正的最終目標很難完成一個項目。
With some extra time on my hands over the holiday period, I began to look through the frontend challenge again. I still felt far from capable to produce a worthy submission, however, I felt it gave me some sort of end goal to work towards so I could actually finish something.
在假期期間,我花了一些額外的時間,我開始重新審視前端挑戰。 我仍然覺得自己無法提出有價值的意見,但是,我認為這給了我一些最終的目標,以便我可以完成一些工作。
Luckily for me, our frontend challenge was very similar to the final project of the React course, so I could reuse much of the boilerplate and components for my submission. I definitely felt like I was cheating.
幸運的是,我們的前端挑戰與React課程的最終項目非常相似,因此我可以重用許多樣板和組件進行提交。 我絕對覺得自己在作弊。
But I sent through my project anyway and eagerly await feedback. Having my code reviewed by two of our senior engineers was incredibly scary and I was prepared for some harsh feedback.
但是無論如何, 我還是通過項目發送并急切地等待反饋。 我們的兩位高級工程師審核了我的代碼,這簡直令人恐懼,我已經準備好征求一些苛刻的反饋。
After a couple weeks, my grade was in, and my submission wasn't a total failure! I had received some really great, actionable points of criticism. One of my colleagues even spent an hour with me after work, talking me through each line of feedback. Our code review session went so well, we decided to meet again, week after week, until well after I transitioned into becoming a developer.
幾周后,我的成績就達到了,我的提交并不是完全失敗! 我收到了一些非常好的,可行的批評意見。 我的一位同事下班后甚至和我一起度過了一個小時,在每條反饋中與我交談。 我們的代碼審查會議進行得非常順利,我們決定一周又一周再開會,直到我過渡為開發人員為止。
我的第一個公關 (My First PR)
My sales manager and the director of engineering continued to check in on my progress throughout the coming months. In April, the opportunity was presented that I could possibly work on the side with our internal tools team. There were many small, non-urgent tickets that needed attention in our back-office system.
在接下來的幾個月中,我的銷售經理和工程總監繼續檢查我的進度。 在四月份,我有機會與我們的內部工具團隊一起工作。 我們的后臺系統中有許多需要注意的小型非緊急票證。
I was excited – it would be a great way for me to get some real experience in working with the product team and it was made very clear this wasn't to interfere with my work in sales. That thought of working with real, production code was INSANE!
我很激動–這對我來說是獲得與產品團隊合作的真實經驗的好方法,而且很清楚,這不會干擾我的銷售工作。 使用真實的生產代碼的想法是INSANE!
After a bit of coordination, an introduction to the team, and an invite to our company Github org, I was given my first ticket to work on.
經過一番協調,對團隊的介紹以及對我們公司Github org的邀請,我得到了我的第一張工作票。
I was to add an input to make a field editable for our compliance team. It was immediately clear I had no idea how to do this. Sure, I've added an input before and I knew vaguely how forms worked in React but this code felt like nothing I'd seen in any of my tutorials.
我要添加輸入以使我們的合規團隊可以修改該字段。 顯然我不知道該怎么做。 當然,我之前已經添加了輸入,并且我模糊地知道了表單在React中是如何工作的,但是這段代碼感覺像我在任何教程中都看不到。
I was suddenly left with an ocean of questions. How does TypeScript work? What is a branch? How do I make a PR? What do all of these libraries do? How does my code even get built and sent to our users? What happens if I break something important?
我突然被無數問題困擾。 TypeScript如何工作? 什么是分支? 我如何進行公關? 所有這些庫都做什么? 我的代碼甚至如何構建并發送給我們的用戶? 如果我破壞了重要的東西會怎樣?
It took me a couple days to get my bearings, but after much patience and help from the engineering lead, I managed to get two approvals and ship code to production. That was a huge milestone in my journey.
我花了幾天的時間來獲得軸承,但是在工程主管的耐心和幫助下,我設法獲得了兩次批準,并將代碼交付生產。 那是我旅途中的一個巨大里程碑。
進行切換 (Making the Switch)
Over the next five months, I continued my routine of staying in the office late, working 09:00-17:00 in sales and 17:00 until whenever pretending to be a developer working with what I considered to be real code.
在接下來的五個月中,我繼續按照慣例在辦公室呆到很晚,分別在09:00-17:00和17:00從事銷售工作,直到假裝自己成為真正的代碼開發人員為止。
As you could expect, my desire to continue in sales dwindled every day and I started pressing to see if we could agree on a date for me to officially switch.
如您所料,每天繼續銷售的愿望減少了,我開始敦促我們是否可以商定正式換班的日期。
It certainly didn't go smoothly. No one had experience in what it means to move someone from sales to our product team. First and foremost, I had to be on target. I think that's true with most sales organisations – everything always comes back to making your quota.
當然,進展并不順利。 沒有人曾經歷過將某人從銷售移交給我們的產品團隊的含義。 首先,我必須達到目標。 我認為大多數銷售組織都是如此-一切總是歸根結底。
After much back and forth, an agreement was made that I could officially make the switch August 1st, contingent that I remain on target. This was the light at the end of the tunnel for me. It was absolutely baffling to think I would soon be presented with an employment contract for my new role as a software engineer. The weeks leading up flew by. By 17:00, Wednesday, July 31, I was no longer an account manager.
經過多次往返之后,達成了一項協議,我可以在8月1日正式切換,視我保持目標而定。 對我來說,這是隧道盡頭的光。 認為我很快會因擔任軟件工程師的新職位而獲得一份雇用合同,實在令人感到困惑。 接下來的幾周過去了。 到7月31日星期三17:00為止,我不再是客戶經理。
There was definitely a transition period in getting used to my new role. It felt like being a stock broker working on the trading room floor to suddenly becoming a librarian.
適應我的新職位肯定有一個過渡期。 感覺就像是在交易大廳工作的股票經紀人,突然變成了圖書管理員。
Noise aside, there hasn't been a single day where I haven't been excited about coming into work. I've continued working in our internal tools team, building out our compliance and customer support back-office.
除了噪音,沒有一天我沒有對上班感到興奮。 我繼續在內部工具團隊中工作,建立了合規性和客戶支持后臺。
我學到的是 (What I learned)
The experience I gained in sales is incredibly advantageous in my work today. Strong communication, time-management, and presentational skills have been invaluable as a dev. But I have found these to be lacking in most dev communities I've observed.
我在銷售中獲得的經驗對我今天的工作非常有利。 強大的溝通能力,時間管理能力和表達能力對于開發人員而言非常寶貴。 但是我發現在我觀察到的大多數開發者社區中都缺少這些。
I realize I'm incredibly lucky to have been presented an opportunity to work with production code so early on. It was without a doubt a huge leap forward in my learning and massively helped in expediting my understanding of the realities of working as a dev that is impossible to gain from online tutorials.
我意識到我很幸運能這么早就被提供使用生產代碼的機會。 毫無疑問,這是我學習的一個巨大飛躍,并且極大地幫助了我加深了對作為開發人員工作的現實的理解,而這是無法從在線教程中獲得的。
Having a mentor to work with hugely accelerated my learning and was extremely helpful in keeping me accountable for always having a project on the go, so we always had something to work with. Without all of the support around me, I think I would still be spending all of my nights and weekends working through tutorials or building random Pokemon generators.
有一位指導者與我一起工作極大地加快了我的學習速度,并且對使我始終對正在進行的項目負有責任,這非常有幫助,因此我們總是可以合作。 如果沒有我的所有支持,我想我仍然會花整個晚上和周末來研究教程或構建隨機的Pokemon生成器 。
I made a commitment early on to spend all of my free time continuing with my development. I think it's very easy to underestimate how large of a time commitment this journey is. Access to a mentor is a huge help, although even someone with enough knowledge to occasionally answer questions can save you hours of frustration. Don't be afraid to ask for help.
我很早就做出了承諾,將所有空閑時間都花在繼續發展上。 我認為很容易低估此旅程所花費的時間。 接觸導師是一個巨大的幫助,盡管即使是具有足夠知識的人也可以偶爾回答問題,也可以節省您數小時的挫敗感。 不要害怕尋求幫助。
Looking retrospectively, I wish I would have spent more time building small projects and applying the things I learned. I frequently started projects but never followed through because I felt like I couldn't code something the correct way.
回顧過去,我希望我會花更多的時間來建立小型項目并運用我學到的東西。 我經常啟動項目,但從未進行過,因為我覺得自己無法以正確的方式編寫代碼。
Spending time struggling through something has been way more helpful for my learning. There is certainly safety to staying on the rails of an interactive coding course but it can put a ceiling on your ability to apply your knowledge in the real world. I definitely fell into that trap.
花時間在某些事情上掙扎對我的學習更有幫助。 停留在交互式編碼課程上當然是安全的,但它可能會限制您在現實世界中應用知識的能力。 我肯定陷入了陷阱。
It took me a while before a realized no one knows what the right way is, it's all made up. As a novice developer, there is value in a fresh perspective.
我花了一段時間才意識到,沒有人知道正確的方法,這一切都構成了。 作為新手開發人員,您將獲得全新的價值。
If there was one piece of advice I wish I had earlier on, it would have been to make a greater attempt to apply my knowledge as I learned. There is no such thing as real code or the correct way to do things, especially when you're learning. Any chance you have to apply your learnings along the way is valuable.
如果我希望早些時候有一條建議,那將是我學到的知識做出更大的嘗試。 沒有真正的代碼或正確的處理方式,尤其是在學習時。 您必須在此過程中運用所學知識的任何機會都是寶貴的。
You're not a developer once someone pays you to be a developer, you're a developer the second you start coding.
一旦有人付錢給您成為開發人員,您就不是開發人員,而您開始編寫代碼的那一刻,您就是開發人員。
Don't be a stranger! Feel free to write if you have any questions, email me your favourite book recommendations, connect with me on Linkedin or follow me on twitter!
不要成為陌生人! 如有任何疑問,請隨時寫信, 給我發送您最喜歡的書推薦 給我,在Linkedin上與我聯系,或在Twitter 上 關注我 !
翻譯自: https://www.freecodecamp.org/news/how-i-went-from-sales-to-frontend-developer-in-16-months/
怎么從運營轉到前端開發