esl8266开发之旅
by alberto montalesi
通过阿尔贝托·蒙塔莱西
从ESL老师到越南软件开发人员的旅程 (My Journey from an ESL Teacher to Software Developer in Vietnam)
介绍 (Introduction)
Hi, my name is Alberto, and this is the story of how I learned to code, wrote a programming book, started my own blog and became a software developer.My background is in accounting and law, and never in my life did I think I would end up working as a software developer. But here I am today, working for a startup as a Full-Stack JavaScript developer.
嗨,我叫Alberto,这是我学习编码,写程序设计书 ,创建自己的博客并成为软件开发人员的故事。我的背景是会计和法律,我从来没有想过我最终将成为软件开发人员。 但是我今天在这里,是一家作为全栈JavaScript开发人员的初创公司。
我的第一步 (My first steps)
Everything started when I was in New Zealand and my girlfriend was studying at a local University. One of her upcoming exams was about HTML and I got curious and started helping her.
一切都始于我在新西兰,而我的女友正在当地的大学读书。 她即将进行的考试之一是关于HTML的,我很好奇并开始帮助她。
That was the first time I looked at a piece of code. I started studying HTML and CSS from Coursera and my first website was awful, a bunch of text centered in the middle of the page with an ugly colored background.
那是我第一次查看一段代码。 我从Coursera开始学习HTML和CSS,我的第一个网站简直糟透了,一堆文字居中在页面中间,背景为难看的彩色。
After I helped her prepare for her exam, I continued to study and practice because for the first time in a long time I was doing something I enjoyed.
在帮助她为考试做准备之后,我继续学习和练习,因为很长一段时间以来我第一次做自己喜欢的事情。
The first resources I’ve used to practice were Coursera and Codecademy. Mostly because these two were the first ones I found online.
我用来练习的第一批资源是Coursera和Codecademy 。 主要是因为这两个是我在网上找到的第一个。
- Codecademy is very good to get some hands-on basic experience with a new language. You won’t learn much but if you just want to learn the very basics it’s enough. Codecademy非常适合获得一些新语言的动手基础经验。 您不会学到很多东西,但是如果您只想学习最基础的知识就足够了。
Coursera, on the other hand, introduced me to the world of MOOCs. Back then I didn’t know there were such things as FREE online courses. I remember taking this course, taught by the John Hopkins University, and even though I’m not aware if it has been updated, I can assure you the teacher is very good.
另一方面,Coursera向我介绍了MOOC的世界。 那时我还不知道有免费的在线课程之类的东西。 我记得上过这门课程 , 该课程是由约翰·霍普金斯大学(John Hopkins University)教授的,尽管我不知道它是否已更新,但我可以向您保证,老师会很好。
After discovering MOOCs, it was just a matter of time before I stumbled upon the most popular of them all: CS50 by Harvard. Admittedly, I never finished it, but it’s a great course to introduce you to the foundations of computer science.
在发现MOOC之后,我偶然发现了最受欢迎的MOOC:哈佛大学的CS50,只是时间问题。 诚然,我从未完成过它,但这是向您介绍计算机科学基础的绝妙课程。
During that same period, around October / November 2016, I discovered freeCodeCamp and I started working on their curriculum. To this date, I haven’t completed the certificates, but that’s mostly because of a bit of laziness in completing some of the projects. I also prefer working on my own projects and ideas.
在同一时期(2016年10月/ 11月左右),我发现了freeCodeCamp,并开始研究他们的课程。 到目前为止,我还没有完成证书,但这主要是因为在完成某些项目时有些懒惰。 我也更喜欢自己的项目和想法。
Other very useful websites and resources I’d like to suggest that were useful to me were:
我想建议对我有用的其他非常有用的网站和资源是:
Lynda (even though some of their courses are not up-to-date, with a free trial you can have access to a lot of useful material)
Lynda (即使他们的某些课程不是最新的,通过免费试用,您可以使用很多有用的材料)
Team Treehouse (another paid website but again, with a free trial you can have enough time to watch a few courses)
Team Treehouse (另一个付费网站,但再次免费试用,您可以有足够的时间观看一些课程)
Udemy (huge marketplace of courses, it can be hard to find what you need. Don’t blindly trust reviews as I’ve found that many courses with high ratings were not my favorites)
Udemy (庞大的课程市场,可能很难找到所需的课程。不要盲目地信任评论,因为我发现很多评分较高的课程都不是我的最爱)
Udacity (high-quality material for free. Not a lot of topics but what they have is very good, curated by the likes of Google and other tech companies)
Udacity (免费的高质量材料。主题不多,但所涉及的内容非常好,由Google和其他科技公司策划)
Khan Academy (very good to learn math and algorithms, I highly suggest you taking their algorithm course, it will provide you with a good foundation)
Awesome (a repository on Github where you can find literally everything you may need)
很棒 (Github上的存储库,您可以在其中找到您可能需要的所有内容)
Developer roadmap (another repository that can help you guide you in your path to become a developer)
开发人员路线图 (可以帮助您指导您成为开发人员的另一种存储库)
Just a tip regarding Udemy: stay away from those “10 projects in 1, from zero to hero” kind of courses that last 30+ hours. If you are like me, you’ll end up dropping them halfway through (or even earlier). Everybody is different, so maybe you’ve had a different experience. Let me know.
关于Udemy的一个提示 :远离那些持续30多个小时的“ 1中10个项目,从零到英雄”的课程。 如果您像我一样,最终将它们丢弃到一半(甚至更早)。 每个人都不一样,所以也许您有不同的经历。 让我知道。
搬到另一个国家并在训练营学习 (Moving to another country and studying in a Bootcamp)
After a few months in New Zealand, I followed my girlfriend to Vietnam where I caught the opportunity for a free part-time Bootcamp in Ruby on Rails.
在新西兰待了几个月后,我跟随我的女朋友去了越南,在那里我抓住了机会在Ruby on Rails进行免费的兼职Bootcamp。
At that time I barely knew what Rails was. The only programming language I knew was JavaScript and I was still a beginner.
那时我几乎不知道Rails是什么。 我所知道的唯一编程语言是JavaScript,但我还是一个初学者。
If you happen to be in Vietnam, check them out at Coderschool.vn.
如果您碰巧在越南,请访问Coderschool.vn进行检查。
Regardless, attending that Bootcamp was the best decision I could make.Another tip I can give you is:
无论如何,参加Bootcamp是我可以做出的最佳决定。我可以给你的另一个提示是:
Surround yourself with like-minded people, that have similar goals and interests to you. Pursuing your goals will become easier.
与志趣相投的人在一起,他们的目标和兴趣与您相似。 追求目标将变得更加容易。
My goal was to become a better programmer. By spending more time together with other people like me, I felt more motivated and I was able to learn a lot.
我的目标是成为一个更好的程序员。 通过与像我这样的其他人一起度过更多的时间,我变得更有动力,并且能够学到很多东西。
One example I remember was learning how to use the command line. When I was self-learning I was always reluctant to start using it, but during the Bootcamp I was forced to learn how to use it.
我记得一个例子是学习如何使用命令行。 自学时,我总是不愿意开始使用它,但是在Bootcamp期间,我被迫学习如何使用它。
Sometimes we are just too lazy and what we need is a small push to do the extra step required to improve.
有时我们太懒惰了,我们需要做的只是一点点推动,以完成改进所需的额外步骤。
Having a weekly deadline to complete a project and being able to see my classmates’ projects motivated me to push myself and do more as well.
每周都有完成项目的截止日期,并且能够看到我同学的项目,这促使我努力奋斗并做更多的事情。
The best part was working with two other guys on the final project which gave me an insight into what it is like to be a part of a team. We had to write our own user stories, work on sprints to create an MVP, iterate to improve the product, fix bugs and finally deploy it to production.
最好的部分是与其他两个人一起完成了最终项目,这使我对成为团队成员的感觉有了深刻的了解。 我们必须编写自己的用户故事,在sprint上工作以创建MVP,反复进行产品改进,修复bug并最终将其部署到生产中。
We did not win, but it was a great experience to get a glimpse of real-world scenarios. The Bootcamp lasted only 2 months and after the demo day, I didn’t get any job offers. So what next?
我们没有获胜,但能瞥见现实世界的场景是一次很棒的经历。 训练营仅持续了2个月,在演示日之后,我没有任何工作机会。 那接下来呢?
训练营结束后 (After the Bootcamp)
After a few weeks, clueless about what to do next, my girlfriend and I decided to create our own application.
几个星期后,对于下一步的工作一无所知,我和我的女友决定创建自己的应用程序。
We spent a lot of time working on our idea and doing research.
我们花了很多时间来研究我们的想法并进行研究。
Unfortunately, my skills at the time were at a point where I could not even build an MVP, and our idea got rejected by a local startup accelerator.Looking back at it, I think it was for the best, as I prefer working as part of a team for now before starting my own endeavors.
不幸的是,当时我的技能甚至无法建立MVP,而我们的想法却被当地的创业加速器拒绝了。回想起来,我认为这是最好的,因为我更喜欢作为一部分在开始我自己的努力之前
Here’s another tip: if you really want to start your own startup, get ready and mentally prepared because it’s gonna be a very hard and time-consuming task. I suggest you watch videos from the Y-Combinator on YouTube, as they can help you evaluate your idea and see if it’s actually something worth spending your time on.
这是另一个提示: 如果您真的想启动自己的创业公司,请做好准备并做好心理准备,因为这将是一项非常艰巨且耗时的任务。 我建议您在YouTube上观看来自Y-Combinator的视频,因为它们可以帮助您评估您的想法,看看它是否值得花时间。
Fast forward a couple of months and hurray, I got a job. But wait, it wasn’t a programming job. It was a teaching job.
快进了几个月,欢呼雀跃,我找到了工作。 但是,等等,这不是编程工作。 这是一项教学工作。
One of the most popular jobs for foreigners in Vietnam is teaching English. That was what I also ended up doing, despite being a non-native speaker.
在越南,外国人最受欢迎的工作之一就是英语教学。 尽管我不是母语人士,但这也是我最终要做的。
My passion for programming was still high and growing (at this time I had been studying for a year) but this new job brought new challenges that made me lose motivation for a few months during which I almost didn’t touch my laptop.
我对编程的热情仍然很高,并且还在增长(此时我已经学习了一年),但是这项新工作带来了新的挑战,使我失去动力了几个月,几乎没有碰过笔记本电脑。
After a few months, my motivation came back but I was faced with a decision: continue studying Ruby on rails or go back to my first language, JavaScript.
几个月后,我的动力又回来了,但我面临一个决定:继续学习Ruby on Rails或回到我的第一语言JavaScript。
I loved how easy and fun it was to start building something on Rails but I ultimately decided to go back to JavaScript because:
我喜欢在Rails上开始构建东西多么容易和有趣,但是我最终决定回到JavaScript,因为:
- To me, it seems like the popularity of Rails is on the decline. On the other hand, JavaScript has established itself in a strong position and nowadays you can literally build a full-stack application with just JavaScript. 在我看来,Rails的受欢迎程度似乎正在下降。 另一方面,JavaScript已确立了自己的强势地位,如今,您可以使用JavaScript直接从字面上构建完整的应用程序。
- I’ve also liked JavaScript since the beginning of my journey and I wanted to continue improving it since it was my first programming language. 从一开始我就一直喜欢JavaScript,因为它是我的第一门编程语言,所以我想继续对其进行改进。
After making my decision, I started waking up early (4:30/5 AM) to study before going to work.
做出决定后,我开始很早(4:30/5 AM)起床学习,然后开始上班。
During that period I finished reading the “You don’t know JavaScript” series of books (which I started reading the year before) and I started watching ES6 for everyone by Wes Bos.
在那段时间里,我读完了“ 你不知道JavaScript ”系列书(我从一年前开始阅读),然后我开始为 Wes Bos观看ES6 。
我自己的项目 (My own projects)
While studying JavaScript, I took a lot of notes and eventually I ended up with so many of them that I decide that I could compile them together and write a book.
在学习JavaScript时,我记了很多笔记,最终得到了很多笔记,以至于我决定可以将它们一起编译并写一本书。
It took me around 2 months, from March to April 2018, to come up with the first draft of my book. Around this period I also started my first blog, built with Jekyll and hosted on Github Pages. I’ve since created a new one, built with Wordpress.
从2018年3月到2018年4月,我花了大约2个月的时间才提出了本书的初稿。 在此期间,我还开始了我的第一个博客,该博客由Jekyll建立,并托管在Github Pages上。 从那以后,我创建了一个新的,用Wordpress构建 。
When I first posted my book on Reddit I was blown away by the response. So many people liked it and that made me feel very proud and happy.
当我第一次在Reddit上发布我的书时,我被回应震惊了。 很多人喜欢它,这让我感到非常自豪和高兴。
Following what Kyle Simpson did with his “You Don’t know Javascript” series, I also made it available for everybody to read on Github, with the option of purchasing it if they wanted to have an epub, pdf or mobi copy or if they simply wanted to support me.
遵循凯尔·辛普森(Kyle Simpson)在他的“您不知道Javascript”系列上所做的工作之后,我还使每个人都可以在Github上阅读它,并可以选择购买它,如果他们想拥有epub,pdf或mobi副本,或者只是想支持我。
Here’s another tip: I think that if you are struggling with some concepts, trying to explain them to somebody else is a great idea. If you can’t explain it simply enough for a beginner to understand it, it probably means that you also did not fully understand it.
这是另一个提示:我认为,如果您正在为某些概念而苦苦挣扎, 尝试向其他人解释它们是一个好主意。 如果您不能简单地解释它,以使初学者无法理解它,则可能意味着您还没有完全理解它。
This project boosted my confidence and made me realize I went a long way since those days in New Zealand playing around with HTML.
这个项目增强了我的信心,使我意识到自从那时以来在新西兰玩HTML以来我走了很长一段路。
I started enjoying writing and I created more material, like this cheat sheet to quickly review the last 3 versions of JavaScript. You can download the whole picture here (it’s too big to embed in an article).
我开始喜欢写作,并创建了更多材料,例如此备忘单,可以快速查看JavaScript的最后3个版本。 您可以在此处下载整个图片 (太大而无法嵌入文章中)。
找新工作 (Getting a new job)
Fast forward a few more months, and it was August. At that time I was getting ready to sign my contract for another year as an English teacher, as I didn’t feel confident enough to apply for any programming position during the summer.
快进了几个月,那是八月。 当时我正准备以英语老师的身份再续签一年的合同,因为我没有足够的信心在夏天申请任何编程职位。
Yes, despite all the time and effort I put in, I did not feel ready to apply for a job. I felt scared by the possibility of getting rejected.
是的,尽管我花了很多时间和精力,但我并没有准备好申请工作。 我对被拒绝的可能性感到害怕。
Another tip I can give you is this: if you don’t feel like you are qualified enough to get a job, chances are that you actually are just suffering from the ‘Impostor Syndrome’ and you may have already built more than enough skills to be a Junior Developer. Just go for it, the worst you can get is a no.
我可以给您的另一个提示是: 如果您觉得自己没有足够的资格去找工作,那么很有可能您实际上正遭受“ 冒名顶替综合症 ”的折磨,并且您可能已经掌握了足够的技能来成为初级开发人员。 只是去做,最糟糕的是没有。
怎么回事 (How it happened)
One day I decided to join a newly created Facebook Group of local expats working in tech and I introduced myself, my skills and my accomplishments.
有一天,我决定加入一个由本地外籍人士组成的新成立的Facebook集团,从事技术工作,并介绍了自己,技能和成就。
This is the moment where I felt I just happened to be in the right place at the right moment: I received a message from a software engineer asking me if I wanted to interview for a JavaScript position.
在这一刻,我觉得自己恰好在正确的时间出现在正确的地方:我收到了一位软件工程师的消息,询问我是否想面试JavaScript职位。
The reason why he contacted me was that he was looking for a Junior JavaScript developer and he felt intrigued by the fact I wrote a book about JavaScript. This showed him that I had the required knowledge of the language and that I was very passionate.
他之所以与我联系,是因为他正在寻找一名初级JavaScript开发人员,而我写了一本关于JavaScript的书使他感到很感兴趣。 这表明他对语言有一定的了解,而且我非常热情。
Remember, the best way you can impress your recruiter is with your personal projects, but sometimes you can think outside the box. In my case, my project was the book, but I wouldn’t be surprised to hear of somebody who got an interview or got hired because they had a blog where they wrote tutorials or guides that showcased their knowledge and passion.
请记住,打动招聘人员的最好方法是个人项目,但有时您可以跳出思路。 就我而言,我的项目是书,但听到有人被采访或被录用的消息,我不会感到惊讶,因为他们有一个博客,他们在那里写教程或指南来展示自己的知识和热情。
At the moment I felt very surprised and also scared. I started thinking about all the ways the interview could go wrong and I also thought about declining the offer. Please, do me a favor and don’t be like me. Fortunately, I accepted it in the end.
此刻,我感到非常惊讶,也感到害怕。 我开始考虑面试出错的所有方式,也考虑过拒绝报价。 拜托,帮我一个忙,别跟我一样。 幸运的是,我最终接受了它。
Still, since I didn’t feel ready for the interview, I asked the recruiter for a week to prepare myself. I had never practiced whiteboard exercises or anything interview related so I decided to dedicate that week to practicing problems and interview-related questions.
尽管如此,由于我还没有为面试做好准备,所以我要求招聘者准备一个星期的时间以准备好自己。 我从未进行过白板练习或任何与面试有关的事情,因此我决定在那一周致力于练习问题和与面试有关的问题。
YouTube is full of mock interviews and they can really help you boost your confidence. Practicing coding games such as Codewars is also very good to improve your problem-solving skills. Don’t wait until the last moment, start preparing for an interview months before you even think of applying for a job. You may never know when you will need these skills and it’s better to start early. A book I always see being suggested is “Cracking the coding interview’ but I can’t recommend it as I have not read it.
YouTube充满了模拟访谈,它们确实可以帮助您增强信心。 练习诸如Codewars之类的编码游戏也非常有助于提高您的问题解决能力。 不要等到最后一刻,才准备几个月的面试,甚至在想到求职之前。 您可能永远不知道什么时候需要这些技能,因此最好早点开始。 我经常看到的一本建议书是《破解编码面试》,但由于我没有看过,所以我不推荐。
It turned out I didn’t need most of that stuff in my case. More important than my previous knowledge was my eagerness to learn more and my passion for the subject. That seemed to be enough to convince them to hire me for a Junior position.
事实证明,就我而言,我不需要大多数这些东西。 比起我以前的知识,更重要的是我渴望学习更多,以及对这个学科的热情。 这似乎足以说服他们雇用我担任初级职位。
The interview went very smoothly, and finally, after all the time I’d spent learning to code, I received an offer! ? Now I’m in my 4th month here. I’m loving every day and get to work on new features and learn new skills.
面试非常顺利,最后,在我花了很多时间学习编码之后,我才收到了录取通知书! ? 现在我已经是第四个月了。 我每天都在爱,并致力于新功能和学习新技能。
My original plans were to become a web developer but now I’m currently working as a software developer, working daily on an enterprise app and honestly I’m very happy about it.
我最初的计划是成为一名Web开发人员,但现在我现在是一名软件开发人员,每天在企业应用程序上工作,老实说,我对此感到非常高兴。
I am learning tools and languages I never used or practiced much such as MySQL, AWS, Node, Fusebox, Knex and especially Typescript.
我正在学习从未使用或练习过的工具和语言,例如MySQL,AWS,Node,Fusebox,Knex,尤其是Typescript。
This marks the end of my story. Do you have one that you want to share? Or is there simply anything that worries you in your quest to become a developer?
这标志着我故事的结束。 您有一个要分享的吗? 还是有什么让您担心成为开发人员的事情?
关于作者 (About the author)
You can follow more of my stories here on Medium or on my blog, where I post articles and tutorials.
您可以在Medium或我的博客上(在其中发布文章和教程)关注我的更多故事。
You can also check out my book on Amazon, Leanpub and Github.
您也可以在Amazon , Leanpub和Github上查看我的书。
如果这有用,请单击拍手? 请点击以下几次以显示您的支持! ⬇⬇⬇ (If this was useful, please click the clap ? button down below a few times to show your support! ⬇⬇⬇)
翻译自: https://www.freecodecamp.org/news/my-journey-from-esl-teacher-to-software-developer-35cc998a6ec0/
esl8266开发之旅