軟件自學成才到公司要學歷嗎
In this post, I'll share my entire journey about how I became a professional mobile developer.
在這篇文章中,我將分享我如何成為一名專業的移動開發人員的整個過程。
I hope that reading about my experience will help you reflect on your present and your future, and will either help you start your career as a developer or motivate you to move forward in achieving your goals.
我希望閱讀有關我的經驗可以幫助您反思自己的現在和未來,或者可以幫助您開始作為開發人員的職業生涯,或者可以激勵您朝著實現目標的方向前進。
我的大學學位以及這一切的開始 (My university degree and how it all started)
I finished high school with a mathematics-informatics degree in a small town in Romania.
我在羅馬尼亞的一個小鎮讀完了數學信息學學位的高中。
Like most of my friends, you had two choices in terms of cities to go to for university. I chose Bucharest, the capital of Romania.
像我的大多數朋友一樣,就大學而言,您有兩種選擇。 我選擇了羅馬尼亞首都布加勒斯特。
I grew up thinking that university is a mandatory thing. That probably happens in most countries.
我從小就以為大學是必修課。 在大多數國家,這種情況可能會發生。
All our parents want it for us.
我們所有的父母都希望得到我們。
I never felt a desire to choose a specific degree. Sound familiar? Never saw myself working as something after I graduated.
我從未想過要選擇特定學位。 聽起來有點熟? 畢業后再也沒有看到過自己的工作。
In the end, I chose to go to an economics university in Bucharest. Again there were two options. One was considered a good university, and another where you would pay a lot of money just to get a degree.
最后,我選擇去布加勒斯特的一所經濟學大學。 同樣,有兩個選擇。 一所大學被認為是一所好大學,另一所大學則為獲得學位而付出很多錢。
I took some exams at the first one, without studying, to be honest. And obviously I did not pass.
老實說,我在不參加學習的情況下第一次參加了一些考試。 而且顯然我沒有通過。
I had to go with the second option.
我不得不選擇第二種選擇。
Fast forward and I graduated from my economics university. But I graduated two years late. I never had a passion for economics and never saw myself working as a banker. I always thought I wanted to get the diploma, and that's it.
快進,我畢業于經濟學大學。 但是我畢業晚了兩年。 我從未對經濟學充滿熱情,也從未見過自己是銀行家。 我一直以為我想拿文憑,僅此而已。
I never considered how much I paid for that useless degree, but I needed a diploma to be accepted by society, right?
我從來沒有考慮過為那個無用的學位支付多少錢,但是我需要一個文憑才能被社會接受,對嗎?
I was a failure, with an economics degree, but no experience or knowledge. In the following years, with the help of my family, I managed to create two businesses that failed, too.
我是一個失敗者,擁有經濟學學位,但沒有經驗或知識。 在接下來的幾年中,在家人的幫助下,我也成功創建了兩家失敗的企業。
I will not discuss those in the story, but let's just say that I learned a lot. I also played online poker, and I was pretty good at it.
我不會在故事中討論這些內容,而只是說我學到了很多東西。 我也玩在線撲克,我非常擅長。
Seven years after graduating from high school I found myself with no job experience, no successful business, and no money.
高中畢業七年后,我發現自己沒有工作經驗,沒有成功的生意,也沒有錢。
I knew I had to take action, and I knew that all my dreams about having a successful business would not happen soon unless I had a backup plan.
我知道我必須采取行動,而且我知道,除非有備用計劃,否則我關于成功經營的所有夢想不會很快實現。
That's when I thought:
那是我想到的時候:
What job can I get that will make me happy, pay me well, and allow me to have a good life at 30 - 40 years old, even if I never manage to create my own business?
即使我從未成功創立自己的公司,我能獲得什么工作使我快樂,薪水豐厚,并讓我在30至40歲的時候過上美好的生活?
The only answer that came to mind was programming. I had some prior experience in high school and built a few websites.
想到的唯一答案是編程。 我在高中時曾有過一些經驗,并建立了一些網站。
There was only one problem – I did not like mathematics in high school, and I always thought that I would not be able to learn professional programming without an excellent understanding of it.
只有一個問題–我不喜歡高中的數學,而且我一直認為,如果沒有很好的理解,我將無法學習專業編程。
I was wrong.
我錯了。
There are probably a lot of people like me, people who have the same thoughts and doubts. But all you have to do is take action and start learning.
可能有很多人像我一樣,都有相同的想法和懷疑。 但是您要做的就是采取行動并開始學習。
學習Android和Java (Learning Android and Java)
It was 2014 when I first started looking into the idea to learn to code.
在2014年,我第一次開始研究學習編碼的想法。
First thing I did was to Google for some courses in Bucharest, and I found a company that invited me to their offices. I went there, and I remember they had a lovely furnished office with a lot of iMACs. I told myself, "That's what I need."
我做的第一件事是去Google在布加勒斯特(Bucharest)學習一些課程,然后我找到了一家公司邀請我去他們的辦公室。 我去了那里,我記得他們有一個布置精美的辦公室,里面裝有很多iMAC。 我對自己說:“這就是我所需要的。”
Ten minutes later I found that they were doing all their courses online and that it was more like an office to sell the course rather than do the course.
十分鐘后,我發現他們正在在線上所有課程,這更像是辦公室出售課程而不是進行課程。
I don't remember the exact price, but it was around 1500 - 2000 USD. I didn't take it.
我不記得確切的價格,但是大約是1500-2000美元。 我沒有
I let go of the idea for a few months, then 2015 came. New year, new plans, new life, you know?
我放棄了幾個月的想法,然后是2015年。 新年,新計劃,新生活,你知道嗎?
I started to look into an in person course again, and found out that they were called bootcamps.
我再次開始親自考察課程,發現它們被稱為訓練營。
Discovered one in Bucharest and they were doing Java, and it only cost around 800 USD for four months. It would be a few hours a day with a teacher and other students.
在布加勒斯特發現了一個,他們正在做Java,四個月的費用只有800美元左右。 一個老師和其他學生每天要幾個小時。
Looking back, I think they were cheap for what they offered, but I think we were the second batch they had.
回顧過去,我認為它們的價格相對便宜,但我認為我們是第二批產品。
They were telling us all kinds of things about being hired after the bootcamp, but I did not care.
他們告訴我們有關訓練營后被錄用的各種事情,但我不在乎。
I wanted to learn to code, and I thought that I would manage to find a job quickly after just a few months. I was right, but it was not as easy as I thought.
我想學習編碼,而且我認為短短幾個月后,我將很快找到工作。 我是對的,但這并不像我想的那么容易。
The classes started. They always told us that it is not enough to do only lessons during our hours together.
課程開始了。 他們總是告訴我們,僅僅在我們的時間里上課是不夠的。
I tried to listen. But at home, things never made sense. Programming was hard, and I often thought that I would not be able to finish the bootcamp.
我試著聽。 但是在家里,事情從來都沒有道理。 編程很辛苦,我常常以為我無法完成訓練營。
I pushed myself harder and harder. It was one month into the courses when I found that we were going to learn Java with Android, but again, I did not care. I was falling in love with Eclipse and things happened on the screen as we coded.
我越來越努力地推動自己。 當我發現我們打算使用Android學習Java時,已經上了一個月的課程,但是我又不在乎。 我愛上了Eclipse,并且在編碼時屏幕上發生了事情。
Eclipse is an Integrated Development Environment that was originally used to develop for Android. Now we use Android Studio.
Eclipse是最初用于Android開發的集成開發環境。 現在我們使用Android Studio。
It was hard. Lesson after lesson I was trying to learn variables, classes, inheritance, encapsulation, for loops, and so on.
那個挺難。 上課后,我試圖學習變量,類,繼承,封裝,for循環等。
But I struggled. I didn't have a clear picture of how I could use all these in a bigger app. It did not make sense a lot of times.
但是我掙扎了。 對于如何在更大的應用程序中使用所有這些功能,我沒有清楚的了解。 很多時候沒有意義。
If you just started programming and you feel the same, I want you to know that it's normal.
如果您剛剛開始編程并且感覺相同,我希望您知道這是正常的。
Our mentors always told us: "You do not have to know all these off top of your head. Just try to understand what they are and how you can use them."
我們的導師總是告訴我們:“您不必完全了解所有這些內容。只需嘗試了解它們是什么以及如何使用它們即可。”
They were right, but I found that out later. At that specific moment in time, it did not help.
他們是對的,但后來我發現了。 在那個特定的時間,它沒有幫助。
One thing which I regret is that I did not do projects from the beginning. I always thought that I needed a teacher and that you cannot learn anything online on your own. I was lazy and again, wrong.
我后悔的一件事是我從一開始就沒有做過項目。 我一直以為我需要一位老師,而且您不能獨自在線學習任何東西。 我又懶又錯。
After four months, I managed to make my first "non-working" app. It was an app where students could rent rooms from other students or people.
四個月后,我設法制作了我的第一個“不工作”應用程序。 這是一個應用程序,學生可以在其中租用其他學生或其他人的房間。
I said "non-working" because it did not have any backend or any users. It was more like a demo app that was using some SQLite for storing data.
我說“不工作”是因為它沒有任何后端或任何用戶。 它更像是一個演示應用程序,它使用一些SQLite來存儲數據。
I was proud of it, because a few months before, I never imagined I could do it.
我為此感到自豪,因為幾個月前,我從未想象過我能做到。
The bootcamp finished, and I don't think I ever spoke with anyone from their management again.
訓練營結束了,我認為我再也沒有與他們管理層的任何人交談過。
Not sure if they tried to get me a job, or maybe they thought I was not good enough for a career as a developer.
不知道他們是否試圖讓我找到工作,或者他們認為我不足以從事開發人員的職業。
初次面試和作為初級Android開發人員的第一份工作 (First interviews and first job as a Junior Android Developer)
I started interviewing, and I remember that my first one was for a Java role at a big international company located in Bucharest. (Hint: they have over 300,000 employees, and their revenue from 2019 was about 77 billion.)
我開始面試,我記得我的第一個是在布加勒斯特的一家大型國際公司擔任Java職位的。 (提示:他們有30萬員工,從2019年起他們的收入約為770億。)
I did not take the interview, but I think that the conversation was a good one. I probably wasn't hired because I didn't have any experience.
我沒有參加面試,但我認為談話是一場很好的談話。 我可能沒有被錄用,因為我沒有任何經驗。
After that, it took me another month to get the next interview.
在那之后,我花了一個月才得到下一次面試。
A friend I made in the bootcamp helped by recommending me. If he reads this post, I want to thank him.
我在訓練營結識的一個朋友推薦了我。 如果他讀了這篇文章,我要感謝他。
The role was actually as an Android developer for a Romanian outsourcing company that had a contract with a telecom company.
這個角色實際上是作為羅馬尼亞外包公司的Android開發人員,該公司與電信公司簽有合同。
I had two interviews with them, mostly technical questions, and I still remember when they called to offer the role.
我對他們進行了兩次采訪,主要是技術性問題,而且我仍然記得他們何時打電話提供職位。
The salary was small, but it did not matter.
薪水雖小,但沒關系。
I think I started the bootcamp at the end of May 2015, and I began my first role as Junior Android Developer in January 2016.
我想我于2015年5月底開始了新手訓練營,并于2016年1月開始擔任初級Android開發人員的第一個角色。
It was quite an achievement.
這是一個很大的成就。
My manager assigned me a project, and then I started learning about version control and how to work Agile, and how to work in 2 weeks sprints.
我的經理為我分配了一個項目,然后我開始學習有關版本控制,如何工作敏捷以及如何在2周的沖刺中工作的知識。
If you've started learning programming or you want to start, I recommend three things.
如果您已經開始學習編程或想開始編程,我建議您做三件事。
- Start today (Optional if you already started) 從今天開始(如果已經開始,則可選)
- Do as many projects as possible 做盡可能多的項目
- Learn version control (Git, Bitbucket, or Gitlab) and push all your projects there. 了解版本控制(Git,Bitbucket或Gitlab)并將所有項目推送到那里。
Maybe I will write another article about all these things.
也許我會再寫一篇關于所有這些事情的文章。
During my time at that company, I met a lot of friendly and helpful people. I was probably annoying to a lot of them because, at the beginning, I was asking for a lot of help.
在那家公司期間,我遇到了很多友好而樂于助人的人。 我可能對許多人感到煩惱,因為一開始,我一直在尋求很多幫助。
新國家和更多Android職位 (New country and more Android jobs)
9 Months later I decided that I wanted to move to London because I was getting a lot of messages from recruiters. Also I thought that it would be easier to further my career there, then return to Bucharest.
9個月后,我決定搬到倫敦,因為我收到了很多招聘人員的來信。 我還認為,在那繼續我的職業會更容易,然后回到布加勒斯特。
I was lucky that my sister lived there, and she was kind enough to let me live with her.
我很幸運我姐姐住在那里,她很友善,可以讓我和她住在一起。
Even when I had recruiters promising me interviews and stuff like that, when I got there I had zero meetings.
甚至當我有招聘人員向我保證面試之類的事情時,我到那里時也只有零次會議。
I knew that it would not be easy, and I applied to a lot of jobs online.
我知道這并不容易,因此我在網上申請了很多工作。
After two weeks, I got an interview at a British Telecom services company. They had a small IT department, and their Android developer was leaving. They had internal Android CRMs apps, used by their employees, and they needed someone for maintenance and to develop new apps.
兩個星期后,我在一家英國電信服務公司接受了采訪。 他們只有一個小型IT部門,而他們的Android開發人員正在離職。 他們有內部的Android CRM CRM應用程序,供員工使用,他們需要有人進行維護和開發新的應用程序。
It was a one year contract, and the pay wasn't great (I found that out later), but again, I was happy.
那是一年的合同,薪水不高(后來我發現了),但是我還是很高興。
I learned a ton in that year (on my own).
那年我(自己)學到了很多東西。
I learned Android specific technologies like:
我學習了Android特定技術,例如:
- What's an architecture like Model-View-Presenter and how to use it in an app 什么是像Model-View-Presenter這樣的架構,以及如何在應用程序中使用它
- How to do proper Unit Testing 如何進行適當的單元測試
- The SOLID principles SOLID原則
And so on.
等等。
I learned all that at work and in my free time. I was working, and in my spare time, I was building apps for myself.
我在工作和業余時間學到了所有這些。 我正在工作,在業余時間,我正在為自己構建應用程序。
To this day, all my apps (5 on Android) have more than 100k downloads, mostly organic, but only one of them made more than 2,000 USD.
到目前為止,我所有的應用程序(Android上為5個)下載量均超過10萬,大部分是自然下載,但只有其中一個收入超過2,000美元。
I worked for the telecom company for precisely one year. I wanted to try something different thing in London and work with more Android developers.
我在電信公司工作了整整一年。 我想在倫敦嘗試一些不同的事情,并與更多的Android開發人員一起工作。
It took me some time to understand that, as a software developer, you always have to do more than what you do at work. It's the same with doctors or lawyers. They regularly need to improve their knowledge to be better than others.
我花了一些時間來理解,作為軟件開發人員,您要做的總是比工作要多。 醫生或律師也是一樣。 他們經常需要提高自己的知識,才能比別人更好。
I felt ready to work on a more significant project, but I don't think I was skilled enough.
我準備進行一個更重要的項目,但我認為我不夠熟練。
It did not discourage me, and I took an Android role at a global outsourcing company.
這并沒有阻止我,我在一家全球外包公司擔任Android職務。
I was going to work for a big British bank in London.
我本打算在倫敦的一家大型英國銀行工作。
I was scared initially, but it took me one month to feel like I was part of that project.
最初我很害怕,但是花了一個月的時間才覺得自己是該項目的一部分。
I did three interviews before I entered the project.
在進入項目之前,我進行了三次面試。
During my career, all the interviews I did had two or three steps.
在我的職業生涯中,我所做的所有采訪都分兩到三步。
The first one is usually with HR where they ask you things about your experience.
第一個通常是在人力資源部門,他們會問您有關您的經歷的事情。
The second interview could be with technical questions, take-home assignments or technical questions with some algorithms.
第二次面試可能涉及技術問題,實地作業或某些算法的技術問題。
The third interview might be with a tech lead or with a manager or again with someone from HR. ?
第三次面試可能是與技術負責人,經理或與人力資源部門的人員再次面談。
I started working at the bank in a proper Scrum team. We were 4 Android devs, 4 iOS devs, a Project Manager, a Product Owner, 2-3 Quality Assurance Engineers, a Business Analyst, Copywriter, Designers.
我開始在適當的Scrum團隊中在銀行工作。 我們是4位Android開發人員,4位iOS開發人員,項目經理,產品負責人,2-3名質量保證工程師,業務分析師,撰稿人,設計師。
All these people were developing a crucial part of the app. The project was massive.
所有這些人正在開發應用程序的關鍵部分。 該項目規模巨大。
Just in the development team there were more than 30 Android and more than 30 iOS developers.
僅在開發團隊中,就有30多個Android和30多個iOS開發人員。
I stayed at that role for one year, like with my previous job. The reason? I wanted to go back to Romania.
我曾擔任該職位一年,就像之前的工作一樣。 原因? 我想回到羅馬尼亞。
I was lucky enough to have only good colleagues around me.
我很幸運,身邊只有好同事。
It's never wrong to ask for help if you want to learn. We've all started from the beginning, with zero knowledge. I feel that it's terrible not to want to learn when you don't know.
如果您想學習,尋求幫助是永遠不會錯。 我們都是從零開始,從零開始。 我覺得在您不知道的時候不想學習真是太糟糕了。
The year at the bank taught me a lot, and it felt like a few years. I learned:
在銀行那一年教了我很多,感覺就像幾年。 我學會了:
- How to do code reviews 如何進行代碼審查
- How to work on a project that required 100% code coverage for Unit Testing 如何在需要100%代碼覆蓋率進行單元測試的項目上工作
- How to deliver features on time 如何按時交付功能
- What is clean architecture and how to write code that's easy to read without leaving a ton of comments 什么是干凈的體系結構以及如何編寫易于閱讀而又不留下大量注釋的代碼
And many more that I probably don't remember.
還有更多我可能不記得的事情。
帶著更多的知識回到家 (Going back home with more knowledge)
It was November 2018 when I went back to Bucharest, after two years and a bit of living in London.
在倫敦呆了兩年后,我回到布加勒斯特是2018年11月。
It was an excellent experience, but it did not feel like home.
這是一次很棒的經歷,但感覺并不像家。
I got a new job for another outsourcing Romanian company quite fast (2 weeks) after I came back.
回來后,我很快(2周)就為羅馬尼亞的另一家外包公司找到了一份新工作。
It took me only four months to leave again for a new six months project in London.
我只花了四個月的時間再次離開倫敦,開始了一個為期六個月的新項目。
I was not happy to leave my girlfriend alone, but the money was good for only six months of work.
我不愿意讓我的女朋友一個人呆著,但是這筆錢只用了六個月的時間就賺了。
I'm not allowed to disclose any information about the project because I signed a non-disclosure agreement, and today I'm still working for them. But I'm located in Bucharest right now. I've been working for the current company for more than a year and a half.
由于簽署了保密協議,因此我不允許透露有關該項目的任何信息,而今天我仍在為他們工作。 但是我現在位于布加勒斯特。 我在目前的公司工作了一年半以上。
What did I learn on this project?
我從這個項目中學到了什么?
- How to create a team 如何建立團隊
- How to start a big app from scratch. I will probably be very proud once we launch and people will use it. 如何從頭開始大型應用程序。 一旦啟動,人們將使用它,我可能會感到非常自豪。
- How to adapt requirements with a lot of unknowns. 如何適應許多未知的需求。
- How to deliver by working with people all over the world. 如何與世界各地的人們合作實現目標。
It's been a crazy journey.
這是一次瘋狂的旅程。
結論和我學到的 (Conclusion and what I learned )
My post is at over 2000 words, and I feel I did not give you a lot of details about what I learned. I only scratched the surface.
我的帖子超過2000字,而且我覺得我沒有為您提供很多有關我所學到的信息。 我只刮了一下表面。
It was not easy, but I don't regret choosing this career.
這并不容易,但是我不后悔選擇這個職業。
If you are me from 5 years ago, just start.
如果您是5年前的我,那就開始吧。
You will feel like quitting. You will think that you are not smart enough, you will feel like any developer that takes a few hours/days to solve something without any luck and then has a moment of brilliance.
您會感到戒煙。 您會認為自己不夠聰明,您會覺得自己像開發人員一樣,需要花費數小時/天的時間來解決某些問題,但運氣不佳,然后有一點光彩。
It's not wrong not to know, and no question is stupid. It's terrible if you don't want to learn.
不知道是沒有錯的,而且沒有問題是愚蠢的。 如果您不想學習,那就太糟糕了。
Today, more developers than ever are willing to help. You can easily find Discord groups where people are happy to answer your programming questions. There are a lot of Reddit communities that will be helpful. Maybe even Slack channels can work for you. Finding a mentor can be a solution too.
如今,有更多的開發人員愿意提供幫助。 您可以在人們樂于回答您的編程問題的地方輕松找到Discord組。 有很多Reddit社區會有所幫助。 也許Slack頻道也可以為您服務。 尋找導師也可以解決。
Websites and YouTube channels like freeCodeCamp are all you need to get started.
網站和YouTube頻道(例如freeCodeCamp)都是您入門所需的一切。
Here are all the things I hope you learned in this post:
這是我希望您從這篇文章中學到的所有東西:
- Starting is hard, but every day of learning something new will give you enormous satisfaction. 開始是很難的,但是每天學習新的東西都會帶給您極大的滿足感。
- You need to do all kinds of projects. Knowing the basics is good, but building things and working with version control will help you prepare for a future job. 您需要做各種項目。 知道基礎知識是件好事,但是構建內容和使用版本控制將幫助您為將來的工作做準備。
- People are willing to help (both online and future colleagues) 人們樂于提供幫助(在線和未來的同事)
- There will be days when nothing will work. You will not find a solution easily. Either relax and come back to the problem later or just ask for help. 有時候,什么都不會起作用。 您不會輕易找到解決方案。 放松一下,然后再回到問題上,或者只是尋求幫助。
- All developers (junior, mid or senior) search for solutions on Google and get stuck frequently. 所有開發人員(初級,中級或高級)都在Google上搜索解決方案,并經常陷入困境。
- You will feel impostor syndrome, but trust me when I say that I met developers with CS degrees who are worse than me. 您會感覺到冒名頂替綜合癥,但是當我說我遇到了比我更糟糕的CS學位開發人員時,請相信我。
- Being a developer it’s not only about coding. Soft skills are important too. 作為開發人員,不僅要編碼。 軟技能也很重要。
If you liked this article and want more of this, please follow me on Twitter. I write about my journey as a mobile developer, my failed/successful start-ups, about app marketing, and all kinds of other things I learned in the past 10 years.
如果您喜歡這篇文章,并希望得到更多,請在Twitter上關注我 。 我寫了有關移動開發人員的經歷,失敗/成功的初創公司,應用程序營銷以及在過去十年中學到的所有其他內容的文章。
翻譯自: https://www.freecodecamp.org/news/reflections-on-my-journey-as-a-self-taught-mobile-developer/
軟件自學成才到公司要學歷嗎