#1 — Add skills beyond full-stack web development
Data Structure and Algorithms
Bad code can destroy projects and waste a lot of time. A developer can be considered like a craftsman that should carefully craft readable and clean code that can be reused easily and modified easily. Many patterns and practices are used but I recommend studying the SOLID principles.
SOLID stands for:
S - Single-responsibility Principle
O - Open-closed Principle
L - Liskov Substitution Principle
I - Interface Segregation Principle
D - Dependency Inversion Principle
Being able to refactor and write clean code is a very critical skill for any developer but even more important for Junior developers. You can study more about this topic with the awesome book Clean Code: A Handbook of Agile Software Craftsmanship by Robert C Martin.
DevOps is the combination of cultural philosophies, practices, and tools that increases an organization's ability to deliver applications and services at high velocity: evolving and improving products at a faster pace than organizations using traditional software development and infrastructure management processes.
Here are what I think are the best technologies to learn:
- Docker: Containers are isolated from one another and bundle their own software, libraries and configuration files
- Kubernetes: Kubernetes is an open-source container orchestration system for automating software deployment, scaling, and management.
- Google Cloud: Google Cloud Platform, offered by Google, is a suite of cloud computing services that runs on the same infrastructure that Google uses internally.
Contributing to open source is similar to contributing to enterprise software. You need to read and understand the code, learn how to contribute following a certain process, making a pull request on Github. Reading someone else's code is hard but it’s also what I call a critical skill.
#2 — Make the perfect CV
Making a great resume is very important.
Here's an example:
The composition of your résumé:
- Heading with your name in a big size and contact information
- 3 Categories: Education, Employment, Personal Projects
- You should add a fourth category called Skills where you add your hard skills and languages
This section is important because you can place keywords and buzzwords that will help you to pass the first screening which is usually done by software looking for specific keywords.
Frameworks/Libraries: React, React Native, Ruby On Rails, Vue, JQuery, NodeJS, Bootstrap, MaterialUi, NextJS, Express, Flask, Jest, RSpec, MySQL/PostgreSQL, WordPress.
Tooling/Hard Skills: Git, GitHub, Heroku, Amazon Web Services, TDD, Stripe, Linux, Jira, Ethical Hacking, Cryptography, Google Cloud.
Languages: native French, fluent English, fluent Italian, conversational Korean, limited proficiency German, limited proficiency Japanese.
Personal Project section
In your personal project section, you should place keywords like Open Source, React, etc to show what technologies you used and what type of project it is. I’d recommend sticking to fewer technologies and focusing only on React and incorporating tests with the Jest library in your projects. https://jestjs.io/.
Full-stack Web Application (https://railsbnb1.herokuapp.com/)
- Developed an Airbnb clone with Ruby On Rails and React, Rest API architecture with Ruby On Rails.
- Added features: Booking, Auth, Properties, Payments with Stripe, Users. RSpec testing for TDD.
- Utilized: Ruby On Rails, React, Bootstrap, Git, RSpec, Stripe, Heroku, SQL, PostgreSQL, AWS S3.
Follow this pattern for each project.
Use examples starting with a verb in each line and your accomplishment.
Company X / Associate September 2016 - August 2018, New York, USA.
- Designed & Created a Web App with WordPress to enable customers to make online bookings.
- Utilized Google Ads with A/B testing to get a 2:1 ROI.
- Optimized SEO for Google Ranking to rank on the 2nd page for specific keywords.
You can switch the order of each section. If you graduated from University then having Education in the first place is great, if you have a good portfolio then you can put your personal projects first and if you have a good employment history then put it first. The most important is to give a good first impression to recruiters.
#3 — Job Search
Job hunting is not so complicated if you make a plan and have a strategy.
To define a strategy you need to ask yourself some questions.
- What type of company can I apply to?
- Which type of company could fit my skills?
- What are the technologies used where I live?
- What are my strongest points, Algorithms? Personal Project?
Try to refine your search around this type of question.
I tend to separate companies into a few categories.
- Big Corporation / Start up
- Technology Company / Non-technology company
Here is an important thing to understand. Each type of company will need different skills. For example, if you apply to Google be prepared to pass difficult Algorithm and Data structure tests.
Non-technology-focused companies tend to question more about Clean code, DevOps and language comprehension than purely Algorithms and problem-solving. Start-ups tend to be very interested in full-stack developers since startup environments require flexibility. Focusing on full-stack projects is an option if you plan to work for a startup.
Sending 500 résumé is okay but sending 20 résumé to companies you studied and know that your skills can be helpful for them is even better.
The best way to get a job is to connect with people.
- Linkedin is a great tool for that, you should build a strong profile and connect with recruiters and hiring managers directly.
- Discord is a great place to connect with developers. https://codeburst.io/top-10-discord-servers-for-developers-86570fcdbff3?gi=f674bac7479c
- Slack is a great option to connect with a more professional approach, many companies have open Slack which you can join. The HackerNews community has a Slack channel per city(big city).
I recommend finding a way to join the closest HackerNews channel since it’s invite-only don't be afraid to ask for an invitation!
#4 — Nail the interview
As for the job search, interviews require some preparation.
1. Learn about the company
The first step is to learn everything you can about the company's products or services. Then you should try to understand what type of culture the company has, a flat culture or Diversity driven culture, traditional corporate culture, etc. Show your effort and talk about the company and what you learned during the interview.
2. Who is your interviewer
If possible try to use Linkedin to know more about the interviewers, what's their backgrounds, etc. It will help you to adapt your behavior depending on the interviewer's background.
3. Introduce yourself with enthusiasm.
Enthusiasm is a secret weapon that can change the balance in an interview. People with passion and enthusiasm have a greater chance to convince their interviewers. Reading a little about human psychology is something helpful.
Humans have very complex behaviors but one which is very important is showing virtue. Transform your character or actions into virtue.
Curious -> Open-minded
Hardworking -> Passionate
Open source -> helping the community
Don’t do a monolog. Try to be calm and listen to your interviewer. You have 2 ears to listen and one mouth to talk, listen twice more than you talk.
Listening is a critical skill to work in a team.
Ask questions to your interviewers, during a technical test ask the opinion of your interviewer about your code. People genuinely want to be listened to and questioned in general.
You’ll often come to questions about how to solve a dispute or a disagreement at work during interviews. I follow the moderation principle, which is to not take any hard actions and to listen and understand any parties involved to find a solution that can fit everyone or negotiate calmly. Moderation is actually often considered a virtue and shows that you can control yourself and the situation around you.
7. Advice for startup
Startups tend to be solution-focused, I’d advise you to show your interest in solving their problems to bring value to their customers or market.
8. Advice for big corporations
Big corps are full of protocols and bureaucracy they tend to have a slow pace. Showing that you are able to follow protocols and rules is a good point for them.
An interview is actually a negotiation to sell your skills for a monthly salary. During any negotiation, it’s important to maintain a power balance. Show that you can be independent and reliable by yourself. A good tactic of mine is to apply for an internship or an easier job, like this you can get some offers quickly which you can use later as leverage during your salary negotiation. Don’t hesitate to value yourself even as a Junior developer. Valuing yourself and your hard work shows some confidence which is a great thing. Don’t overdo tho it is a balance to maintain.