whats it like to be a software engineer 2017
In this post, I'll share how I went from naught(ish) to a six-figure software engineering task offer in ix months while working full time and being self-taught.
Whenever I would showtime reading a success story, I would immediately wait to find the author'southward background, hoping information technology would match mine. I never found someone who had the same background as I did, and about probable mine won't friction match yours exactly.
Yet, 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 Bones for Applications (VBA) course in loftier school (nine years ago). In my freshman engineering course (seven years ago), I learned some C, Python, Matlab, and Labview. I graduated from a skillful university with a chemical engineering degree and a skilful GPA (three years ago). I hadn't done whatsoever programming exterior of school, in high schoolhouse or higher, until I decided I wanted to learn concluding year.
After college, I got a job every bit a Process Engineer at a refinery. I worked there until I inverse careers into Software Engineering.
Why I wanted to change careers
I enjoyed solving technical problems, but I knew I wanted to get into the business organisation/startup globe at some indicate. I always kept the thought of an MBA in the dorsum of my heed, only every time I looked at the price tag of the top schools, my interest waned.
On May 27th, 2017 I constitute myself googling nigh MBAs again, and somehow I stumbled upon software engineering science. It seemed like a perfect fit.
Software engineers are in increasing demand, salaries are great, and information technology's the perfect industry from which to get into the startup world without needing a ton of initial capital. All y'all demand is a computer, and your opportunities are limitless (kind of).
In no other technology discipline can you just accept an idea, start edifice it, show information technology to users, and iterate with little capital letter and low barrier to entry. In chemical engineering, you essentially need a running plant or a lot of coin to pattern 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 tin totally larn it all on your ain if you are committed and focused.
Y'all might debate that y'all are losing out on the networking and career advice provided by a bootcamp. This can be true, merely I was fortunate in that I was living in the Bay Area which allowed me to attend several meetups, then I networked that way.
Also, the worst case was that I'd realize that I couldn't practise it on my own, and and so I would quit my chore to attend a bootcamp.
The Goal
Y'all demand to accept a goal. Peculiarly if you lot are trying to learn while working full-time. It is easy to let your learning elevate on and on if you don't take any external pressure level pushing you. So you need to create internal pressure. Your goal should be simple and quantitative. Y'all should do enough research to come up up with a reasonable goal. Mine was the following:
Get a software applied science job within 1 year with the same or better salary than I am making right at present.
The Plan
One time you have a goal, yous demand a plan to help you lot go there. This is where y'all swallow every bit many success stories as you can. None of them will friction match your exact situation, just you can have some advice from each one. I developed (and iterated on) my plan using resource such as the learnprogramming subreddit, the freeCodeCamp forum, and Medium.
On May 27, 2017 I decided I was going to make the coding plunge, and I pigeon in head first. That day I decided to start putting in no more than 40 hours per week at my job, and then that I had time to lawmaking later on work and on the weekends. Luckily for you, I did a pretty proficient job of documenting my progress.
My programme, through many iterations, ended up looking something similar this:
- Take an Intro to CS course to get a solid base understanding of core CS concepts
- Follow freeCodeCamp until I can build portfolio-level full stack web apps on my ain
- Refactor to make clean up the lawmaking, add testing, focus on advanced concepts
- Contribute to open source
- Prepare for job interviews
To outset, 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.
Month 0 - Udacity CS101, Harvard CS50
The high of making this big decision gave me a ton of energy. I would start coding as shortly as I got home from work and wouldn't finish until I went to bed. And so again all weekend. Udacity CS101 tracked completion percentage, which was a big motivator for me. I logged my completion per centum every twenty-four hour period afterward coding. I finished the kickoff 75% in x days. The last 25% was heavy in recursion, and information technology was a bit tougher for me. All in all, it took me 20 days to cease Udacity CS101.
While I was taking Udacity CS101, I had started reading the learnprogramming subreddit quite heavily. I read that it was of import for cocky-taught developers looking to make a career modify 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.
Also, I decided to stop reading distracting media similar Instagram, Facebook, and not-programming subreddits. I would just bank check my phone for programming-related news and posts. This was crucial in making sure that I was finding out nearly the best learning paths and learning resource. Information technology was because of this that I found out nearly Harvard CS50 on edX.
I was originally content with just doing i intro grade, but everyone seemed to recommend Harvard CS50, so I decided to swoop into that adjacent. CS students at other schools had taken this course and said they learned more in CS50 than a year or ii at their university studying CS. The full general consensus was that the course was difficult but worth it. By the terminate of Month 0, I had completed the beginning 5 lectures and homework assignments.
Calendar month i - Harvard CS50, Linux, 1st Meetup, freeCodeCamp
I completed CS50 about halfway into the month. I'm not going to annotate too much on my experience with CS50, because I wrote an in-depth mail service near my experience here.
TLDR: It's a swell course, I highly recommend it. David Malan is an fantabulous lecturer, and there are a ton of resource to aid you get through it. You outset in C, move on to Python, and then finish with web development. It is very dense, and in that location is a lot of material, but I recall it is well worth information technology.
Afterward CS50, I decided to prepare my XPS 15 to dual kick 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 i.
I slowly weaned myself off of Windows and somewhen was solely using Ubuntu. I wanted to force myself to get comfortable with the command line which I think worked to some caste, but I nonetheless take a long ways to go.
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 lot are making progress every day, information technology won't seem similar much only when you look dorsum a month or several months, yous will realize that yous have actually fabricated quite a bit of progress which motivates you to go on going.
I knew that networking would brand or intermission me, and so I mustered up the courage to get to my kickoff coding meetup. I had never gone to any meetup permit alone a coding meetup. I was and then nervous that after driving there, parking, and walking to the door, I almost turned effectually and went abode.
It helped that it was the start meetup for the group. I quickly realized that there was no reason to be nervous. No i knew each other, no ane was judgmental, and everyone was eager to larn. This was the beginning of a meetup-spree. I ended upwardly attending over 50 meetups in ix months.
I'm glad that I started going to meetups early. Near people only started to nourish meetups when they were looking for a task, but at that point it is almost as well belatedly. There are so many reasons to get-go early on. To name a few:
- Developing relationships takes a long time. Starting early means that you accept connections who tin can vouch for you when looking for a job later
- Talking about programming with strangers is a swell fashion to prepare for interviews
- Y'all can larn new frameworks, tools, and learning resources from people who are alee of you. This tin can influence your future learning plan.
At that place was some uncertainty at this time in my coding journey. This was about when I needed to determine what kind of software developer I wanted to be.
Ultimately, I chose web development considering it seemed like there was high need and also a lot of online resources. Once I had that figured out, I needed to effigy out what to practice next. Some people recommended that at this phase I should think most web apps I wanted to build so get going. Some people recommended The Odin Projection or freeCodeCamp.
The guy that was running the weekly meetup I was attending knew Carmine and wanted to do projects with Reddish. This was a big reason why I made the conclusion to become all in on The Odin Project.
And then ii days later on I ditched that idea.
That is i of the downsides of going the cocky-taught road. One minute you think you know what path y'all should have, but then the side by side day you wonder if that was the right move.
I read that Cerise was falling out of favor, and I proved this by searching for Cerise vs JavaScript jobs, so I ended upward starting freeCodeCamp. The 1 matter that bothered me virtually freeCodeCamp was that they came up with the project ideas, so every camper does the same projects. This concerned me at first considering I wanted to stand out to recruiters. However, I ended upward loving freeCodeCamp, and now I highly recommend information technology. For more details on my experience and recommendations regarding freeCodeCamp, check out my writeup here.
Month 2 — YDKJS, freeCodeCamp Front, React
I started reading Yous Don't Know JavaScript, because anybody recommended it to supplement freeCodeCamp. I had to re-read several sections as information technology is pretty dense, but information technology's a perfect resource to learn lexical scope, closures, promises, and all parts of JavaScript that you hear about and desire to learn but never do because they seem difficult.
I finished the front-terminate department of freeCodeCamp. The checklist format and estimated completion fourth dimension helped motivate me to terminate quickly. I was also itching to motion on to the next section and learn React. Withal, this also meant that my projects had minimal styling. I did whatever it took to fulfill the user stories and nothing more than.
In hindsight, maybe I should accept focused on making the projects more appealing. Maybe, this would take helped me learn CSS more than deeply.
The side by side stride was learning React, and I was pretty pumped.
I had heard so much about it, and I was fix to fit in with the cool kids. Nonetheless, I was a fiddling hesitant given the licensing bug at the time. I'm really glad that is no longer an upshot. Learning React was difficult for me. I wasn't aware of any practiced tutorials then (simply information technology seems similar there are a ton at present).
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. Then then I went dorsum to reading Yous Don't Know JavaScript, but again that was likewise dense for me.
Month 3 - freeCodeCamp React, CodeClub, Starting freeCodeCamp Dorsum Finish
Ultimately, I just decided I would work my way through the freeCodeCamp React projects to see how it went. That lawmaking was ugly, but it did assistance me understand React a little better.
That meetup I had been attention weekly decided that they were going to build projects with full stack JavaScript instead of Red, and they decided that the offset projection would be to build a website for the meetup grouping, CodeClub.Social.
I developed cards using React and Meetup API assuasive the user to sign up for the next three meetups from our website. It was a little hard for me to have a quick break from freeCodeCamp to do this, simply it was an opportunity I couldn't pass up. I was happy to be working on a project with a pocket-sized group of people. It as well helped me learn Git and Github.
Before the calendar month was over, I started working on the back end section of freeCodeCamp.
Month 4 - Finished freeCodeCamp Back Cease, Yeggle
I worked through all of the API projects in freeCodeCamp, but I started deviating from freeCodeCamp at the Image Search Brainchild Layer project.
I was itching to brand full stack web applications, and then as presently as I saw the championship of this project, I had an idea for my own projection. I would make a node app that would store random imgur URLs in a database, and then brand a forepart end that would output a user-specified number of those random images. What everyone says is true: you work harder and accept more success when you are working on a project that was your own idea.
Once I got information technology 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 exist inside my capabilities. I was running regularly at the time, so I would come up up with ideas on my runs and write them down when I got domicile. That way I would have a listing of project ideas when I was ready.
I finally felt fix to offset making my ain useful and polished full-stack spider web apps to share with users and put on my portfolio. I was and so set up to get started.
When looking for a new eating place, 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?
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 exist 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 permit it get me down.
Calendar month 5 - StockIT
I didn't go quite as much washed this month, equally I started it off with a ii week vacation to Nippon and Thailand!
But I did first and complete my side by side projection. I kept reading about how difficult it was to get a chore as a cocky-taught developer, so I thought I needed to practice something unique. I remembered a game where a Dow Jones stock graph started trending, and y'all had one opportunity to buy and 1 opportunity to sell, and the goal was to beat the market. The purpose of the game was to evidence you how hard information technology was to beat out the market.
My idea was to make a game similar to that, but instead of the market, you would exist playing against a machine learning algorithm. Then I created StockIT.
I took a video tutorial on Pandas and Scikit Learn that covered multiple machine learning techniques. I originally wanted to practise some cool deep learning techniques, but I realized that took massive datasets and more time than I wanted to spend.
Instead, I stuck to a simple linear regression model. I thought that would exist the difficult part, but it wasn't. Getting D3 to jive with React was the hard part. Both libraries wanted to command the DOM. There were another libraries that helped to join the two, but I felt they were too bloated. I ended upward using D3 to generate the SVGs and React to handle the DOM which worked out quite well for me.
This time when I shared it with Reddit, everyone loved it!
Turns out, simply like VCs, redditors are all well-nigh that machine learning. All the love from Reddit was a big confidence heave. People were playing my game and enjoying information technology!
Month 6 - jobSort(), Job Hunt Prep
Later StockIT, I rolled correct into my next personal projection. I wanted to make a job board that aggregated the smaller tech-focused job listing websites such equally Stack Overflow, Github, and Hacker News. To add my own unique spin to information technology, I decided to have it sort based on the technologies the user wanted in a chore and how badly they wanted each of them.
For example, allow's say I was looking for a job that was looking for someone who knew JavaScript, React, and/or Python, and I actually wanted to work with JavaScript and React but I didn't care and then much about Python. Then I could give JavaScript a three, React a 3, and maybe Python a 1. The listings would and then sort accordingly.
I ran into various obstacles with this projection and had to change course a couple times, just 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.
The "final" product is hither, and if y'all're interested in knowing more about my struggles and refactors, check out my post here.
Considering of my problems, jobSort() took upwards a decent portion of the month. I ended up getting coffee with a friend I had met at my outset meetup, and he brash me to start applying for jobs at present. I read all over the place that everyone says they waited besides long to apply. Too, whenever I saw a post asking when to apply, the top comment was always "now."
In my caput, I was going to work my way through my structured plan to build up my portfolio with personal projects, and then piece of 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 outset applying. So this calendar month I made a portfolio and a resume. The following calendar month I would offset applying.
Month 7 - Testing, Task Hunting
This month I focused on touching upward my projects and applying to jobs. I also wanted to acquire testing and Redux.
I added flexbox to CodeClub.Social to brand it responsive. I improved the mobile UX on jobSort(). I added testing to jobSort() with mocha/chai/enzyme which was difficult to gear up, easy to go started, and then difficult to get 100% coverage.
Past the end of the month, I had applied to 63 jobs. I viewed this as a self-assessment. Was my portfolio/resume proficient enough? If then, what did I need to piece of work on to set up for interviews? At outset, I practical with Hacker News: Who is Hiring, and Indeed.
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 go a call or an interview anywhere.
At first, I was applying rapidly and not personalizing my resume/embrace letter. And so, I decided to personalize my cover alphabetic character and resume, and then try to send an email to someone from the company. This method was conspicuously better than the shotgun arroyo.
I received v calls that month — ii from recruiting companies and three from software companies that included:
- a contracting DevOps/testing function at a dotcom company
- a serial B nutrient analytics visitor, and
- a fairly large and successful startup that was recently purchased past a major corporation
I made information technology by 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.
Everyone mentioned online that junior developers aren't expected to know that much from the showtime, they just demand to exist passionate and excited to acquire. So I idea, like shooting fish in a barrel. I am passionate and excited to learn. What I learned from these calls, still, was that nobody was looking for a junior developer. They expect you to know what you lot're doing from day i.
These calls taught me that I needed to
- exist good plenty to add value from day i
- be confident enough to convince them that I can add value from day one
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.
I knew I wouldn't be able to get as much washed this month, but I had a goal and I wanted to meet it, and so I couldn't take a month off.
I refactored jobSort to use Redux which was surprisingly not as difficult as I idea it would be. I listened to a lot of podcasts about information technology and read blogposts about it, and information technology never quite made sense to me until I started using it.
I really like the flow of data with Redux. It'south interesting now seeing people complain most Redux. I don't retrieve I'grand qualified to spout off my opinions strongly, but I practice like the reducer pattern.
This was supposed to be the month of open source for me. I was going to make my commencement open source contribution, and it would be a great contribution to a fantastic library. I was going to contribute to React!
Everyone said it was a difficult codebase to read let lonely contribute to. Just I needed to stand out, I needed to be unique. I knew that my contribution wouldn't exist significant, only I still wanted to do it nonetheless.
I would start by reading the docs all the mode through and then pouring through the codebase. Lookout every issue, every PR. Reading through the React docs in full was a great exercise, and I'm glad I did information technology. But I rapidly 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.
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 corporeality of problems to assistance with, non too many collaborators, super helpful maintainer, clean well-tested lawmaking. On height of all that, it was a perfect solution to some issues I was having with my jobSort() application.
About halfway through the month, I received an email from ane of the companies I applied to in the previous month. They set an initial phone screen, and so a technical phone screen. The technologies they were looking for were exactly what I had learned - React, Redux, and D3. I mostly but talked nigh my projects and why I made sure decisions. After this, they asked me to come onsite for an interview. My first onsite interview!
I hadn't prepared for interviews at all, then I went into it with the expectation that I wouldn't become the job, but I would gain valuable interviewing experience. I as well was running on iii 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, simply 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 claiming, I realized that I needed to terminate worrying what the interviewer thought of me and just google/stack overflow to notice answers. I didn't end upwards 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.
Calendar month ix - Job Offering
I ended upwardly receiving my first job offer 9 months and 7 days after that get-go day when I decided I was going to swoop head first into programming with the intent of irresolute careers. I felt confident given that I received an offer after my commencement onsite interview, but at the aforementioned time, if I didn't take the offer, what if this was the only offering I would receive for several months? I concluded up taking the offer, and I am happy with my decision. I wanted to get paid to code!
Advice
Upwardly to this point, I take mostly shared my story with some advice sprinkled in. Chances are if you're reading this, y'all either are thinking about changing careers or are in the middle of learning to lawmaking with the intent of changing careers. I hope that the advice below volition help you develop a plan or stick with your current plan and reach your goal.
- Notice out what motivates you and employ it to your advantage. For me, it was checklists, documenting my progress, and interacting with various programming communities. If you lot are not motivated to achieve your goal, so zilch else matters because you won't finish.
- Make goals and run into them. I would argue that you lot should have monthly goals and mayhap even daily goals. Monthly goals to make sure you are on track to meet your main goal, and daily goals to brand sure that yous actually brand daily progress. Ane 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 experience like you lot made progress when you lot actually didn't. Information technology forces you to compare your daily accomplishments with your daily goals.
- Go to meetups way earlier you retrieve you are fix. Going to meetups can feel scary, but as I mentioned above. Simply, in general anybody is prissy and willing to aid. Yous might observe people that aren't interested in talking with you, merely they are the minority and no ane will exist judgmental. Too, everyone loves to requite communication (like I'm doing correct now).
- Contribute to open up source manner before yous call back you are ready. When you first showtime programming, Github seems similar this scary place that you never want to become to. It is really very welcoming to beginners and is a great place to run across good code and get your own code reviewed. If you're still not convinced, check out my mail service, Why you should contribute to open source right at present.
- Commencement applying fashion earlier you call back yous are set. This one was tough for me because I thought I was different. I idea I didn't demand to exam the market to become a feel for what to work on. I thought I would know when I would exist ready to apply. I'm telling you correct now. You will not know when to utilise. So you might besides starting time now. Yous shouldn't go crazy and apply to 300 companies earlier you larn for loops. Simply you should know that the all-time fashion to know what yous need to learn is by applying and testing the market.
I promise this post has been useful to you in your coding journey. If you are interested in meeting with me for communication on your career switch, please fill out this brief survey.
Now get back out there and lawmaking!
Learn to lawmaking for gratuitous. freeCodeCamp's open source curriculum has helped more than than 40,000 people get jobs as developers. Get started
keeleyablumersy93.blogspot.com
Source: https://www.freecodecamp.org/news/how-i-went-from-newbie-to-software-engineer-in-9-months-while-working-full-time-460bd8485847/
Belum ada Komentar untuk "whats it like to be a software engineer 2017"
Posting Komentar