电子工程师自学成才pdf_作为一名自学成才的软件工程师,我在第一个月的工作中所学到的知识
電子工程師自學成才pdf
In this post, I will share my experiences and give advice now that I am six months into my first job as a self-taught software engineer.
在這篇文章中,我將成為一名自學成才的軟件工程師,距離我的第一份工作已經六個月了,我將分享我的經驗并提供建議。
Note that this post will not be focused on how to get a software engineering job. Check out my previous post, How I went from Newbie to Software Engineer in 9 months for more information on that.
請注意,本文將不集中于如何獲得軟件工程工作。 查看我以前的文章“我如何在9個月內從新手轉到軟件工程師”,以獲取有關此信息的更多信息。
Note also that this is just one data point regarding my experiences with one company!
另請注意,這只是關于我在一家公司的經歷的一個數據點!
I remember when I was looking for a job and was absorbing a ton of reading materials regarding the tech industry, learning programming, and success stories, my main focus was finding out how to get a job. But I was always a little curious what it was like once you actually got the job. The purpose of this post is to try to answer some of those questions.
我記得當我在找工作并吸收了大量有關技術行業,學習編程和成功案例的閱讀材料時,我的主要重點是找到如何找到工作。 但是,我總是很好奇,一旦你真正找到工作,那會是什么樣子。 這篇文章的目的是試圖回答其中的一些問題。
What was the first day, first week, first month like? Are there skills to learn that might not help for the interview but would help once you started working? Even if I get a job, how would I know that I’ll be able to do it and do it well?第一天,第一周,第一個月是什么樣的? 是否有一些學習技巧可能對面試沒有幫助,但是一旦您開始工作就會有所幫助? 即使我找到一份工作,我怎么會知道自己能夠做得很好呢?背景 (Background)
I work as a software engineer at a company called Human API in San Mateo, CA. It is a healthcare tech startup with ~35 employees that focuses mainly on the user-centered exchange of healthcare data. I was hired as a software engineer focusing on the front end, using technologies such as React, Redux, and Sass.
我在加利福尼亞州圣馬特奧的一家名為Human API的公司擔任軟件工程師。 這是一家擁有約35名員工的醫療技術初創公司,主要專注于以用戶為中心的醫療數據交換。 我被聘為使用前端,React,Redux和Sass等技術的前端軟件工程師。
第一天 (First Day)
The first day was pretty surreal. I had dreamed about working as a software engineer for a while, and it kind of still felt like a dream on the first day. There was an ice breaker treasure hunt for me to do that involved talking with everyone in the office.
第一天真是超現實。 我曾夢想過擔任軟件工程師一段時間,但第一天仍然感覺像是在做夢。 我需要進行一次破冰船尋寶活動,其中涉及與辦公室中的每個人交談。
I was given a “New Hire Success Plan” that included things such as:
我獲得了“新員工成功計劃”,其中包括以下內容:
- First day - get laptop configured, go to welcome lunch 第一天-配置筆記本電腦,歡迎午餐
- Week 1 - be able to draw diagrams of how the products work, get familiar with agile, complete onboarding 第一周-能夠繪制產品工作原理圖,熟悉敏捷性,完成入門
- Week 2 - build something using our public API, fix a bug, add an enhancement 第2周-使用我們的公共API進行構建,修復錯誤,添加增強功能
- Month 1 - start taking ownership over my part of the product 第1個月-開始擁有我對產品的所有權
- Quarter 1 - take ownership over my part of the product 第一季度-擁有我對產品的所有權
But mostly, as you might expect, the first day involved getting my laptop set up with the proper environment.
但是,正如您可能期望的那樣,大多數情況下,第一天涉及為我的筆記本電腦設置適當的環境。
第一周 (First Week)
The first week was mostly more of the same. Still getting all of my accounts set up correctly, finishing reading through onboarding documents, etc.
第一周大體相同。 仍然正確設置我的所有帳戶,完成閱讀入職文檔等。
It felt so weird coding during the day on a weekday! I was also still getting used to the typical Bay Area startup perks. My tech lead kept calling me the “React expert” because I was hired as the main frontend person on that particular team. I’m not sure if that’s what he thought I was or if he was just trying to set the bar high. In any case, I tried to roll with it.
在一個工作日的白天感覺很奇怪! 我也仍然習慣于典型的灣區創業項目。 我的技術主管一直稱我為“React專家”,因為我被聘為該特定團隊的主要前端人員。 我不確定這是否就是他的想法,還是他只是想將標準設置得很高。 無論如何,我都嘗試使用它。
I was also learning about the agile process. We had daily 15 min “stand up” meetings where everyone would stand and talk about what they were working on, and if their work was “blocked” by anyone.
我也在學習敏捷過程。 我們每天有15分鐘的“站起來”會議,每個人都可以站起來談論他們在做什么,以及他們的工作是否被任何人“阻止”。
That was something I was semi-worried about when I was applying to jobs:
當我申請工作時,我對此感到半擔心:
Is it bad if I don’t know agile, scrum, velocity, product increment, sprint, retro…?如果我不知道敏捷,混亂,速度,產品增量,沖刺,復古……會很糟糕嗎?In my opinion, you don’t need to know what any of those things mean before you start your job. It might help in an interview because the interviewer might subconsciously think you are more credible if you do, but in reality, you could learn it in less than a day on the job.
我認為,在開始工作之前,您不需要了解任何這些含義。 這可能對面試有所幫助,因為面試官可能會下意識地認為這樣做會更可信,但實際上,您可以在工作中不到一天的時間里學到它。
第一個月 (First Month)
By this point I was doing some real development and actually contributing to the team. I was learning how to work with the designer, product management, and other software engineers. I started working from home on occasion which was awesome. I found that working from home occasionally made me way more productive in general. No one seemed to care when you came into the office or when you left which was a stark difference from my previous company. I also had WAY fewer meetings than I did in my previous job.
至此,我正在做一些實際的開發,并為團隊做出了實際貢獻。 我正在學習如何與設計師,產品管理和其他軟件工程師一起工作。 有時候,我從家里開始工作。 我發現在家工作有時會使我的工作效率提高。 當您進入辦公室或離開時,似乎沒人在乎,這與我以前的公司有明顯的不同。 與以前的工作相比,我的會議要少得多。
I hadn’t used Sass before, so I watched some videos and read some docs. It’s pretty similar to CSS, so that wasn’t a big deal. The project I was working on was fairly new, so there wasn’t a strict, standardized git workflow. Honestly, at that stage of the product, it was surprisingly similar to the way I would develop my portfolio projects. There was another thing I was semi-worried about…
我以前沒有使用過Sass,所以我看了一些視頻并閱讀了一些文檔。 它與CSS非常相似,因此沒什么大不了的。 我正在從事的項目是一個相當新的項目,因此沒有嚴格的標準化git工作流程。 老實說,在產品的那個階段,它出奇地類似于我開發投資組合項目的方式。 我還有半件事擔心……
Do I know git enough? What if there is some complicated git workflow, and I mess everything up?我足夠了解git嗎? 如果有一些復雜的git工作流程,而我搞砸了怎么辦?I do think it is valuable to get some experience using git on a team. Join a local meetup and make a project, go to a hackathon, contribute to open source. Get familiar with pull, push, merge, rebase. Go through the pain of dealing with merge conflicts. Do some reading on best practices for git workflows.
我確實認為在團隊中使用git的經驗很有價值。 加入當地的聚會,進行項目,參加黑客馬拉松,為開源做貢獻。 熟悉拉,推,合并,變基。 經歷處理合并沖突的痛苦。 閱讀有關git工作流程的最佳做法的一些信息。
You could learn on the job, but you’ll be far more effective if you come in having experience with common git workflows.
您可以在工作中學習,但是如果您有使用常見git工作流程的經驗,將會更加有效。
Another thing I ran into a lot during the first month was trying to find out what I should do when I got stuck. Should I ask someone or struggle through it?
在第一個月中,我遇到了很多事情,就是試圖找出被卡住時應該怎么做。 我應該問一個人還是奮斗呢?
One of the things I was really looking forward to about getting paid to code was having other people around who are smarter and know more than I do, so that I could get help when I was stuck.
我真正希望獲得代碼報酬的一件事是讓其他人變得更聰明,比我了解更多,以便在遇到困難時能得到幫助。
When you are learning on your own, you don’t have that luxury, and you have to decide whether you should keep banging your head against the wall in front of you or look for a new wall to bang your head against.
當您自己學習時,您沒有那么奢侈,您必須決定是否應該繼續將頭撞在面前的墻壁上,還是要尋找新的墻壁來撞在頭上。
And then I realized…teaching myself how to code gave me a valuable skill. It is a skill to know how long to bang your head against the wall before moving on, finding a workaround or asking someone else. If you always had a room of mentors around to help you with every problem, you would never be forced to go through the painful struggle of deciding what to do next when you are stuck.
然后,我意識到……學習如何編碼給了我寶貴的技能。 在繼續前進,找到解決方法或詢問其他人之前,先知道將頭撞在墻上多長時間是一種技巧。 如果您周圍總是有很多輔導員可以幫助您解決所有問題,那么您將永遠不會被迫經歷痛苦的??掙扎,即在遇到困難時決定下一步該怎么做。
Your mindset should NOT be…
您的心態不應該是……
Wow, look at this! I have a room of software engineers who can help me!哇,看看這個! 我有一間可以幫助我的軟件工程師!or this…
或這個…
It should be more like…
應該更像是……
I am going to make an active effort to figure this out on my own, and if I need to ask for help, I will tell that person what I tried to do that didn’t work.我將做出自己的積極努力,如果需要幫助,我會告訴該人我試圖做的事沒有用。第六個月 (6th Month)
By now I have become comfortable with the code, my team, and the company in general. We have had a company picnic, an event at a brewery after a product release, a game night where everyone brought their favorite video games to play, we had the world cup playing at the office, and many more social events. There have been multiple stressful product increment demos as well.
到目前為止,我已經對代碼,我的團隊以及整個公司都感到滿意了。 我們進行了公司野餐,產品發布后在啤酒廠舉行的活動,游戲之夜,每個人都帶來了自己喜歡的視頻游戲,我們在辦公室里玩了世界杯,還有許多社交活動。 也有多個壓力大的產品增量演示。
I have learned from a lot of smart people, tried to be vocal within the company, sharing my opinions about how I think we should do certain things. I have been on the other side of technical interviews, been involved with multiple product releases. I also started to get more involved with the backend as that is ultimately what I enjoy the most.
我從很多聰明的人那里學到了東西,試圖在公司內部發聲,分享我對我認為我們應該如何做某些事情的看法。 我曾在技術面試的另一端,參與過多個產品發布。 我也開始更多地參與后端,因為這最終是我最喜歡的。
Estimating how long it takes to add features/fix bugs is extremely difficult and it feels like I’m not getting better at it.
估計添加功能/修復錯誤需要花費多長時間,這非常困難,而且感覺好像我并沒有對此有所改善。
I think the most difficult and challenging (yet also fun and rewarding) part of the job is design and architecture. When there is a feature to add, there are a number of ways to do it that instantly pop into my head, but figuring out the best way to do it given the time constraints is very difficult.
我認為工作中最困難和最具挑戰性的部分(也是樂趣和收獲)是設計和建筑。 當有一個功能要添加時,有很多方法可以立即添加到我的腦海中,但是在有時間限制的情況下,找出最好的方法是非常困難的。
Sometimes certain feature additions require many discussions with many people and other times you just have to make a decision yourself even if you can’t think of a good solution because it isn’t worth the time. Then you look at your code 3 months later like:
有時,某些功能的添加需要與許多人進行多次討論,而有時您甚至必須自己做一個決定,即使您因為時間不足而無法想到一個好的解決方案。 然后,三個月后,您將看到自己的代碼,如下所示:
常問問題 (FAQ)
In this section, I’ve included frequently asked questions that new starters may have.
在本節中,我包含了新手可能會遇到的常見問題。
I have been putting all this effort into learning how to program…How will I know that I will like working as a software engineer?我一直在努力學習如何編程……我如何知道自己想成為一名軟件工程師?If you like learning to code, then I think you will like working as a software engineer. That doesn’t mean that all software engineering jobs are great, or that you will love them all. Even if you get a great software engineering job, that doesn’t mean that you will always love every aspect of it.
如果您喜歡學習編碼,那么我想您會喜歡擔任軟件工程師。 這并不意味著所有軟件工程工作都很棒,或者您會喜歡它們全部。 即使您從事出色的軟件工程工作,這也不意味著您將永遠喜歡它的每個方面。
But if you like building new things, refactoring ugly code, finally fixing a bug that has been bugging you for awhile, you should be good. If you enjoy the struggle of learning to code, then I think software engineering is for you.
但是,如果您喜歡構建新事物,重構丑陋的代碼,最終修復已經困擾您一段時間的錯誤,那么您應該很好。 如果您喜歡學習編碼的過程,那么我認為軟件工程適合您。
Even if I get a job, how can I know that I’ll be able to do it and do it well?即使我找到一份工作,我怎么能知道自己能夠做得很好呢?For some reason, I always thought that there was this massive difference between someone who was getting paid to code and me (someone who was not getting paid to code). So naturally, this question popped into my head a lot.
出于某種原因,我一直認為在獲得代碼報酬的人與我(沒有獲得代碼報酬的人)之間存在巨大差異。 因此,這個問題自然而然地浮現在我的腦海。
I agree with the cliche advice, “If they hired you, then you are ready to do the job”. I am a firm believer in taking things one step at a time. If you don’t have a job, focus on how to get a job. Once you get a job, then you can focus on doing what you need to do to succeed at that job.
我同意陳詞濫調的建議,“如果他們雇用了您,那么您就準備好了。” 我堅信一次邁出一步。 如果您沒有工作,請著重于如何找到工作。 一旦找到一份工作,您就可以專注于完成該工作所需要做的事情。
If you are simultaneously worried about getting a job AND your hypothetical performance at the hypothetical job, then you will be adding unnecessary stress and worry to your life.
如果您同時擔心獲得一份工作以及您在假設的工作中的假設表現,那么您將給生活增加不必要的壓力和擔憂。
Are there skills to learn that might not help for the interview but would help once you started working?是否有一些學習技巧可能對面試沒有幫助,但是一旦您開始工作就會有所幫助?I will reiterate and say that my main answer to this question is not to worry about your hypothetical job until it is no longer hypothetical.
我要重申并說,我對這個問題的主要回答是不要再為假設的工作擔心,除非它不再是假設的。
However, if you won’t take no for an answer, then I would recommend what I mentioned earlier. Try to work on a project with a team and choose a best practice git workflow.
但是,如果您不會拒絕,那么我建議您前面提到的內容。 嘗試與團隊一起進行項目,然后選擇最佳實踐git工作流程。
I’m sure you can find plenty of articles about it if you google “common git workflows”. I don’t have a whole lot of additional advice here other than basic soft skill stuff. Try to get along with your team and everyone in the company from day 1.
如果您使用Google的“常用git工作流程”,我敢肯定您會找到很多關于它的文章。 除了基本的軟技能知識外,我這里沒有很多其他建議。 從第一天開始,嘗試與您的團隊和公司中的每個人融洽相處。
What is the main difference between building a project on your own and working on a team at a startup?自行構建項目與在啟動團隊工作之間的主要區別是什么?It really depends on how mature the product is that you are working on. Most of the differences come with working on a big product that will be used by a lot of people. Here are a few things that you may have not thought about when building your side projects versus working on a production level app in a startup:
這實際上取決于您正在開發的產品的成熟程度。 大多數差異來自開發將被許多人使用的大型產品。 在構建輔助項目與在初創公司中使用生產級應用程序時,您可能沒有想到以下幾點:
Security - Certainly this isn’t something you have to worry about with your own side projects if you don’t want to. When you are working on a product that is used by many people, web security is extremely important. I wrote an intro to web security that explains web security basics such as CSP, HTTPS, CORS, etc.
安全性-當然,如果您不想這樣做,則不必為自己的輔助項目擔心。 當您使用被許多人使用的產品時,網絡安全至關重要。 我寫了一篇有關Web安全的介紹,其中介紹了Web安全基礎知識,例如CSP,HTTPS,CORS等。
Browser compatibility - You might have to support versions of IE which means you might not be able to use all the fancy latest CSS and might run into some JS problems. With this, comes cross-browser testing which is its own beast.
瀏覽器兼容性 -您可能必須支持IE版本,這意味著您可能無法使用所有最新CSS,并且可能會遇到一些JS問題。 隨之而來的是跨瀏覽器測試,這是它自己的野獸。
Analytics - You might use something like Google Analytics or Mixpanel to get an understanding of conversion and product usage.
分析 -您可以使用Google Analytics(分析)或Mixpanel之類的工具來了解轉化和產品使用情況。
Testing - You certainly don’t have to deal with writing tests in your own projects if you don’t want to. However, testing is essential to writing good code. When learning to code, the longer you wait to start writing tests, the harder it is to make it a habit.
測試 -如果您不想這樣做,您當然不必在自己的項目中編寫測試。 但是,測試對于編寫好的代碼至關重要。 在學習編碼時,等待開始編寫測試的時間越長,養成習慣的難度就越大。
Blockers - You might rely on someone to build something before you can build your feature. So you might have to think about ways to work around this. If you are a frontend engineer and the API isn’t quite ready yet, you might have to make a mock API so that you aren’t blocked from working on the UI.
阻止程序 -您可能需要依靠某人來構建某些東西,然后才能構建您的功能。 因此,您可能必須考慮解決此問題的方法。 如果您是前端工程師,但API尚未準備就緒,則可能必須制作一個模擬API,以免您無法使用UI。
Maintainability - Certainly you want to write good code for your side projects, but the stakes aren’t too high. You probably won’t be maintaining it in a year from now, so who cares if it has no comments and is in one massive file right? When you are on a team, you want a low barrier to contribution. That is, when a new person joins, you want them to be able to read the docs, see the code, and be able to start contributing quickly. If the code is difficult to understand and read, then it will not only take longer for someone to make contributions, but it will also be harder to add features without adding a considerable amount of tech debt.
可維護性 -當然,您希望為輔助項目編寫良好的代碼,但是風險并不高。 您可能一年后就不會對其進行維護,那么誰在乎它是否沒有評論并且保存在一個大文件中呢? 在團隊中時,您希望自己的貢獻障礙很小。 也就是說,當一個新人加入時,您希望他們能夠閱讀文檔,查看代碼并能夠快速開始貢獻。 如果該代碼難以理解和閱讀,那么不僅有人會花費更長的時間做出貢獻,而且在不增加大量技術債務的情況下添加功能也將變得更加困難。
結束通知 (Closing Advice)
As I have said multiple times, I don’t think knowing all of this stuff is important before you get a software engineering job. I do think there is value in knowing about it, whether that is because you don’t know if you will like working as a software engineer, or if you just like knowing what to expect.
正如我多次說過的,我認為在獲得軟件工程職位之前了解所有這些知識并不重要。 我確實認為了解它是有價值的,這是因為您不知道自己是否愿意擔任軟件工程師,或者只是想知道期望什么。
Also, unfortunately, there are certain interviewers that will ask you some of this stuff. Maybe because they don’t know any better, maybe because they are hiring for a more senior position. It is my opinion that these things can all be learned on the job if you have a solid foundation.
同樣,不幸的是,有些采訪者會問你一些問題。 也許是因為他們沒有更好的了解,也許是因為他們正在招聘更高的職位。 我認為,只要您有扎實的基礎,就可以在工作中學到所有這些東西。
Good luck!
祝好運!
翻譯自: https://www.freecodecamp.org/news/what-ive-learned-six-months-into-my-first-job-as-a-self-taught-software-engineer-516b0703e86/
電子工程師自學成才pdf
總結
以上是生活随笔為你收集整理的电子工程师自学成才pdf_作为一名自学成才的软件工程师,我在第一个月的工作中所学到的知识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SpiFlash同步/异步读写单片机裸机
- 下一篇: 联发科芯片资料大全,datasheet、