As someone who is just starting their career, I am faced with learning many lessons "the hard way." This is an essential step in anyone's journey for personal and professional growth. Well, the lessons are essential, the way we learn them is often up to us. I try my best to share whatever lessons I have learned in the hopes that others will have an easier time on their own paths. I also spend a considerable amount of my time learning and researching anything and everything. Random individuals sharing their stories on the internet has played a vital role in my steps to beginning a career in tech. All I can hope to do is pay-forward some amount of my own experiences.

Desired Experience Is a Farce

The very first piece of advice I give anyone applying for jobs is "apply anyway." Over and over again I have witnessed job listings that ask for everything, but the expectations listed on paper are nowhere near what is required for the job. If you even slightly fit the requirements on a job listing, I always recommend you go for it. Far too many people will look at a job listing, see numbers bigger than what they can offer, or see skills that they don't have and just walk away without applying. These potential competitors are true heroes of the workforce--they give up their opportunity so that you can dive in and take it.

There is often a huge disconnect between what a job listing asks for and what the job actually requires. I have never once used every skill that was asked on a job listing for the actual role I was hired into. My first job in tech was as quality assurance for a large company's websites and REST APIs. The listing was a monolith of expectations that were enough to make most junior devs question where they went wrong. I was specifically selected for this job since they wanted someone with experience in every single one of these areas:

  1. Aviation
  2. Python
  3. Java
  4. Selenium
  5. REST API
  6. AngularJS
  7. SQL
  8. AWS
  9. Jira
  10. Linux

These requirements do not even include the 3-5 years of QA and 3.0 GPA minimum. While I pride myself with my passion for learning, I was not a student to consistently get good grades and I certainly was not hiding 3-5 years of work experience anywhere, nor did I have half the skills they asked for, but I still got the job. Not only did I get the job, I was told over and over again that it was one of their hardest positions to find qualified workers for. So how many Java-Python REST APIs with SQL back-ends deployed on AWS using linux did I get to work on? Of course the answer is 0--this was a QA job. Not only would they not let me near the airplanes, but I was also required to do menial and manual frontend testing. Automating tests was actively discouraged as a waste of time that pushed back deadlines. Even so, the work was easy and I found myself completing my workloads in 1/3rd of the time alotted. This gave me plenty of time to defy them by writing good, automated, reusable tests for the team.

Know Your Worth

Hiring good people for a job can be challenging and exhausting. A company might find someone who has all the technical skills for a position, but no ability to communicate or work well with others. Similarly, a candidate might apply for a Python position, be charming and a strong communicator, but when asked to do fizzbuzz, just stares blankly at a screen until given a life-preserver or the interview ends.

Once a company finds the person they are looking for, they want to keep them. Training employees is expensive and hiring can be a difficult process (and this is not even considering the politics of budgets and how/when managers can grow their teams or replace people who leave). This gives you more power in your workplace than some may realize. You can and should ask for things to improve your experience at work. Request every single tool you want or need for the job, but also be an advocate for yourself. You deserve time off and time to relax and you always deserve that raise. Employees are the backbone of every company, if you do your job even at an okay level, you are doing a great service to the company. If a company is not willing to pay you what you feel you are worth, or are not willing to budge on vacation policy or anything else you need, there is no problem jumping ship and finding a better place to work for yourself. Companies have no loyalty, they just do whatever is the most efficient to make money. If they thought it would earn them more money, they would fire everyone in a heartbeat.

Social Skills Often Outweigh Technical Skills

I is important that you can do the responsibilities of your job. It is pretty likely that thousands, if not millions, of people have the technical skills needed to complete the duties of your job, but this is not the only thing that makes a desirable employee. In fact, social skills are often much more important for success in tech jobs than the actual technical skills. Companies and managers want developers that can clearly communicate to both technical and non-technical coworkers so that things can continue running smoothly. Managers need to know where and when you are blocked and what they can do to make your job easier. Project managers and owners want to know what is going on, but they do not want a lesson on .NET when you provide them updates. Being easy to talk to, nice, and knowing how to clearly communicate is a huge way you can provide value to a company and stand out from other applicants for jobs. Almost everyone applying has the technical skills, but very few will have agreeable personalities and the communication skills to succeed.

Interviewing Is a Two-Way Street

One of the my favorite ways to look at job interviews (especially when faced with rejection) is that the process is mutually beneficial--they did not want me, which means I do not want them. This may sound arrogant, but I find it to be a very positive outlook. If you were fully qualified for a job, but were rejected anyway, then you may have dodged a bullet. Of course it is possible that you got a bit unlucky or an applicant was a bit more competitive than you, but there is not much you can do about that.

There was one company I was very excited to interview for. They were a successful, smaller company with a smaller, more personal team and they were hiring for remote work. They liked my resume and I landed an interview, but the interview just did not go well. One interviewer was constantly asking me about my specific computer-science courses that I took in college--I didn't take any--and he was just unhappy with my answer, he asked the same question several times throughout the interview and it left me feeling both disappointed and frustrated. I was denied for the position and I had the feeling that the interviewers and I just did not get along very well. If I had been offered the job, I probably would have accepted it since I was desperate for the opportunity to advance my career. I am incredibly happy that this did not happen. Nothing is worse than entering a workspace where you do not get along with your manager. In hindsight, it was clear that the culture of the company was incompatible with me. I am a self-taught and passionate developer, which is exemplified in my personal projects and involvement in the Python community. If a company insists instead that a formal education is required and does not think I am a good fit for the job, then they are probably correct. That is not an environment I want to be forced into.

Conclusion

Most of my advice can be narrowed down simply to: be confident in yourself. So many people undervalue their skills, experience, and work. This poor perception can lead to underpay or even missed job opportunities altogether. Apply for positions you would enjoy and could at least perform the duties of, always strive for higher pay, benefits, or anything else the company can give that is important to you, and remember that your time is valuable. Being stuck at a job you hate is a terrible feeling and you deserve to do work you enjoy and be compensated fairly for it.