美国 cs 工作_我是如何退出美国CS计划的,回到埃及,然后立即在一家公司获得了一份开发工作。...

美国 cs 工作

by Adham El Banhawy

由Adham El Banhawy

我如何退出美国CS计划,回到埃及,并立即在一家初创公司获得了开发工作 (How I dropped out of an American CS program, went home to Egypt, and immediately got a dev job at a startup)

If you haven’t read my earlier story about how I turned my life around by deciding to become a developer, thanks to freeCodeCamp, I advise you to do that now. I’ll give you some context so you’ll understand that this is not about me bashing CS degrees or admitting defeat.

如果您还没有阅读有关我如何通过决定成为一名开发人员来改变自己的生活的早期故事 ,那么感谢freeCodeCamp ,我建议您现在就这样做。 我会给您一些背景信息,以便您了解这不是关于我打击CS学位或承认失败。

In 2016, I had been working for a year with an Economics degree in a job that didn’t really challenge or fullfill me. I felt lost and depressed without passion, love, or a life goal. That part of my life is without a doubt the lowest and darkest time I have experienced. Although I came pretty close this year, but I’ll talk about that in a bit.

2016年,我在经济学学位工作了一年,而这份工作并没有真正挑战或满足我的需求。 没有激情,爱心或人生目标,我感到迷失和沮丧。 毫无疑问,我那段时间是我经历过的最黑暗和最黑暗的时间。 尽管我今年差一点儿,但是我会稍作讨论。

As I started writing this, I was on a plane going back to my country after dropping out of a US Computer Science degree. I couldn’t overstay my visa. I was literally going into the unknown, but with confidence and a sense of pride.

当我开始写这篇文章时,我离开美国计算机科学学位后正在回国。 我不能逾期签证。 我从字面上看待未知的事物,但是充满自信和自豪感。

And what do you know — within a few days of getting back home, I landed a developer job at a hot new startup. Here’s how I got there.

而且您知道吗?回到家后的几天里,我在一家热门的新创业公司找到了一名开发人员的工作。 这就是我到达那里的方式。

在美国的工作和学习 (Working and learning in the States)

我的第一份兼职工作 (My first part-time job)

2017 was for me one of the best years of my life. I decided to pursue an undergraduate degree in Computer Science and got my first web-developer job (part-time) while I was studying. I got great hands-on experience with web development, CMS, both the front-end and back-end, version control, and most importantly, I got to work as part of a team and got some great insights into best practices and automation tools.

2017年对我来说是我一生中最美好的一年之一。 我决定攻读计算机科学的本科学位,并在学习期间获得了第一份网络开发人员的工作(兼职)。 我在Web开发,CMS,前端和后端,版本控制方面都有丰富的动手经验,最重要的是,我成为团队的一部分,对最佳实践和自动化工具有深刻的见解。 。

It wasn’t easy being a newbie, but what I lacked in experience I made up for in confidence and genuine desire to learn and do better. By the end of the year, I felt like I was thriving with family and friends at work. I even introduced a new senior developer to our tools and helped him with some major tasks.

成为新手并不容易,但是我缺乏的经验弥补了我对学习和做得更好的自信和真诚的渴望。 到年底,我感觉自己在与家人和朋友一起工作时很兴旺。 我什至向我们的工具介绍了一位新的高级开发人员,并帮助他完成了一些主要任务。

But I’ve always known that my job wouldn’t be permanent. So I continued learning on my own online, toying with other frameworks like React, looking into DevOps tools like Docker, and working on my own personal projects in my free time.

但是我一直都知道我的工作不会是永久的。 因此,我继续在线上学习,与React等其他框架一起玩,研究Docker等DevOps工具,并在业余时间从事自己的个人项目。

我的大学经历 (My college experience)

But things weren’t all good. The first semester in my computer science program was a terrible horror show for me. I had been out of school for over a year and my previous degree was not engineering related. There was a lot of math involved, ranging from calculus to linear algebra to statistics.

但是,事情并非一帆风顺。 我的计算机科学课程的第一学期对我来说是可怕的恐怖表演。 我已经放学了一年多,以前的学位与工程无关。 数学涉及很多领域,从微积分到线性代数再到统计。

I found myself wondering quite often: where are the programming classes?!

我发现自己经常想知道:编程类在哪里?

I was asking myself that question a lot at the beginning. I was just average at math at that point. But those courses sharpened my brain a little to prepare me for advanced algorithms — the most important CS class, in my opinion.

我一开始就问自己很多问题。 那时我在数学上只是中等水平。 但是这些课程使我的大脑更加敏捷,为高级算法做准备-我认为这是最重要的CS课。

Now, since I’ve tried both, the main difference between studying algorithms in class and learning about them online is that it tends to be more theoretical and detailed in college courses. They make sure you understand how certain algorithms work, help you analyze their complexity, and encourage you to explore their efficiency in different problems.

现在,由于我已经尝试过这两种方法,因此在课堂上学习算法与在线学习算法之间的主要区别在于,大学课程中它倾向于更加理论化和详细化。 他们确保您了解某些算法的工作原理,帮助您分析其复杂性,并鼓励您探索它们在不同问题中的效率。

But most of all, it was summed up by my algorithms professor. He told us that,

但最重要的是,它是由我的算法教授总结的。 他告诉我们,

In this class you will learn how to develop your own algorithms to solve complex problems.
在本课程中,您将学习如何开发自己的算法来解决复杂的问题。

I remember my mind being blown away when I heard that. I realized then that I’d been thinking about algorithms and problem solving the wrong way. I used to think algorithms are a set of well defined techniques that needed to be followed and implemented correctly to solve traditional types of problems. When in reality what’s really out there are tried techniques used to come up with algorithms to solve or improve solutions to problems.

我记得当我听到那消息时,我的头脑被震撼了。 那时我意识到我一直在思考算法并以错误的方式解决问题。 我曾经认为算法是一套定义明确的技术,需要遵循并正确实施这些技术才能解决传统类型的问题。 实际上,确实存在尝试过的技术 ,这些技术可用来提出算法来解决或改进问题的解决方案。

Simply put, to be a good programmer/problem solver, you need to think about these techniques as tools you use to build your own solutions to problems. This approach to problem solving explains why memorizing and looking at answers to algorithm problems online doesn’t really help you become a better developer.

简而言之,要成为一名优秀的程序员/问题解决者,您需要考虑将这些技术视为用于构建自己的问题解决方案的工具。 这种解决问题的方法解释了为什么在线记住和查看算法问题的答案并不能真正帮助您成为更好的开发人员。

Other than that one crucial class, I think studying CS in college alone would have never made me a good developer. Granted, there were other important classes I was looking forward to, like Computer Networking and Computer Vision — but I didn’t get to them. But in general, there is a lack of practical experience and more emphasis on the theory.

除了那一门至关重要的课外,我认为仅在大学学习CS绝对不会使我成为一名优秀的开发人员。 当然,我还期待其他重要的课程,例如“计算机网络”和“计算机视觉”,但我没有参加。 但是总的来说,缺乏实践经验,并且更加注重理论。

Believe it or not, I took a class about databases in which we never even used a real database. It was all on paper. We did practice SQL statements, but for two weeks only. For the majority of people, that is not nearly enough to be proficient in SQL. However, I did learn high level database design. I think that is extremely important when trying to design efficient database schemas. And it’s recently saved me a lot of development time and given me a confidence boost.

信不信由你,我上了一堂关于数据库的课程,在其中我们甚至从未使用过真正的数据库。 全部都在纸上。 我们确实练习了SQL语句,但是只进行了两周。 对于大多数人来说,这还不足以精通SQL。 但是我确实学习了高级数据库设计。 我认为在尝试设计有效的数据库架构时这非常重要。 最近,它节省了我很多开发时间,并给了我信心。

At any rate, I would assume most of the major courses are like that…but I don’t know for sure, since I ran out of money before completing them.

无论如何,我认为大多数主要课程都是这样的……但是我不确定,因为我在完成课程之前就花光了钱。

我的个人项目和课外活动 (My personal projects and extracurricular activities)

This is what made the entire experience so worthwhile. I went to hackathons, participated in coding-related student groups, met up with local developer communities, and took online courses and challenges. I know it sounds like I didn’t have a life outside of my computer, but that’s not true. I did try to have a balanced life, and I hung out with friends, went hiking, worked out, and so on.

这就是使整个体验如此有价值的原因。 我参加了黑客马拉松,参加了与编码相关的学生团体,会见了本地开发人员社区,参加了在线课程和挑战。 我知道听起来好像我的电脑上没有生命,但这不是事实。 我确实尝试过一种平衡的生活,然后和朋友出去玩,远足,锻炼等等。

Ultimately I loved doing what I do best — mini projects. I spent countless hours reading documentation — Python, Google APIs, ReactJS, JavaScript, MongoDb, Java, Node.js, AWS, and the list goes on.

最终,我喜欢做自己最擅长的工作-小型项目。 我花了无数小时来阅读文档-Python,Google API,ReactJS,JavaScript,MongoDb,Java,Node.js,AWS,并且清单还在继续。

I always tried to make little programs that helped me with otherwise manual tasks to reinforce my learning — and it all paid off. I was always the most experienced coder in the three hackathons I attended (and my team got second place at one of them!). I never really stopped learning or doing projects, and to this day I don’t plan on stopping anytime soon.

我一直试图编写一些小的程序来帮助我完成其他手动任务以增强我的学习能力,并且这些程序都得到了回报。 在参加过的三场黑客马拉松比赛中,我一直是最有经验的编码员(我的团队在其中一场比赛中获得第二名!)。 我从来没有真正停止学习或做过项目,直到今天,我也不打算很快停止学习。

I think doing personal or side projects are as important to developers of all skill levels as physical exercise is to all athletes — it helps us stay in shape and take on new challenges.

我认为,进行个人或副项目对所有技能水平的开发者都与体育锻炼对所有运动员一样重要,这有助于我们保持身材并应对新挑战。

我的新现实 (My New Reality)

I finished writing this post a few weeks after I landed back home. It’s so good to be home with family and old friends, and to be free of all the stress of living abroad. I thought I would find it tough to find a job quickly in Egypt.

我回到家几周后才写完这篇文章。 能够与家人和老朋友在一起,摆脱在国外生活的所有压力,真是太好了。 我以为我很难在埃及Swift找到工作。

I’ll be OK, I thought to myself. I’ll just continue taking advanced theoretical courses online for free, and work as a freelance developer until I get a stable job. At least I can take a break to relax. But, work found its way to me before I got my well-deserved break.

我会好起来的,我心想。 我将继续免费在线学习高级理论课程,并​​以自由开发人员的身份工作直到获得稳定的工作。 至少我可以休息一下。 但是,在我得到应有的休息之前,工作就已经找到了。

Not two days after going home to live with my parents, an old friend of mine who had just started a startup asked me to come to his company. He wanted me to check out his work and team and give him some advice regarding how to manage his team and codebase.

回家与父母住在一起不到两天,我的一个老朋友刚刚创办了一家初创公司,要求我来他的公司。 他希望我检查一下他的工作和团队,并给他一些有关如何管理他的团队和代码库的建议。

I thought of it as a free consulting gig that I would do as a favor, which I was OK with. I introduced some team management tools I’d used at work before, and shared some agile management strategies that he liked.

我认为这是一次免费的咨询工作,我会帮我一个忙,我同意。 我介绍了一些以前在工作中使用过的团队管理工具,并分享了他喜欢的一些敏捷管理策略。

When I looked at the code, (AngularJS + ASP.NET), I was met with horrendous spaghetti code, with almost no documentation at all. I pointed the issue out, started some documentation, and re-factored some of the code — which led to 30% less code and improved readability.

当我查看代码(AngularJS + ASP.NET)时,遇到了可怕的意大利面条代码 ,几乎没有文档 。 我指出了这个问题,开始了一些文档,并重构了一些代码,这使代码减少了30%,并提高了可读性。

That might sound fancy, but I basically reduced repetitive and redundant code, and placed lines of code that did a specific functionality into their own functions that could be reused.

这听起来似乎很花哨,但是我基本上减少了重复和冗余的代码,并将执行特定功能的代码行放入自己的函数中,以供重用

My friend saw value in keeping me, so he offered me a full-time fullstack developer position. And I agreed — he is my friend after all. It’s been almost two months, and I’ve learned a lot on the job, including AngularJS, C# and ASP.NET (I’d come from a ReactJS background).

我的朋友看到​​保留我的价值,因此他为我提供了一个全职的全职开发人员职位。 我同意-他毕竟是我的朋友。 已经快两个月了,我在工作上学到了很多东西,包括AngularJS,C#和ASP.NET(我来自ReactJS背景)。

反思与里程碑 (Reflections & Milestones)

So now that I’m at this new job, you might wonder: was it hard to jump into using new frameworks and a complicated codebase so fast? Well, it was never going to be easy, even if I was a seasoned senior developer. Looking at spaghetti code in any language or framework is always confusing and exhausting. But I’ve loved improving it, and in the process it reinforced my knowledge of Angular and .NET frameworks.

因此,既然我现在从事这项新工作,您可能会怀疑:很难这么快地使用新框架和复杂的代码库吗? 好吧,即使我是一个经验丰富的高级开发人员,这也绝非易事。 用任何语言或框架查看意大利面条代码总是令人困惑和疲惫。 但是我一直喜欢改进它,在此过程中,它增强了我对Angular和.NET框架的了解。

I consider myself lucky, because the startup scene in Egypt is booming just like it is in the States. I get to wear different hats at work, so it’s not always development and coding that I’m doing. I get to help shape the marketing strategy, manage social media accounts, and go to networking events to pitch our product.

我认为自己很幸运,因为埃及的创业现场像美国一样蓬勃发展。 我在工作中会戴上不同的帽子,所以我做的并不总是开发和编码。 我将帮助制定营销策略,管理社交媒体帐户,并参加社交活动来推销我们的产品。

I remember setting out two goals for myself when I first started to learn to code.

我记得我刚开始学习编码时为自己设定了两个目标。

  • I wanted to become a front-end developer. I reached that milestone surprisingly quickly, just 2 months after starting the freeCodeCamp curriculum, by getting a part-time web developer job.

    我想成为一名前端开发人员。 在开始freeCodeCamp课程后仅两个月,我就通过获得兼职的Web开发人员工作而Swift达到了这个里程碑。
  • I wanted to become a fullstack developer after doing the back-end challenges on freeCodeCamp. I gave myself a year to get a back-end job, but I still managed to exceed my own expectations and got it sooner than I thought earlier this year.

    在freeCodeCamp上进行后端挑战后,我想成为一名全栈开发人员。 我给自己一年的时间来从事后端工作,但是我仍然设法超出了自己的期望,并且比今年早些时候想到的要早。

I still don’t think this is going to be a permanent job position for me. Although I love the work, I need to reach the next milestone that I set out for myself: become an experienced machine learning engineer by the end of next year.

我仍然认为这不会成为我的永久职位。 尽管我热爱这项工作,但我仍需要达到我为自己设定的下一个里程碑 :在明年年底成为一名经验丰富的机器学习工程师。

Wish me luck!

祝我好运!

Follow me on twitter @adham_benhawy

在Twitter上关注我@adham_benhawy

翻译自: https://www.freecodecamp.org/news/how-i-dropped-out-of-an-american-cs-program-went-home-to-egypt-and-immediately-got-a-dev-job-at-a-de8b0a854f58/

美国 cs 工作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值