“Immerse yourself in the study of the subject, find a mentor and do not look back” - the key tips that the author of the material gives to all who seek to master programming from scratch. In the story below, we are talking about the difficult path of a person who decided to change his profession after 30 years to become a software developer.
People often ask me how I started coding and are always surprised to learn what I learned after 30.
')
I offer you my story about how I went from the very beginning to a broad-based developer in
Udacity , a startup from Silicon Valley, whose team set a goal to democratize education. In this story, I paid special attention to the story of how I managed to get a job, despite the fact that each junior web engineer job required a degree in computer science or two years of work experience in the profession.
During all this time, I had the opportunity to fight for the preservation of relations with loved ones, spend all my savings, lose faith in myself and surrender. And only after a year of thinking about failure, changing my mindset, I made another attempt and achieved success.
Today, I lead a team of 10 engineers, and my responsibilities include supporting several basic systems, including student recruitment, a review of their project code, mentoring activities, real-time assistance, forums, and our initiative for live communication Udacity Connect. We provide support to thousands of students enrolled in free courses and paid nanodegree-programs in such advanced areas as AI, machine learning, designing autonomous cars, as well as more common development directions like React, iOS and Android.
And that's how I came to this.
How to fail
It all started with the fact that I disliked my first profession, which I had already devoted 7 years to that moment. I just realized that I could not do this all my life, and decided that I would become a software developer. I don't know where this idea came from, but it attracted me like a magnet. I wanted to create. For completeness, I’ll add that with math everything is bad for me, at that time I didn’t know a single programmer, I had no idea what I was getting into, and whether I would like it at all. My friends kindly reasoned that a) I had a roof and b) I was too old for such changes.
In January 2014, I signed up for the General Assembly Ruby / Rails bootcamp, held in San Francisco. These were relatively early years for the bootcamp culture and the first experience was rather raw. The level of preparation in a large group formed from two streams was different for everyone. Schedule often changed, in general, everything was a little chaotic. A few weeks after the start of classes, rumors began to arrive that graduates could not find work. As a result, a well-felt feeling of herd anxiety began to soar in the air: everyone started wondering if they could really become developers, and did they don’t waste their work by investing 10 thousand dollars in this company? I left before the start of the second semester. Nevertheless, I learned a lot. There were some good instructors there, and some of my friends down the stream subsequently built remarkable web-engineering careers, although at that time such prospects were not obvious to us.
I spent the next month rebuilding the developer’s front-end portfolio. I began to position myself as a Javascript coder for hire, working with small projects. Such an early focus on one direction turned out to be productive: I had a real job. But despite the increased optimism, the next few working months were very unstable, and doubts crept into my head.
Here are a few lessons that I learned by working for a while as a junior self-employed:
- Preparation for work takes as much time as coding.
- Getting order in working on different projects is very difficult.
- Do not count on good technical support.
- Volatile earnings create stress in the family.
- There is no one nearby who could say that you should study
I was confused and tried to find out what I needed to get permanent employment. I heard that there were many self-taught programmers in Silicon Valley, but I was unpleasantly surprised and depressed when I saw that job descriptions indicated the opposite. It seemed that all such announcements required “having a computer science degree or two years of professional work”. How can you get two years of work experience in a profession without a degree, if the latter is needed everywhere? How do self-taught engineers get work?
I started sending out resumes despite the requirements. He began to study approaches to the interview of applicants, hoping that I still call on one of these interviews. I realized that I did not understand anything in data structures and algorithms and did not have a clue about where to start. Suddenly I lost hope. It turned out that all the activities of the past months did not allow me to meet the requirements of any vacancy that was interesting to me, and I strongly doubted that I could pass the interview if I was called anyway.
It was a moment of humility. Six months later, after entering new waters, my financial situation deteriorated, my family relations were strained, and my level was slightly higher than the dropout from the bootcamp or part-time Javascript mercenary. Therefore, I made a very practical decision - to surrender. I told family and friends that I had made an impulsive and costly mistake and found a more suitable job in my previous field of activity.
How to succeed
Soon I began to regret what happened. The real defeat comes only when you give up, and I really gave up.
A whole year passed, and I still could not get this situation out of my head. For some reason I did not understand, I continued to code, little by little, here and there. This activity turned into an annoying hobby that took a lot of time and often took me out of mental balance. I can not say that as a result, something worthwhile came into being, but I could not get rid of the desire to create something attractive for me, instead of admiring the results of other people's works.
I conducted a retrospective analysis of the reasons for my failure:
- I quit my job
- I had no idea what I was doing
- I didn't get high quality experience or feedback.
Therefore, I made a plan:
- Do not leave work
- Find a mentor
- Work for free, provided you get a good experience.
I told everyone that despite last year’s failure, I’m going to try from the beginning.
And the first step was to gain work experience.
How I became an intern
The year before, I had read a security article on Hacker News written by
Lauren Sands-Ramsho . It came to me then that we studied with him at the same college, but with several years of difference, but while I was busy getting average grades in various humanitarian subjects, he took college seriously and went to work at the NSA afterwards. I wrote to him asking about the reality of the study of coding, and in response he sent me a meaningful and encouraging answer.
Remembering this a year later, I looked at his profile on LinkedIn and saw that he had a Parlay startup in the mobile bet segment: Javascript with Meteor + Cordova and Bitcoin storage. I immediately wrote to him asking to take me as a volunteer. After a short interview, he agreed to take me on a small salary. (By the way, now Lawrence is one of the members of the core Meteor / Apollo team and a highly paid consultant).
This experience completely changed the direction of my development. From that moment on, I just had to make it work.
How to become a cool intern
My previous job was related to customer service. Instinct suggested that I just need to apply my previous experience to a new activity. Key points - responsiveness, positive attitude and immersion in work.
- Try to make sure that any call to you remains unanswered for no more than five minutes.
- Say yes, whenever possible.
- Invest an incredible amount of energy in your work. Your mentor will appreciate your efforts.
- Try not to ask him what this or that code does, or where this or that feature works, without trying to find the answers on their own, without reading about it, without trying to understand the operation of the code. If after all these actions you still have a question, it will be formulated more constructively.
However, free work is needed not only to read! I was configured to send code commits any time of the day. Pula at 2 am is a good indicator of hard work.
If you are serious and immersed in the process, then progress will be quick.
What lessons I learned from the internship: immersion - the secret to quick learning
In my experience, learning languages is a good example of how to treat learning coding. The key element here is total immersion. During college, I spent several months in Russia. Being isolated from a clear language, a person tries his best to understand what is happening. This is comparable to physical pain. However, after several weeks of suffering from such a deep immersion, learning begins to accelerate exponentially.
I tried to learn how to code in the same way.
Immersion means 100% concentration, that is, no friends, drinks, TV to the extent possible. Only reading and writing code. Aside from this state for just five minutes to read the news, keep in mind that in this way your mind “emerges” back to the surface. Stay focused, be patient, and the mind adapts. Eliminate all distractions, no matter how much they bother you. Immersion is the difference between success and failure.
How to understand that you really plunged? If the code you do not dream, it means that you are not sufficiently immersed.
There are always enough natural things in life that need to be constantly spent time, so in order to learn as soon as possible, try to apply the principle of immersion as well as possible.
How I got the job
Having started looking for paid work after the internship, I updated my portfolio, focusing on React and Node: there are a lot of vacancies on this network stack, it’s nice to work with him, and I thought that I would have more chances for success. My internship was closely related to Node, so I took Stephen Gyderder's wonderful courses on React + Redux on Udemy. After intensive work with Javascript, I realized that my productivity and self-confidence had risen to unthinkable heights before, because learning React was simple. Redux also did not seem to be too complicated. Graphql is generally a pleasure. The immersion and help mentors paid off.
While working as an intern, my mentor Lauren sent me to the Google Udacity course on optimization of rendering. It was great, and I noted for myself that Udacity has special nanodegree programs aimed at improving skills and career development. It intrigued me and made a mark for the future.
Being in search of a web programmer’s work, I thought that it would be useful for me to get some formal coaching on the part of building a career and therefore I returned to Udacity in search of appropriate programs. The full client-server program available at that time focused on Python, whereas I myself was set to work with Javascript. But my mentor very much recommended me to learn a strictly typed language at the first opportunity. Therefore, I signed up for an iOS program to learn Swift and I really liked it. I will say right away that I will not recommend trying to chase two hares while studying both web-based mobile and client-server directions while searching for my first job, but I strongly recommend that you study the strictly typed language: in my case, this advice helped to significantly transform my Javascript . And the structured approach of Udacity to creating a portfolio, coupled with obtaining feedback on the resume and practice of interviewing, proved to be extremely useful for me.
Toward the end of the course, when I finally began to receive invitations for an interview for full-fledged work, I was called to an interview for the React-developer contract at Udacity-Blitz, a platform through which employers can invite Udacity students to work in real projects. According to the recruiter, he was attracted by my three-month Javascript internship, along with the React-portfolio. For most contracts in general, in my opinion, the quality of your portfolio is more important than the preparation for technical interviews. If you are the owner of one of the “nanodegens” of Udacity, then you should definitely turn to Blitz. On the account of the service are hundreds of projects for clients, including work on Udacity itself, in which I also managed to work, using my skills from the “how to be a good intern” series.
I worked tirelessly. Almost a month and a half later, I was called to Udacity for a permanent position. The following two weeks were spent in intensive training. In particular, in the best traditions of recursion, I used the course on
technical interviews of my future employer. During the interview, Udacity places more emphasis on the puzzles in the code itself, rather than the algorithms. In my opinion, this is a positive trend in the industry as a whole, but knowledge of data structures is also very useful.
I will always be grateful to
Oliver Cameron , who believed in me as an engineer, and
James Richards , who gave me the opportunity to become a team leader in a new team.
Last thoughts
Reflecting on my path of becoming a software developer, I understand that I have made a lot of mistakes, but something came out well for me. In general, I have been out of work for over a year. I learned humility, perseverance and the ability to focus on goals.
I was lucky to work in such a cool team, for a company whose values I like, and to do the work I love. My advice: immerse yourself in the process, find a mentor and do not look back. I promise it will not be easy.
