使用mit协议的编程语言
In 2012, I was just a village boy from Nigeria who had nothing but a dream and a Nokia feature (J2ME) phone. Today, I’m a 19 year old Android developer who has worked on over 50 apps and currently works for an MIT startup. My name is Elvis Chidera and this is my story.
2012年,我只是尼日利亚的一个乡村男孩,除了梦想和诺基亚功能(J2ME)手机,别无他物。 今天,我是一位19岁的Android开发人员,已经开发了50多个应用程序,目前在MIT初创公司工作。 我叫Elvis Chidera ,这是我的故事。
My journey began with my curiosity about how to build a website. Growing up, I spent a lot of time online as I loved downloading games and reading Society Of Robots. I would save for weeks to buy a 10 MB internet bundle for 100 Naira ($0.28), and back in 2012, that could last for a month.
我的旅程始于我对如何建立网站的好奇心。 长大后,我花了很多时间上网,因为我喜欢下载游戏并阅读机器人学会 。 我将节省数周的时间,以100奈拉(0.28美元)的价格购买10 MB的互联网捆绑包,而在2012年,这可能会持续一个月。
When learning to code, I took the first and simple step of doing a Google search about how to build a website. I got millions of results. Not knowing where to start, I clicked on the first link I saw, which was from W3CSchools.
在学习编码时,我迈出了第一步和简单的步骤,即进行有关如何构建网站的Google搜索。 我得到了数百万个结果。 不知道从哪里开始,我单击了看到的第一个链接,该链接来自W3CSchools 。
The article explained that I need to learn some languages (HTML and CSS) to be able to build a website. I checked some other resources to confirm that I actually needed to learn these things. Then I started the W3CSchools HTML and CSS course.
文章解释说,我需要学习一些语言(HTML和CSS)才能建立网站。 我检查了其他一些资源,以确认我确实需要学习这些东西。 然后,我开始了W3CSchools HTML和CSS课程。
Each day after school I would head over to the website to study. Initially, the code examples and explanations didn’t make much sense to me. But I kept studying regardless. I referred to various tutorials when I was stuck. This helped me view the problems I encountered from many different angles.
每天放学后,我都会去网站学习。 最初,代码示例和解释对我来说没有多大意义。 但是我一直在学习。 当我陷入困境时,我提到了各种教程。 这帮助我从多个角度查看了遇到的问题。
When I was younger, I struggled with my reading and writing skills in school. I was only able to get better at them through continuous practice. So I already had this model in my head: if I continue to practice — no matter how long it takes — I will ultimately be able to understand these programming languages.
小时候,我在学校的阅读和写作技能上挣扎。 我只有通过不断的练习才能使他们变得更好。 所以我已经有了这个模型:如果我继续练习-无论花费多长时间-我最终都将能够理解这些编程语言。
A few months of intensive learning got me acquainted with HTML, CSS, and JavaScript. While I was still learning, a friend showed me the movie “The Social Network.” And after watching it, I was super motivated to build the next big thing. Thank you, Hollywood.
几个月的深入学习使我熟悉了HTML,CSS和JavaScript。 在我仍在学习时,一个朋友给我看了电影《社交网络》。 看完之后,我非常有动力去建造下一件大事。 谢谢好莱坞。
I had a eureka moment a few days later. The idea was to build a better version of Facebook. At that time, you couldn’t see your Facebook friends that were online. Also, Facebook was built to connect with people you already knew in real life.
几天后,我有一个尤里卡的时刻。 这个想法是建立一个更好的Facebook版本。 那时,您看不到在线的Facebook朋友。 此外,Facebook的建立是为了与您在现实生活中认识的人建立联系。
So that was my billion dollar startup idea: build a social network with all the features Facebook didn’t have. Mark Zuckerberg - I’m coming for you - or so I thought.
那就是我十亿美元创业公司的想法:建立一个Facebook不具备的所有功能的社交网络。 马克·扎克伯格(Mark Zuckerberg)-我来找你-还是我想。
I spent the next few months building a better social network by adding any feature I could even think of using.
在接下来的几个月中,我通过添加甚至可以想到的任何功能来构建更好的社交网络。
I was naively confident that I was going to win.
我天真地相信自己会赢。
After completing the project, I did what anybody without an advertising budget would do. I spammed the internet for days and days.
完成项目后,我做了没有广告预算的任何人都会做的事情。 我几天又几天都在互联网上发送垃圾邮件。
After several days of marketing, reality slapped me hard in the face. I only got 200 users, which I had to keep begging to come back to the site.
经过几天的营销,现实使我难堪。 我只有200个用户,我不得不一直恳求回到网站。
I was depressed! A few months of hard work spent in vain. This taught me two important lessons the hard way:
我很沮丧! 几个月的辛苦工作白费了。 这给了我两个艰难的教训:
-
I needed to recognize the cold start AKA chicken and egg problem that new platforms face early on.
我需要认识到新平台早期面临的冷启动AKA鸡肉和鸡蛋问题 。
-
I was building something I thought people needed. But I ended up building just another feature factory.
我正在构建一些我认为人们需要的东西。 但是我最终只是建立了另一个功能工厂 。
While it’s okay to be motivated by a project, you also need to know when you’re headed down a dead end. I spent a few more months trying to see if I could get more people on my site, but retention numbers kept dancing toward 0%, and I eventually gave up on the project.
尽管可以通过一个项目来激励,但是您还需要知道何时陷入困境。 我花了几个月的时间来看看是否可以在我的网站上吸引到更多的人,但是保留率一直保持在0%左右,因此我最终放弃了该项目。
But I was motivated by the motto of Lewis in Meet the Robinsons, “Keep moving forward.”
但是我受到刘易斯(Lewis)在见面鲁滨逊(Robinsons)中的座右铭的激励,“继续前进”。
Seeking inspiration for my next project, I reflected on the needs of my local community. This time around, I wanted to build something that people actually needed and are willing to pay for.
在我的下一个项目中寻求灵感时,我反思了当地社区的需求。 这次,我想构建人们实际需要并且愿意支付的东西。
I came up with an idea to make text messages cheaper and easier to send to multiple people at a time. This was more like Whatsapp backed by SMS. After speaking to different people about it, I decided this was the next thing to do.
我想到了一种使短信更便宜,更容易一次发送给多个人的想法。 这更像是SMS支持的Whatsapp。 与不同的人交谈之后,我决定这是下一步。
I named the project Xmx Me. It was going to be a J2ME app. This meant I had to learn Java. Looking back in time, I have to admit that it was the biggest challenge I’d yet encountered. I had to read some tutorials several times to fully understand them.
我将项目命名为Xmx Me。 这将是一个J2ME应用程序。 这意味着我必须学习Java。 回顾过去,我不得不承认这是我迄今为止遇到的最大挑战。 我必须阅读一些教程才能完全理解它们。
After completing a few Java courses, I was ready for work. Relentlessly typing one line of code after another, I carefully built the backend with PHP, the frontend with HTML and CSS, and the mobile app with J2ME. The app was coming to life.
完成一些Java课程之后,我就可以开始工作了。 我不停地键入一行代码,我用PHP精心构建了后端,使用HTML和CSS构建了前端,并使用J2ME构建了移动应用程序。 该应用程序栩栩如生。
But here’s the thing — I didn’t own a laptop. I was building out all of these pieces of my app on my J2ME feature phone.
但是,这件事-我没有笔记本电脑。 我正在J2ME功能手机上构建所有这些应用程序片段。
Wait. What?
等待。 什么?
You read that right.
您没看错。
我如何在功能手机上构建生产应用程序 (How I built my production apps on a feature phone)
At this point in my life, I had never actually programmed on a laptop. I simply couldn’t afford one. My parents wanted to help me. But it was difficult for them because they had to choose between paying my school fees (and other necessities) versus buying me a laptop.
在我生命中的这一点上,我从未真正在笔记本电脑上编程过。 我根本买不起。 我的父母想帮助我。 但是对他们来说很难,因为他们不得不在支付我的学费(和其他必需品)与给我买笔记本电脑之间做出选择。
I hadn’t used a laptop before, and my only interaction with computers was at cyber cafes. I remember watching some videos about how to use a computer (left click, drag, drop, and other basic stuff) and then walking into a cyber cafe to practice them.
我以前没有用过笔记本电脑,而我与计算机的唯一互动是在网吧。 我记得记得看过一些有关如何使用计算机的视频(左键单击,拖放,拖放和其他基本操作),然后走进网吧进行练习。
I was lucky that a relative had gifted me a feature phone (The Nokia 2690). This phone changed my life. It’s what I used to develop Xmx Me, my failed social network, and several other projects.
我很幸运,有一位亲戚送给我一部功能手机( 诺基亚2690 )。 这部电话改变了我的生活。 这就是我用来开发Xmx Me,失败的社交网络以及其他几个项目的东西。
With nothing but a phone and the will to succeed, hour after hour I typed my code on that tiny keyboard. I was lucky again to have found an app that allowed me to compile my J2ME projects. Yes, building a J2ME app on a J2ME phone is possible.
一小时又一个小时,我只有一个电话和成功的意志,我在那个小键盘上输入了代码。 我再次很幸运地找到了一个可以编译我的J2ME项目的应用程序。 是的,J2ME手机上建立一个J2ME应用程序是可能的。
The SDK was resource hungry, so my battery often died. I would carry on, writing out all my code on paper and try to review it for any syntax errors.
SDK非常耗资源,所以我的电池经常没电了。 我会继续写所有我的代码在纸上,然后尝试检查它的语法错误。
I don’t think I’ll fail any Java whiteboard coding tests after having done this for so long. :)
在执行了这么长时间之后,我认为我不会在任何Java白板编码测试中失败。 :)
启动我的群组短信应用 (Launching my group SMS app)
After several months, I had the product ready. I was able to convince someone I met on an internet forum to help me pay for the website hosting and the bulk SMS service for a limited number of SMS units.
几个月后,我准备好了产品。 我说服了我在互联网论坛上遇到的某人,以帮助我为有限数量的SMS单位支付网站托管和批量SMS服务的费用。
The app launch went well — at least better than my first project. We got some local press, and one of Kenya’s top blogs even wrote about the app. We grew organically to about 5,000 users.
该应用程序的发布进展顺利-至少比我的第一个项目要好。 我们得到了一些当地媒体的报道,肯尼亚的顶级博客之一甚至撰写了有关该应用程序的文章 。 我们有机地增长到大约5,000个用户。
We were in business. And we were getting transactions a couple of times a day.
我们经商。 我们每天要进行几次交易。
With no prior experience running a business, I made some huge mistakes, some of which were:
没有以前的业务经验,我犯了一些大错误,其中一些是:
-
There was no easy way to charge users in Nigeria. Not everybody has a debit card. So I allowed people to pay using their mobile phone credit. The problem here was, there was no official way to convert this credit into money. I had to sell to vendors, who bought it back at a ridiculously low rates.
在尼日利亚没有向用户收费的简便方法。 并非每个人都有借记卡。 因此,我允许人们使用他们的手机信用额付款。 这里的问题是,没有官方的方法将这种信用转换为货币。 我不得不卖给卖方,卖方以低得离谱的价格买了回来。
-
There was little to no accounting. I was losing money and I didn’t know about it. I didn’t factor in some overhead costs. There were several missing pieces.
几乎没有会计。 我当时正在亏钱,我对此一无所知。 我没有考虑一些间接费用。 有几件遗失的物品。
I was considering selling the App to buy a laptop. Not knowing what to do, I went online to beg. Yes, I was that shameless and hungry. It didn’t turn out well. Somebody accused of being a scammer, which I eventually resolved. Again, I was inexperienced and I handled the situation poorly.
我当时正在考虑出售该应用程序以购买笔记本电脑。 不知道该怎么办,我上网乞求 。 是的,我那无耻又饿。 结果并不好。 有人指控我是骗子,但最终我解决了。 再次,我没有经验,我处理情况也很差。
After borrowing money multiple times to keep the business running, I decided to throw in the towel. Looking back, I think this was a bad decision. With a little more learning and experience, I would have been able to make things better. Maybe I didn’t see any future in an SMS app. Well, I released a throwback app recently, and many of the users still use it and love it.
在多次借钱以保持业务正常运行之后,我决定付诸东流。 回顾过去,我认为这是一个错误的决定。 有了更多的学习和经验,我本来可以使事情变得更好。 也许我没有在SMS应用程序中看到任何未来。 好吧,我最近发布了一个回退应用程序,许多用户仍在使用它并喜欢它。
我从中学到的教训 (Lessons I learned along the way)
I realized that if I was going to be able to afford a computer anytime soon, I would need to work hard for it. So I began saving all the money I could. I cut my daily expenses and lived as simple a life as possible. I asked my relatives for help. I even sold some personal belongings to raise money for the laptop.
我意识到,如果我很快就能买得起电脑,那我就需要努力工作。 所以我开始省下所有的钱。 我削减了日常开支,过着尽可能简单的生活。 我向亲戚求助。 我什至卖掉了一些个人物品来为笔记本电脑筹集资金。
Still, it wasn’t enough. Determined to achieve my goal, I took on a freelance job of building a website so I could earn the remaining sum.
但是,这还不够。 决心实现我的目标,我从事了建立网站的自由职业,因此我可以赚取剩余的钱。
How do you use a feature phone to build a website designed for PC users? Simple: have a Facebook friend who you disturb every night to view your website on his computer and give you feedback. It was cheaper than going to a cyber cafe repeatedly.
您如何使用功能手机建立专为PC用户设计的网站? 简单:有一个您每天晚上打扰您的Facebook朋友,可以在他的计算机上查看您的网站并提供反馈。 这比反复去网吧便宜。
I also made heavy use of Ideone which allowed me to run my PHP scripts to see if they work before uploading them.
我还大量使用了Ideone ,这使我可以在上载PHP脚本之前查看它们是否有效。
Well, I finally was able to get that laptop. I can still remember the feeling of joy I had. That smell of plastic when you unbox a brand new cheap computer. I could now work on any project I wanted without feeling restricted because of my phone.
好吧,我终于能够买到那台笔记本电脑。 我仍然记得我曾经的快乐。 当您拆开一台全新的廉价计算机时,那种塑料味。 现在,我可以从事自己想要的任何项目,而不会因为手机而受到限制。
Since J2ME devices were slowly dying out, I eventually switched to building for the Android platform. My Java skills were still relevant there. I just needed to learn some platform-specific things.
由于J2ME设备正在逐渐消失,因此我最终转而为Android平台进行构建。 我的Java技能在那里仍然很重要。 我只需要学习一些平台特定的知识。
The next year in 2015, after high school, I decided to start working to support my family. So I began freelancing. I was always active in local forums and groups, looking for people who wanted help with building an Android app.
2015年,第二年,高中毕业后,我决定开始工作以养家糊口。 于是我开始自由职业。 我一直很活跃在本地论坛和团体中,寻找在构建Android应用方面需要帮助的人。
Because I didn’t have a good portfolio, I would build apps for some people before they even paid, without any guarantee that I’d be paid. I was stung by this approach several times, but it allowed me to build a good enough portfolio.
因为我的投资组合不多,所以我会在某些人还没有付款之前就为他们构建应用程序,而不能保证我会得到报酬。 我多次被这种方法吓到,但它使我能够建立足够好的投资组合。
I would like to share something I wish I knew while I was freelancing:
我想分享一些我在自由职业时希望知道的事情:
Don’t spread yourself too thin. Taking up too many responsibilities is not good for your health, your family, or the clients.
不要让自己太瘦。 承担太多责任不利于您的健康,家庭或客户。
I worked with several clients from different parts of Nigeria who loved my work. I eventually got a full-time job in Lagos, Nigeria after working with a client remotely.
我与来自尼日利亚不同地区的几位热爱我的客户一起工作。 在与客户进行远程合作之后,我最终在尼日利亚拉各斯获得了一份全职工作。
Then, while going through my news feed, I saw a job advert for an Android developer position at Dot Learn. I looked them up and realized they are an MIT startup working in an education technology field that I was passionate about, and in a market I understood. They had a unique idea: to solve the problem of access to online education by making educational videos that are extremely data-light — as low as 1MB for every hour of video.
然后,在浏览新闻提要时,我在Dot Learn上看到了一个Android开发人员职位的招聘广告。 我查了他们,发现他们是一家麻省理工学院的初创公司,致力于我所热衷的教育技术领域以及我所了解的市场。 他们有一个独特的想法:通过制作极具数据强度的教育视频来解决在线教育的问题-每小时的视频低至1MB。
This was almost unbelievable, and I knew it was key to making education very accessible to a lot of people.
这几乎令人难以置信,而且我知道这对于使很多人都可以接受教育至关重要。
I am very passionate about revolutionizing education in Africa. In fact, I have already built a free (ad-supported) exam prep app called PrepUp that has over 35,000+ installs and was one of the finalists at the West Africa Mobile Awards in 2016. So I wanted to be part of what Dot Learn was building.
我对非洲的教育改革充满热情。 实际上,我已经开发了一个免费的(广告支持)考试准备应用程序PrepUp ,该应用程序安装量超过35,000,并且是2016年西非移动大奖的决赛入围者之一。 所以我想成为Dot Learn正在建设的一部分。
So I went through the developer job requirements and I felt I had a chance. But impostor syndrome didn’t want me to be great.
因此,我经历了开发人员的工作要求,并感到有机会。 但是冒名顶替综合症不希望我表现出色。
For days I had conflicting thoughts. Should I apply or not?
几天来,我一直有矛盾的想法。 我应该申请吗?
Then I realized one thing: I had nothing to lose.
然后我意识到一件事:我没有什么可失去的。
The worst that could happen would be that I got rejected. But I wouldn’t die. So, I went ahead and applied.
可能发生的最坏情况是我被拒绝了。 但是我不会死。 因此,我继续申请。
Fingers crossed, I started re-watching several of the videos I had downloaded from MIT OCW. I also spent some nights watching some coding interview solution videos. In the past, I had mostly been hired based on my strong portfolio and previous job experience, but I didn’t want to be caught off guard if they gave me a coding interview.
我不由自主地开始观看从MIT OCW下载的一些视频。 我还花了一些晚上看一些编码面试解决方案视频 。 过去,我主要是根据我强大的工作经验和以前的工作经验而被录用的,但是如果他们给我提供编码面试的机会,我就不会措手不及。
Well, long story short: after lots of preparation, answering some difficult questions, a phone interview, and some coding projects, I was accepted.
好吧,长话短说:经过大量的准备,回答了一些棘手的问题,进行了电话采访,并完成了一些编码项目,我被接受了。
I couldn’t believe it. I was ecstatic.
我简直不敢相信。 我欣喜若狂。
Looking back at it, this was one of my best decisions.
回顾过去,这是我最好的决定之一。
Working at Dotlearn, I have had exponential growth in my career and have met with lots of awesome people from MIT, Harvard, and other great places.
在Dotlearn工作期间,我的职业生涯呈指数级增长,并且结识了来自MIT,哈佛和其他好地方的许多很棒的人。
From attending big events like the Techcrunch Battlefield (I ended up missing my flight) to realizing I could rap, it’s been a fun and exciting experience so far.
从参加像Techcrunch战场这样的大事件(我最终错过了飞行)到意识到自己可以说唱,到目前为止,这是一种有趣而激动人心的经历。
最后说明 (Final Notes)
I know I’m just getting started, but the goal of my story is to inspire someone somewhere in a similar situation like me.
我知道我才刚刚起步,但是我故事的目的是激发像我这样的处境类似的人。
You can follow me on Twitter or on Medium for more updates. You can also connect with me on LinkedIn. Thanks.
您可以在Twitter或Medium 上关注我以获取更多更新。 您也可以在LinkedIn上与我联系 。 谢谢。
如果您喜欢这个故事,请单击“?”。 按钮并分享以帮助其他人找到它。 欢迎发表评论。 (If you enjoyed this story, please click the ? button and share to help others find it. Feel free to leave a comment.)
翻译自: https://www.freecodecamp.org/news/how-i-went-from-programming-with-a-feature-phone-to-working-for-an-mit-startup-40ca3be4fa0f/
使用mit协议的编程语言