月中工作总结

In this post, I’ll share how I went from zero(ish) to a six-figure software engineering job offer in nine months while working full time and being self-taught.

在这篇文章中,我将分享我如何在九个月内从零(ish)变成六位数的软件工程工作,同时全职工作和自学成才。

Whenever I would start reading a success story, I would immediately look to find the author’s background, hoping it would match mine. I never found someone who had the same background as I did, and most likely mine won’t match yours exactly.

每当我开始阅读成功故事时,我都会立即寻找作者的背景,希望与我的背景相符。 我从未找到与我背景相同的人,而且我的极有可能与您的背景完全不符。

Nonetheless, I hope that my story inspires others and acts as a valuable data point that can be added to your success story dataset.

尽管如此,我希望我的故事能够启发他人,并作为一个有价值的数据点,可以添加到您的成功故事数据集中。

全面披露 (Full Disclosure)

I took a Visual Basic for Applications (VBA) course in high school (nine years ago). In my freshman engineering course (seven years ago), I learned some C, Python, Matlab, and Labview. I graduated from a good university with a chemical engineering degree and a good GPA (three years ago). I hadn’t done any programming outside of school, in high school or college, until I decided I wanted to learn last year.

我在高中(九年前)上了Visual Basic for Applications(VBA)课程。 在我的一年级工程学课程中(七年前),我学习了一些C,Python,Matlab和Labview。 我毕业于一所拥有化学工程学位和良好GPA的优秀大学(三年前)。 直到我决定去年想学习之前,我都没有在校外,高中或大学里做过任何编程工作。

After college, I got a job as a Process Engineer at a refinery. I worked there until I changed careers into Software Engineering.

大学毕业后,我在一家炼油厂找到了一名Craft.io工程师。 我在那里工作,直到我转行到软件工程。

为什么我想换职业 (Why I wanted to change careers)

I enjoyed solving technical problems, but I knew I wanted to get into the business/startup world at some point. I always kept the thought of an MBA in the back of my mind, but every time I looked at the price tag of the top schools, my interest waned.

我很喜欢解决技术问题,但是我知道我想在某个时候进入业务/初创公司。 我一直想着MBA的想法,但是每次查看顶级学校的价格时,我的兴趣都在减弱。

On May 27th, 2017 I found myself googling about MBAs again, and somehow I stumbled upon software engineering. It seemed like a perfect fit.

2017年5月27日,我发现自己再次涉猎MBA,以某种方式偶然发现了软件工程。 看起来很合适。

Software engineers are in increasing demand, salaries are great, and it’s the perfect industry from which to get into the startup world without needing a ton of initial capital. All you need is a computer, and your opportunities are limitless (kind of).

软件工程师的需求在不断增长,薪水很高,这是无需花费大量初始资金即可进入创业世界的理想行业。 您只需要一台计算机,您的机会是无限的。

In no other engineering discipline can you just have an idea, start building it, show it to users, and iterate with little capital and low barrier to entry. In chemical engineering, you essentially need a running plant or a lot of money to design a plant if you had an idea for a new product.

在任何其他工程学科中,您只能有一个主意,开始构建它,向用户展示,然后以很少的资本和较低的进入门槛进行迭代。 在化学工程中,如果您有新产品的想法,则本质上您需要运行中的工厂或大量资金来设计工厂。

I had heard of people quitting their jobs and attending a bootcamp, but the more I read about it online, the more I realized that you can totally learn it all on your own if you are committed and focused.

我听说有人辞职并参加训练营,但我在网上阅读的内容越多,我越意识到,只要您有决心和专注,就可以完全自己学习。

You might argue that you are losing out on the networking and career advice provided by a bootcamp. This can be true, but I was fortunate in that I was living in the Bay Area which allowed me to attend several meetups, so I networked that way.

您可能会辩称,您正在失去训练营提供的网络和职业建议。 的确如此,但是我很幸运,因为我住在海湾地区,这使我得以参加几次聚会,所以我以这种方式建立了网络。

Besides, the worst case was that I’d realize that I couldn’t do it on my own, and then I would quit my job to attend a bootcamp.

此外,最糟糕的情况是我意识到自己不能自己做,然后我辞掉工作去参加训练营。

目标 (The Goal)

You need to have a goal. Especially if you are trying to learn while working full-time. It is easy to let your learning drag on and on if you don’t have any external pressure pushing you. So you need to create internal pressure. Your goal should be simple and quantitative. You should do enough research to come up with a reasonable goal. Mine was the following:

您需要有一个目标。 特别是如果您想全职工作学习。 如果没有任何外在压力,很容易让您的学习陷入困境。 因此,您需要产生内部压力。 您的目标应该是简单而定量的。 您应该进行足够的研究以得出合理的目标。 我的是:

Get a software engineering job within one year with the same or better salary than I am making right now.

在一年之内获得与我现在相同或更高的薪水的软件工程工作。

计划 (The Plan)

Once you have a goal, you need a plan to help you get there. This is where you consume as many success stories as you can. None of them will match your exact situation, but you can take some advice from each one. I developed (and iterated on) my plan using resources such as the learnprogramming subreddit, the freeCodeCamp forum, and Medium.

一旦有了目标,就需要一个计划来帮助您实现目标。 在这里,您可以尽可能多地获取成功案例。 它们都不适合您的实际情况,但是您可以从每个人那里获取一些建议。 我使用诸如learningprogramming subreddit , freeCodeCamp论坛和Medium之类的资源开发(并迭代了)我的计划。

On May 27, 2017 I decided I was going to make the coding plunge, and I dove in head first. That day I decided to start putting in no more than 40 hours per week at my job, so that I had time to code after work and on the weekends. Luckily for you, I did a pretty good job of documenting my progress.

在2017年5月27日,我决定要进行编码尝试,并且首先投入工作。 那天,我决定开始每周不超过40个小时的工作时间,以便在下班后和周末有时间进行编码。 幸运的是,我在记录进度方面做得很好。

My plan, through many iterations, ended up looking something like this:

经过多次迭代,我的计划最终看起来像这样:

  1. Take an Intro to CS course to get a solid base understanding of core CS concepts参加CS入门课程,以获得对CS核心概念的扎实基础
  2. Follow freeCodeCamp until I can build portfolio-level full stack web apps on my own关注freeCodeCamp,直到我可以自己构建投资组合级的全栈Web应用程序为止
  3. Refactor to clean up the code, add testing, focus on advanced concepts重构以清理代码,添加测试,关注高级概念
  4. Contribute to open source贡献开源
  5. Prepare for job interviews准备面试

To start, my plan was simple. At the time, I thought I was going to follow Google’s Technical Guide, so I started with their recommended introductory course, Udacity CS101.

首先,我的计划很简单。 当时,我以为我会遵循Google的技术指南,所以我从他们推荐的入门课程Udacity CS101开始。

第0个月-Udacity CS101,哈佛CS50 (Month 0 - Udacity CS101, Harvard CS50)

The high of making this big decision gave me a ton of energy. I would start coding as soon as I got home from work and wouldn’t stop until I went to bed. And then again all weekend. Udacity CS101 tracked completion percentage, which was a big motivator for me. I logged my completion percentage every day after coding. I finished the first 75% in 10 days. The last 25% was heavy in recursion, and it was a bit tougher for me. All in all, it took me 20 days to finish Udacity CS101.

做出这个重大决定的高昂能量使我充满了精力。 我下班回家后会立即开始编码,直到上床睡觉都不会停止。 然后又是整个周末。 Udacity CS101跟踪了完成百分比,这对我来说是一个很大的动力。 编码后,我每天记录完成率。 我在10天内完成了前75%的任务。 最后25%的递归繁重,对我来说有点难。 总而言之,我花了20天才能完成Udacity CS101。

While I was taking Udacity CS101, I had started reading the learnprogramming subreddit quite heavily. I read that it was important for self-taught developers looking to make a career change to be active online. I decided to make new Twitter, Reddit, Stack Overflow, Medium, and Quora accounts using my full name, so that I could build up an online presence.

当我使用Udacity CS101时,我已经开始大量阅读learningprogramming subreddit 。 我读到,对于希望改变职业生涯以在线活跃的自学成才的开发人员而言,这很重要。 我决定使用我的全名创建新的Twitter,Reddit,Stack Overflow,Medium和Quora帐户,以便建立在线形象。

Also, I decided to stop reading distracting media like Instagram, Facebook, and non-programming subreddits. I would only check my phone for programming-related news and posts. This was crucial in making sure that I was finding out about the best learning paths and learning resources. It was because of this that I found out about Harvard CS50 on edX.

另外,我决定停止阅读分散注意力的媒体,例如Instagram,Facebook和非编程子目录。 我只会检查手机中与编程有关的新闻和帖子。 这对于确保我能找到最佳学习途径和学习资源至关重要。 因此,我在edX上找到了关于哈佛CS50的信息。

I was originally content with just doing one intro course, but everyone seemed to recommend Harvard CS50, so I decided to dive into that next. CS students at other schools had taken this course and said they learned more in CS50 than a year or two at their university studying CS. The general consensus was that the course was difficult but worth it. By the end of Month 0, I had completed the first 5 lectures and homework assignments.

本来我只满足于做一个入门课程,但每个人似乎都推荐哈佛CS50,所以我决定再学习下一个。 其他学校的CS学生参加了这门课程,并说他们在CS50中学习的知识比他们在大学学习CS的大学学习了一两年以上。 普遍的共识是,这门课程很难,但值得。 在第0个月末,我完成了前5堂讲座和作业。

第1个月-哈佛CS50,Linux,第1次聚会,freeCodeCamp (Month 1 - Harvard CS50, Linux, 1st Meetup, freeCodeCamp)

I completed CS50 about halfway into the month. I’m not going to comment too much on my experience with CS50, because I wrote an in-depth post about my experience here.

我大约在本月中旬完成了CS50。 我不会在CS50的使用经验上发表过多评论,因为我在这里撰写了一篇有关其使用体验的深入文章。

TLDR: It’s a great course, I highly recommend it. David Malan is an excellent lecturer, and there are a ton of resources to help you get through it. You start in C, move on to Python, and then finish with web development. It is very dense, and there is a lot of material, but I think it is well worth it.

TLDR:这是一门很棒的课程,我强烈建议您这样做。 大卫·马兰(David Malan)是一位出色的讲师,有大量资源可以帮助您顺利通过。 您从C开始,转到Python,然后完成Web开发。 它非常密集,并且有很多材料,但是我认为这是值得的。

After CS50, I decided to set up my XPS 15 to dual boot Windows and Ubuntu. That was a frustrating weekend. I messed up my partitions and almost bricked my laptop. I was close to chucking my laptop and getting a new one.

在CS50之后,我决定将XPS 15设置为双启动Windows和Ubuntu。 那是一个令人沮丧的周末。 我弄乱了分区,几乎把笔记本电脑弄成砖了。 我快要拿起笔记本电脑并换一台新笔记本电脑了。

I slowly weaned myself off of Windows and eventually was solely using Ubuntu. I wanted to force myself to get comfortable with the command line which I think worked to some degree, but I still have a long ways to go.

我逐渐从Windows断奶,最终仅使用Ubuntu。 我想强迫自己对命令行有所适应,我认为命令行在某种程度上是可行的,但是我还有很长的路要走。

I started 100 days of code to make sure I stayed focused and coded every day. It is important to document your progress. If you are making progress every day, it won’t seem like much but when you look back a month or several months, you will realize that you have actually made quite a bit of progress which motivates you to keep going.

我开始进行100天的编码以确保我每天都专注于代码。 记录您的进度很重要。 如果您每天都在进步,那么看起来似乎并不多,但是当您回顾一个月或几个月时,您会意识到您实际上已经取得了很大进步,从而激励您继续前进。

I knew that networking would make or break me, so I mustered up the courage to go to my first coding meetup. I had never gone to any meetup let alone a coding meetup. I was so nervous that after driving there, parking, and walking to the door, I almost turned around and went home.

我知道网络会成败我,所以我鼓起勇气参加了第一次编码聚会。 我从来没有参加过任何聚会,更不用说编码聚会了。 我非常紧张,以至于开车去那儿,泊车并走到门口之后,我差点掉头回家。

It helped that it was the first meetup for the group. I quickly realized that there was no reason to be nervous. No one knew each other, no one was judgmental, and everyone was eager to learn. This was the beginning of a meetup-spree. I ended up attending over 50 meetups in 9 months.

这是该小组的第一次聚会,这很有帮助。 我很快意识到没有理由紧张。 没有人彼此了解,没有人有判断力,每个人都渴望学习。 这是聚会狂欢的开始。 我在9个月内参加了50多次聚会。

I’m glad that I started going to meetups early. Most people only started to attend meetups when they were looking for a job, but at that point it is almost too late. There are so many reasons to start early. To name a few:

我很高兴我很早就开始参加聚会。 大多数人只是在找工作时才开始参加聚会,但那时已经来不及了。 有很多理由提早开始。 仅举几例:

  1. Developing relationships takes a long time. Starting early means that you have connections who can vouch for you when looking for a job later建立关系需要很长时间。 尽早开始意味着您拥有可以在以后找工作时为您提供担保的人脉关系
  2. Talking about programming with strangers is a great way to prepare for interviews与陌生人讨论编程是准备面试的好方法
  3. You can learn new frameworks, tools, and learning resources from people who are ahead of you. This can influence your future learning plan.您可以从前面的人那里学习新的框架,工具和学习资源。 这会影响您未来的学习计划。

There was some uncertainty at this time in my coding journey. This was about when I needed to decide what kind of software developer I wanted to be.

目前在我的编码过程中存在一些不确定性。 这是关于何时需要确定自己想成为哪种软件开发人员的。

Ultimately, I chose web development because it seemed like there was high demand and also a lot of online resources. Once I had that figured out, I needed to figure out what to do next. Some people recommended that at this stage I should think about web apps I wanted to build and then get going. Some people recommended The Odin Project or freeCodeCamp.

最终,我选择Web开发是因为看起来需求量很大,而且在线资源也很多。 一旦弄清楚了,就需要弄清楚下一步该怎么做。 有人建议在此阶段,我应该考虑要构建的Web应用程序,然后开始使用。 有人推荐了Odin Project或freeCodeCamp。

The guy that was running the weekly meetup I was attending knew Ruby and wanted to do projects with Ruby. This was a big reason why I made the decision to go all in on The Odin Project.

我参加的每周一次聚会的家伙认识Ruby,并想与Ruby进行项目。 这就是为什么我决定全心投入Odin项目的一个重要原因。

And then two days later I ditched that idea.

然后两天后,我放弃了这个主意。

That is one of the downsides of going the self-taught route. One minute you think you know what path you should take, but then the next day you wonder if that was the right move.

这是走自学之路的缺点之一。 一分钟后,您认为自己知道应该走什么路,但是第二天,您就想知道这是否是正确的举动。

I read that Ruby was falling out of favor, and I proved this by searching for Ruby vs JavaScript jobs, so I ended up starting freeCodeCamp. The one thing that bothered me about freeCodeCamp was that they came up with the project ideas, so every camper does the same projects. This concerned me at first because I wanted to stand out to recruiters. However, I ended up loving freeCodeCamp, and now I highly recommend it. For more details on my experience and recommendations regarding freeCodeCamp, check out my writeup here.

我读到Ruby不再受欢迎,我通过搜索Ruby vs JavaScript作业证明了这一点,所以我最终开始了freeCodeCamp。 关于freeCodeCamp困扰我的一件事是他们提出了项目构想,因此每个露营者都执行相同的项目。 首先,这让我感到担心,因为我想在招聘人员中脱颖而出。 但是,我最终爱上了freeCodeCamp,现在我强烈推荐它。 有关我的经验和有关freeCodeCamp的建议的更多详细信息,请在此处查看我的文章。

第2个月-YDKJS,freeCodeCamp前端,React (Month 2 — YDKJS, freeCodeCamp Front End, React)

I started reading You Don’t Know JavaScript, because everyone recommended it to supplement freeCodeCamp. I had to re-read several sections as it is pretty dense, but it’s a perfect resource to learn lexical scope, closures, promises, and all parts of JavaScript that you hear about and want to learn but never do because they seem difficult.

我开始阅读“ 您不知道JavaScript” ,因为每个人都推荐它来补充freeCodeCamp。 我不得不重新阅读几节,因为它非常密集,但是它是学习词汇范围,闭包,promise以及您听说过并且想学习但由于困难而从未做过JavaScript所有部分的理想资源。

I finished the front-end section of freeCodeCamp. The checklist format and estimated completion time helped motivate me to finish quickly. I was also itching to move on to the next section and learn React. However, this also meant that my projects had minimal styling. I did whatever it took to fulfill the user stories and nothing more.

我完成了freeCodeCamp的前端部分。 清单格式和估计的完成时间有助于我快速完成工作。 我也很想继续下一节并学习React。 但是,这也意味着我的项目具有最小的样式。 我尽了一切努力来满足用户的需求,仅此而已。

In hindsight, maybe I should have focused on making the projects more appealing. Perhaps, this would have helped me learn CSS more deeply.

事后看来,也许我应该专注于使项目更具吸引力。 也许,这将有助于我更深入地学习CSS。

The next step was learning React, and I was pretty pumped.

下一步是学习React,我非常兴奋。

I had heard so much about it, and I was ready to fit in with the cool kids. However, I was a little hesitant given the licensing issues at the time. I’m really glad that is no longer an issue. Learning React was difficult for me. I wasn’t aware of any good tutorials then (but it seems like there are a ton now).

我已经听到了很多,我已经准备好适应酷孩子。 但是,当时我对许可问题有些犹豫。 我真的很高兴这不再是一个问题。 学习React对我来说很困难。 那时我还没有任何好的教程(但是现在看来好像很多)。

I tried reading the docs and following along with Facebook’s Tic-Tac-Toe tutorial, but I didn’t quite understand all of it. I was told if that wasn’t working for me, then it meant I didn’t understand JavaScript enough. So then I went back to reading You Don’t Know JavaScript, but again that was too dense for me.

我尝试阅读文档,并跟随Facebook的Tic-Tac-Toe教程学习,但是我不太了解所有内容。 有人告诉我这是否对我不起作用,那意味着我对JavaScript的理解不够。 因此,我又回头阅读了《 You't Know JavaScript》,但是对我而言,那又太密集了。

第3个月-freeCodeCamp React,CodeClub,启动freeCodeCamp后端 (Month 3 - freeCodeCamp React, CodeClub, Starting freeCodeCamp Back End)

Ultimately, I just decided I would work my way through the freeCodeCamp React projects to see how it went. That code was ugly, but it did help me understand React a little better.

最终,我只是决定我将通过freeCodeCamp React项目来研究它的进展。 这段代码很难看,但是确实帮助我更好地理解了React。

That meetup I had been attending weekly decided that they were going to build projects with full stack JavaScript instead of Ruby, and they decided that the first project would be to build a website for the meetup group, CodeClub.Social.

我每周参加的见面会决定他们要使用全栈JavaScript而不是Ruby构建项目,并且他们决定第一个项目将是为见面组CodeClub.Social建立一个网站。

I developed cards using React and Meetup API allowing the user to sign up for the next three meetups from our website. It was a little difficult for me to take a quick break from freeCodeCamp to do this, but it was an opportunity I couldn’t pass up. I was happy to be working on a project with a small group of people. It also helped me learn Git and Github.

我使用React和Meetup API开发了卡片,允许用户从我们的网站上注册接下来的三个聚会。 快速脱离freeCodeCamp做到这一点对我来说有点困难,但这是我不能错过的机会。 我很高兴能与一小群人一起从事一个项目。 它还帮助我学习了Git和Github。

Before the month was over, I started working on the back end section of freeCodeCamp.

在本月结束之前,我开始研究freeCodeCamp的后端部分。

第4个月-freeCodeCamp后端完成,Yeggle (Month 4 - Finished freeCodeCamp Back End, Yeggle)

I worked through all of the API projects in freeCodeCamp, but I started deviating from freeCodeCamp at the Image Search Abstraction Layer project.

我在freeCodeCamp中完成了所有API项目,但是我开始偏离Image Search Abstraction Layer项目中的freeCodeCamp。

I was itching to make full stack web applications, so as soon as I saw the title of this project, I had an idea for my own project. I would make a node app that would store random imgur URLs in a database, and then make a front end that would output a user-specified number of those random images. What everyone says is true: you work harder and have more success when you are working on a project that was your own idea.

我很想制作全栈Web应用程序,所以一看到这个项目的名称,我就对自己的项目有了一个主意。 我将制作一个将在数据库中存储随机imgur URL的节点应用程序,然后制作一个前端,以输出用户指定数量的那些随机图像。 每个人都说的是对的:在做属于自己想法的项目时,您会更加努力并取得更大的成功。

Once I got it to work, I was very proud of myself. It was ugly and clunky, but it worked.

一旦开始工作,我为自己感到非常自豪。 它虽然丑陋又笨拙,但确实有效。

As I was working through freeCodeCamp, I was learning about what projects would be within my capabilities. I was running regularly at the time, so I would come up with ideas on my runs and write them down when I got home. That way I would have a list of project ideas when I was ready.

当我通过freeCodeCamp工作时,我正在学习哪些项目将在我的能力范围内。 当时我经常跑步,所以我会想出跑步的想法,并在回家后写下来。 这样,当我准备就绪时,我将获得一份项目构想清单。

I finally felt ready to start making my own useful and polished full-stack web apps to share with users and put on my portfolio. I was so ready to get started.

最后,我终于准备好开始制作自己的有用且完善的全栈Web应用程序,以便与用户共享并加入我的投资组合。 我已经准备好开始了。

When looking for a new restaurant, I always found myself opening Yelp to check reviews, and then opening Maps to check their reviews. What if I made an app that compared both side by side?

在寻找新餐厅时,我总是发现自己打开Yelp查看评论,然后打开Maps查看他们的评论。 如果我制作了一个将两者进行比较的应用程序怎么办?

So I made Yeggle. I used Node/Express/React along with the Google Maps and Yelp APIs. There were a couple obstacles I didn’t think I would be able to overcome, but in the end I finished and I was very proud of my app. Then I posted it to Reddit, and no one cared. That was a bit of a bummer, but I didn’t let it get me down.

所以我做了Yeggle 。 我使用了Node / Express / React以及Google Maps和Yelp API。 我认为无法克服一些障碍,但最终我完成了,我为自己的应用感到非常自豪。 然后我将其发布到Reddit,没有人关心。 那真是个无赖,但我没有让它失望。

第5个月-StockIT (Month 5 - StockIT)

I didn’t get quite as much done this month, as I started it off with a two week vacation to Japan and Thailand!

本月我没有做太多事情,因为我开始了去日本和泰国的两周假期!

But I did start and complete my next project. I kept reading about how difficult it was to get a job as a self-taught developer, so I thought I needed to do something unique. I remembered a game where a Dow Jones stock graph started trending, and you had one opportunity to buy and one opportunity to sell, and the goal was to beat the market. The purpose of the game was to show you how difficult it was to beat the market.

但是我确实开始并完成了下一个项目。 我一直在读关于成为一名自学成才的开发人员的工作有多困难,所以我认为我需要做一些独特的事情。 我记得有一款游戏,道琼斯(Dow Jones)股票图开始流行,并且您有一次购买机会和一次出售机会,目标是击败市场。 该游戏的目的是向您展示击败市场有多么困难。

My idea was to make a game similar to that, but instead of the market, you would be playing against a machine learning algorithm. So I created StockIT.

我的想法是制作一款与之类似的游戏,但是要取代市场,您将与机器学习算法竞争。 所以我创建了StockIT 。

I took a video tutorial on Pandas and Scikit Learn that covered multiple machine learning techniques. I originally wanted to do some cool deep learning techniques, but I realized that took massive datasets and more time than I wanted to spend.

我观看了有关Pandas和Scikit Learn的视频教程,其中涵盖了多种机器学习技术。 我原本想做一些很酷的深度学习技术,但是我意识到这花了大量的数据集和更多的时间。

Instead, I stuck to a simple linear regression model. I thought that would be the hard part, but it wasn’t. Getting D3 to jive with React was the hard part. Both libraries wanted to control the DOM. There were some other libraries that helped to join the two, but I felt they were too bloated. I ended up using D3 to generate the SVGs and React to handle the DOM which worked out quite well for me.

相反,我坚持使用简单的线性回归模型。 我以为那将是困难的部分,但事实并非如此。 使D3与React结合起来是困难的部分。 这两个库都希望控制DOM。 还有其他一些库帮助将两者结合在一起,但是我觉得它们太过肿了。 我最终使用D3生成了SVG,并使用React处理了DOM,这对我来说非常好。

This time when I shared it with Reddit, everyone loved it!

这次,当我与Reddit分享时,每个人都喜欢它!

Turns out, just like VCs, redditors are all about that machine learning. All the love from Reddit was a big confidence boost. People were playing my game and enjoying it!

事实证明,就像VC一样,redditor都是关于机器学习的。 Reddit的所有热爱极大地增强了信心。 人们在玩我的游戏并享受它!

第6个月-jobSort(),求职准备 (Month 6 - jobSort(), Job Hunt Prep)

After StockIT, I rolled right into my next personal project. I wanted to make a job board that aggregated the smaller tech-focused job listing websites such as Stack Overflow, Github, and Hacker News. To add my own unique spin to it, I decided to have it sort based on the technologies the user wanted in a job and how badly they wanted each of them.

在使用StockIT之后,我立即进入了下一个个人项目。 我想创建一个工作板,以汇总较小的以技术为重点的工作清单网站,例如Stack Overflow,Github和Hacker News。 为了给自己添加独特的功能,我决定根据用户在工作中想要的技术以及他们对每种技术的渴望程度对其进行排序。

For example, let’s say I was looking for a job that was looking for someone who knew JavaScript, React, and/or Python, and I really wanted to work with JavaScript and React but I didn’t care so much about Python. Then I could give JavaScript a 3, React a 3, and maybe Python a 1. The listings would then sort accordingly.

例如,假设我正在寻找一份工作,该工作正在寻找了解JavaScript,React和/或Python的人,而我确实很想与JavaScript和React一起工作,但我不太关心Python。 然后我可以给JavaScript一个3,给React一个3,也许给Python一个1。然后,清单将进行相应的排序。

I ran into various obstacles with this project and had to change course a couple times, but I ended up with a product I was happy with. My final tech stack was React/Node/Express/MySQL. I posted the project to the cscareerquestions subreddit and got 650 views before it was taken down because they don’t allow personal projects.

我在这个项目中遇到了种种障碍,不得不改变路线几次,但是最终我得到了一个令我满意的产品。 我最终的技术堆栈是React / Node / Express / MySQL。 我将该项目发布到了cscareerquestions subreddit上,并在取消之前获得了650次视图,因为它们不允许个人项目。

The “final” product is here, and if you’re interested in knowing more about my struggles and refactors, check out my post here.

“最终”产品就在这里 ,如果您有兴趣进一步了解我的挣扎和重构,请在此处查看我的文章。

Because of my issues, jobSort() took up a decent portion of the month. I ended up getting coffee with a friend I had met at my first meetup, and he advised me to start applying for jobs now. I read all over the place that everyone says they waited too long to apply. Also, whenever I saw a post asking when to apply, the top comment was always “now.”

由于我的问题,jobSort()占用了本月的大部分时间。 我最终和第一次见面时遇到的朋友喝咖啡,他建议我现在开始申请工作。 我到处都读到每个人都说他们等了太久才申请。 另外,每当我看到一则帖子询问何时申请时,最高的评论总是“现在”。

In my head, I was going to work my way through my structured plan to build up my portfolio with personal projects, and then work on open source contributions, and then prepare for interviews, and finally start applying to jobs. This friend convinced me to ditch that plan and start applying. So this month I made a portfolio and a resume. The following month I would start applying.

在我的脑海中,我将按照自己的结构化计划进行工作,以建立个人项目的投资组合,然后进行开源贡献,然后准备面试,最后开始申请工作。 这位朋友说服我放弃该计划并开始应用。 因此,本月我做了一份投资组合和一份简历。 下个月,我将开始申请。

第7个月-测试,求职 (Month 7 - Testing, Job Hunting)

This month I focused on touching up my projects and applying to jobs. I also wanted to learn testing and Redux.

这个月我专注于修饰项目并申请工作。 我还想学习测试和Redux。

I added flexbox to CodeClub.Social to make it responsive. I improved the mobile UX on jobSort(). I added testing to jobSort() with mocha/chai/enzyme which was difficult to set up, easy to get started, and then difficult to get 100% coverage.

我将flexbox添加到CodeClub.Social中以使其响应。 我在jobSort()上改进了移动UX。 我使用mocha / chai / enzyme将测试添加到jobSort()中,该测试难以设置,易于入门,然后很难获得100%的覆盖率。

By the end of the month, I had applied to 63 jobs. I viewed this as a self-assessment. Was my portfolio/resume good enough? If so, what did I need to work on to prepare for interviews? At first, I applied with Hacker News: Who is Hiring, and Indeed.

到月底,我已经申请了63个工作。 我认为这是一种自我评估。 我的投资组合/简历足够好吗? 如果是这样,我需要做些什么来准备面试? 首先,我向《黑客新闻:谁在招聘,确实如此》提出了申请。

On Hacker News, I used jobSort() to determine which listings to apply for. On Indeed, I tried non-software companies to see if I could even get a call or an interview anywhere.

在Hacker News上,我使用jobSort()确定要申请的清单。 在“确实”上,我尝试了非软件公司,看看是否能在任何地方接到电话或接受采访。

At first, I was applying quickly and not personalizing my resume/cover letter. Then, I decided to personalize my cover letter and resume, and then try to send an email to someone from the company. This method was clearly better than the shotgun approach.

刚开始时,我很快就申请了,没有对简历/求职信进行个性化设置。 然后,我决定个性化我的求职信和简历,然后尝试向公司的某人发送电子邮件。 这种方法显然比the弹枪方法更好。

I received five calls that month — two from recruiting companies and three from software companies that included:

我当月接到了五个电话,其中两个来自招聘公司,三个来自软件公司,其中包括:

  • a contracting DevOps/testing role at a dotcom company在一家网络公司担任承包开发运营/测试角色
  • a series B food analytics company, andB系列食品分析公司,以及
  • a fairly large and successful startup that was recently purchased by a major corporation一个相当大型且成功的创业公司,最近被一家大公司收购

I made it past the HR screen in two of these, but none of them yielded an onsite interview. I was pretty happy with the three calls, and I learned a lot from them.

我在其中两个中通过了HR屏幕,但没有一个进行现场采访。 我对这三个电话很满意,从中我学到了很多。

Everyone mentioned online that junior developers aren’t expected to know that much from the start, they just need to be passionate and excited to learn. So I thought, easy. I am passionate and excited to learn. What I learned from these calls, however, was that nobody was looking for a junior developer. They expect you to know what you’re doing from day one.

每个人都在网上提到,初级开发人员从一开始就不应该了解那么多,他们只需要学习就变得充满激情和兴奋。 所以我想,容易。 我对学习充满热情和兴奋。 我从这些电话中学到的是,没有人在寻找初级开发人员。 他们希望您从第一天开始就知道自己在做什么。

These calls taught me that I needed to

这些电话告诉我,我需要

  • be good enough to add value from day one从第一天起就足以增加价值
  • be confident enough to convince them that I can add value from day one有足够的信心说服他们我从一开始就可以增加价值

第8个月-夜班,Redux,开源,现场面试 (Month 8 - Night Shift, Redux, Open Source, Onsite Interview)

I started this month working the night shift for a 40 day stretch at my full time job - 6 days a week, 12 hours a day, 5PM to 5AM. Ugh.

我本月开始在全职工作的夜班工作40天-每周6天,每天12小时,从下午5点到凌晨5点。 啊。

I knew I wouldn’t be able to get as much done this month, but I had a goal and I wanted to meet it, so I couldn’t take a month off.

我知道本月我将无法完成很多工作,但是我有一个目标,而且我想实现这一目标,所以我不能休假一个月。

I refactored jobSort to use Redux which was surprisingly not as difficult as I thought it would be. I listened to a lot of podcasts about it and read blogposts about it, and it never quite made sense to me until I started using it.

我将jobSort重构为使用Redux,这并不像我想象的那么难。 我听了很多有关它的播客,并阅读了有关它的博客文章,在我开始使用它之前,对我来说这从来没有什么意义。

I really like the flow of data with Redux. It’s interesting now seeing people complain about Redux. I don’t think I’m qualified to spout off my opinions strongly, but I do like the reducer pattern.

我真的很喜欢Redux的数据流。 现在看到人们抱怨Redux很有趣。 我认为我没有资格强烈发表自己的意见,但我确实喜欢减速器模式。

This was supposed to be the month of open source for me. I was going to make my first open source contribution, and it would be a great contribution to a fantastic library. I was going to contribute to React!

对我来说,这应该是开源的月份。 我将做出我的第一个开放源代码贡献,这将对出色的图书馆做出巨大的贡献。 我本来要为React做贡献!

Everyone said it was a difficult codebase to read let alone contribute to. But I needed to stand out, I needed to be unique. I knew that my contribution wouldn’t be significant, but I still wanted to do it nonetheless.

每个人都说这是一个很难阅读的代码库,更不用说贡献了。 但是我需要脱颖而出,我必须与众不同。 我知道我的贡献不会很大,但是我仍然想这样做。

I would start by reading the docs all the way through and then pouring through the codebase. Watch every issue, every PR. Reading through the React docs in full was a great exercise, and I’m glad I did it. But I quickly realized that the issue with contributing to React is that there just aren’t that many “good first issues,” and they get snatched up quickly.

我将从一开始阅读文档开始,然后遍历代码库。 观看每个问题,每个PR。 完整阅读React文档是一个很棒的练习,我很高兴自己做到了。 但是我很快意识到,为React做出贡献的问题在于,没有多少“良好的首要问题”,而且它们很快就被抢走了。

At one of the meetups I attended, Anthony Ng recommended that I try out Downshift, an autocomplete library by Kent C. Dodds. This was a gamechanger. It was right in my wheelhouse. The right difficulty, right amount of issues to help with, not too many collaborators, super helpful maintainer, clean well-tested code. On top of all that, it was a perfect solution to some issues I was having with my jobSort() application.

在我参加的一次聚会中,吴宜强( Anthony Ng)建议我尝试使用Downshift ,这是Kent C. Dodds的自动完成库。 这是一个改变游戏规则的人。 就在我的驾驶室里。 正确的难度,需要解决的适当数量的问题,没有太多的合作者,超级有用的维护者,干净的经过良好测试的代码。 最重要的是,它是我用jobSort()应用程序遇到的一些问题的完美解决方案。

About halfway through the month, I received an email from one of the companies I applied to in the previous month. They set up an initial phone screen, and then a technical phone screen. The technologies they were looking for were exactly what I had learned - React, Redux, and D3. I mostly just talked about my projects and why I made certain decisions. After this, they asked me to come onsite for an interview. My first onsite interview!

在本月中旬,我收到了上个月申请的一家公司的电子邮件。 他们设置了最初的电话屏幕,然后是技术电话屏幕。 他们正在寻找的技术正是我所学的-React,Redux和D3。 我主要只是谈论我的项目以及为什么做出某些决定。 此后,他们要求我到现场进行采访。 我的第一次现场采访!

I hadn’t prepared for interviews at all, so I went into it with the expectation that I wouldn’t get the job, but I would gain valuable interviewing experience. I also was running on three hours of sleep since I was still working the night shift which didn’t help. Luckily, the technical portion wasn’t whiteboarding, just a one-hour pair programming session. It was a fairly straightforward challenge, but I was very nervous.

我根本没有为面试做任何准备,因此我满怀期待,因为我不会得到这份工作,但我会获得宝贵的面试经验。 由于我仍在夜班工作,所以我也一直在睡眠三个小时,这无济于事。 幸运的是,技术部分不是白板,而只是一个小时的一对编程会话。 这是一个相当简单的挑战,但我非常紧张。

At first, I was worried about making sure I knew everything without looking it up. When I realized that I wasn’t going to finish the challenge, I realized that I needed to stop worrying what the interviewer thought of me and just google/stack overflow to find answers. I didn’t end up finishing, and I thought I failed miserably.

起初,我担心要确保自己不了解就知道一切。 当我意识到自己不会完成挑战时,我意识到我需要不再担心面试官对我的想法,而只是通过谷歌/堆栈溢出来寻找答案。 我没有结束,我以为我失败了。

Since I thought I failed the pair programming, I felt relaxed for the rest of the interview. Ultimately, I left the interview with my chin up. Worst case I got some valuable interviewing experience, and best case I got my first job offer.

因为我以为我没有通过结对编程,所以在接下来的采访中我感到很轻松。 最终,我放弃了采访。 最坏的情况下,我获得了一些宝贵的面试经验,最好的情况下,我得到了我的第一份工作。

第9个月-工作机会 (Month 9 - Job Offer)

I ended up receiving my first job offer 9 months and 7 days after that first day when I decided I was going to dive head first into programming with the intent of changing careers. I felt confident given that I received an offer after my first onsite interview, but at the same time, if I didn’t take the offer, what if this was the only offer I would receive for several months? I ended up taking the offer, and I am happy with my decision. I wanted to get paid to code!

我决定在第一天开始工作9个月零7天后才决定接受我的第一份工作,当时我决定打算先去编程,以求改变职业。 第一次面试后我收到了一份报价,我对此充满信心,但是同时,如果我不接受报价,那这是我几个月以来唯一收到的报价,该怎么办? 我最终接受了报价,对自己的决定感到满意。 我想获得代码付款!

忠告 (Advice)

Up to this point, I have mostly shared my story with some advice sprinkled in. Chances are if you’re reading this, you either are thinking about changing careers or are in the middle of learning to code with the intent of changing careers. I hope that the advice below will help you develop a plan or stick with your current plan and reach your goal.

到现在为止,我大部分时间都在分享我的故事,并附有一些建议。如果您正在阅读本文,那么您可能正在考虑改变职业,或者正在学习以改变职业为目的的编码。 我希望下面的建议可以帮助您制定计划或坚持当前的计划并达到目标。

  1. Find out what motivates you and use it to your advantage. For me, it was checklists, documenting my progress, and interacting with various programming communities. If you are not motivated to reach your goal, then nothing else matters because you won’t finish.

    找出激发您动机的因素,并利用它来发挥自己的优势。 对我而言,这是清单,记录了我的进度,并与各种编程社区进行了互动。 如果您没有动力去实现自己的目标,那么别的都不重要,因为您不会完成任务。

  2. Make goals and meet them. I would argue that you should have monthly goals and maybe even daily goals. Monthly goals to make sure you are on track to meet your main goal, and daily goals to make sure that you actually make daily progress. One strategy that worked for me was to make my daily goals the night before. That way, you can’t do unproductive work all day and feel like you made progress when you really didn’t. It forces you to compare your daily accomplishments with your daily goals.

    制定目标并实现目标。 我认为您应该有每月目标,甚至每天目标。 每月目标可确保您按计划实现自己的主要目标,而每日目标可确保您实际取得日常进展。 对我有用的一种策略是在前一天晚上设定我的日常目标。 这样一来,您就不可能整天从事非生产性的工作,而实际上却并没有取得进展。 它迫使您将日常成就与日常目标进行比较。

  3. Go to meetups way before you think you are ready. Going to meetups can feel scary, but as I mentioned above. But, in general everyone is nice and willing to help. You might find people that aren’t interested in talking with you, but they are the minority and no one will be judgmental. Also, everyone loves to give advice (like I’m doing right now).

    在您准备好之前就去聚会。 参加聚会可能会让人感到恐惧,但如上所述。 但是,总的来说,每个人都很友好,乐于助人。 您可能会发现对与您交谈不感兴趣的人,但是他们是少数,没有人会判断。 另外,每个人都喜欢提供建议(就像我现在正在做的那样)。

  4. Contribute to open source way before you think you are ready. When you first start programming, Github seems like this scary place that you never want to go to. It is actually very welcoming to beginners and is a great place to see good code and get your own code reviewed. If you’re still not convinced, check out my post, Why you should contribute to open source right now.

    在您准备好之前就为开源方式做贡献。 刚开始编程时,Github似乎是一个您永远不想去的可怕地方。 实际上,它对初学者非常欢迎,并且是查看良好代码并检查您自己的代码的好地方。 如果您仍然不确定,请查看我的帖子“ 为什么现在就应该为开源做贡献” 。

  5. Start applying way before you think you are ready. This one was tough for me because I thought I was different. I thought I didn’t need to test the market to get a feel for what to work on. I thought I would know when I would be ready to apply. I’m telling you right now. You will not know when to apply. So you might as well start now. You shouldn’t go crazy and apply to 300 companies before you learn for loops. But you should know that the best way to know what you need to learn is by applying and testing the market.

    在您准备就绪之前就开始申请。 这对我来说很难,因为我以为自己与众不同。 我以为我不需要测试市场就能了解要做什么。 我以为我知道什么时候可以准备申请。 我现在告诉你。 您将不知道何时申请。 因此,您不妨现在开始。 在学习循环之前,您不应该发疯并申请300家公司。 但是您应该知道,了解您需要学习的知识的最佳方法是通过应用和测试市场。

Now get back out there and code!

现在回到那里进行编码!

翻译自: https://www.freecodecamp.org/news/how-i-went-from-newbie-to-software-engineer-in-9-months-while-working-full-time-460bd8485847/

月中工作总结

月中工作总结_在全职工作的9个月中,我是如何从新手转到软件工程师的相关推荐

  1. 入职后发现公司是外包全职_我如何通过全职工作,伴侣和3岁的双胞胎男孩打造产品...

    入职后发现公司是外包全职 by Courtney 通过考特尼 我如何通过全职工作,伴侣和3岁的双胞胎男孩打造产品 (How I built my product with a full-time jo ...

  2. 调查:区块链游戏玩家将玩NFT游戏视为一份潜在的全职工作

    NFT游戏平台Balthazar的首席执行官表示,"许多人准备辞去其他工作,改玩NFT游戏." 尽管非同质化代币(NFT)的价格有所下降,但随着越来越多的人将其视为一种潜在的谋生方 ...

  3. 学了Python不做全职工作,那么可以靠哪些兼职赚到钱?

    如果学了Python不做全职工作,那么可以靠哪些兼职赚到钱? 今天我们就来看看一位有着4年开发经验的老鸟的分析回答,希望对你有所帮助. emmm- 以我差不多四年的 Python 使用经验来看,大概可 ...

  4. 放弃全职工作,出来成为”自由职业者”的利和弊

    近期一直在关注一些自由职业者的工作状态,也在读相关的一些资料,这里将一些读书的笔记分享给大家,也是关于自由职业者的利弊分析. 利: 1.自由职业最大的好处莫过于可以自由支配自己的时间,不用朝九晚五打卡 ...

  5. 设计师选择自由职业好还是全职工作好

    作为全职和自由职业游离了很久的设计师,从给人做Banner.安装开源程序.论坛插件,到做完整的网站策划.SEO.UI等,在自由的状态中保持了高速的成长和学习了非常多的技能.而全职的起点是在刚上大二,被 ...

  6. excel链接隐藏工作表_自动隐藏Excel工作表

    excel链接隐藏工作表 When you build a workbook for other people to use, there might be worksheets that can s ...

  7. 深度学习工作开展_深入开展深度工作:新经济中的两项核心能力

    深度学习工作开展 by Bar Franek 由Bar Franek 深入开展深度工作:新经济中的两项核心能力 (Going Deeper on Deep Work: Two Core Abiliti ...

  8. 入职 3 天“窃取”上万个代码文件,特斯拉起诉前软件工程师!

    作为技术人,需要时刻谨记版权意识. 作者 | 苏宓 出品 | CSDN(ID:CSDNnews) 今年 1 月初,特斯拉在雇用一名软件自动化工程师后,立即进行解雇处理,原因是特斯拉发现该名员工涉嫌窃取 ...

  9. 刚入职新公司做一些什么贡献_如果您有全职工作,如何为Kubernetes做贡献

    刚入职新公司做一些什么贡献 当我在IBM产品安全事件响应团队工作时,我于2018年10月开始为Kubernetes (K8s)做出贡献. 我被分布式系统所吸引,但在日常工作中无法与它们合作,因此我的导 ...

最新文章

  1. html制作滚动游戏,HTML标签marquee实现滚动效果的简单方法(必看)
  2. 基于 Module 的 Laravel API 架构
  3. 强java_Java (强/弱/软/虚)引用
  4. 论文浅尝 - ACL2020 | 通过集成知识转换进行多语言知识图谱补全
  5. flex 下对齐_Flex 布局示例
  6. Django基础之Form
  7. 给hadoop 2.7.1 定制树莓派参数
  8. 图像形状特征(七)--Zernike矩
  9. vue判断设备是手机端还是pc端
  10. android lint
  11. 船舶导航软件测试,北斗卫星船舶定位及信息通信应用
  12. 逍遥模拟器获取服务器信息出错,逍遥模拟器不能连上网怎么办?两招解决问题...
  13. 【抽样技术】CH2 简单随机抽样
  14. 木纹标识lisp_lisp:关于标识符:原子和列表初步
  15. Mybatis-Plus 传入时间查询的方式
  16. python使用while循环语句计算GDP
  17. 练习-Java类和对象之对象组合之求圆锥体表面积
  18. 计算机二级心得体会论文,学习计算机二级心得体会.docx
  19. vad算法 c语言,腾讯视频cKey算法
  20. 基于SpringBoot+Vue的在线音乐网站 音乐管理系统(源码调试+文档)

热门文章

  1. 关于DC-DC电源的总体概述
  2. 怎么复制一台虚拟机到另外一台电脑上
  3. 统信uos 没有通过系统安全验证,无法运行
  4. 墨天轮沙龙 | 麦杰科技卢学东:openPlant 实时数据库系统及应用
  5. 推荐一本好书《 Java程序员 上班那点事儿》
  6. Flooded! POJ - 1877 模拟题
  7. js实现微信表情回显
  8. python后面空格报错_python空格报错
  9. Ubuntu18.04与RTX1080Ti安装深度学习框架
  10. 你永远不知道用户怎么使用你的产品