Jump to content

(Java) When can someone start applying for work?

Kiyullo

I know this might not be easy to answer. Nonetheless, I feel that it's an important question. Especially for people who have not had a formal education on these things.

 

When is it appropriate for someone who is learning Java to start applying for work?

To put it differently, how much should we know before we are competent enough to start applying for work?

 

-------

 

Due to my personal issues I always feel like I haven't learned anything, and often after finishing a course or learning something new I feel like I know even less than before. Again, the courses are not the problem.

To be honest it's been frustrating for a long time. Now it's becoming unbearable.

Spoiler

I went through Harvard's computer science course (the free CS50 one online), I learned all of the core Java features and some of the more advanced stuff, I learned the basics of Spring Boot, learned a bit of Docker, GIT, terminal, etc. I've even been improving my math skills (can I be a Java developer even though I hate math?).

I'm currently going through Leetcode's "Top interview questions".

Yet somehow I feel like I haven't made any progress since before I started learning any of this.

 

I heard that imposter syndrome isn't too uncommon for people who haven't had a formal education and are seeking their first job as a developer, but when exactly is it appropriate for us to start applying for work to begin with?

Java Trainee (Novice)

Thanks in advance~

Link to comment
Share on other sites

Link to post
Share on other sites

right from the start.

 

the sort of role you apply for changes as your skill level and experience changes, but the moment you find a position that is appropriate to your skill level (junior, since you have no prior experience nor a degree) you may as well try.

 

also - impostor syndrome is rampant in IT as a whole, and probably far outside of that.

Adam Savage has a talk on impostor syndrome in his field(s) of work.

(if the timestamp didnt come trough with the lnk, at around 16:30 in the video)

Link to comment
Share on other sites

Link to post
Share on other sites

The fact that you're working on LeetCode problems yourself and have some knowledge of the basic tooling (git, docker, etc) means you probably have the skills to pass interviews for junior rolls/internships.

 

You'll learn the skills you need to do the job on the job.

I'm onto my third software engineering role (3 different companies) and all of them have been completely different and required me to learn entirely new languages, frameworks, systems and concepts while I do the job.

 

You'll need to learn their code base, their systems and their way of doing things. It's not expected that you'll know how to do everything on day 1 of a new job. All that's expected is that you have enough base knowledge to learn what you need for the job (which it sounds like you have).

More junior roles will have lower expectations of base knowledge and accept that it will take longer for you to spin up and require more help from teammates.

 

To give an example at my previous job I worked on a large simulation system. It was in C++ (which I hadn't done professionally) and completely custom.

They expected that new starters wouldn't be producing any useful work for 3 months and not independent for 6 months. During that time there was A LOT of hand holding with senior engineers who spent a lot of time at my desk helping me out.

 

TLDR: Go for it, sounds like you've got the basics. It's expected that you will need to learn new skills once you've started the job.

Link to comment
Share on other sites

Link to post
Share on other sites

If you can pass a leetcode interview and you have a rough feel for common tools and best practices, you're probably fine. 

You'll learn AS you work and it'll probably be FASTER vs doing drills. 

3900x | 32GB RAM | RTX 2080

1.5TB Optane P4800X | 2TB Micron 1100 SSD | 16TB NAS w/ 10Gbe
QN90A | Polk R200, ELAC OW4.2, PB12-NSD, SB1000, HD800
 

Link to comment
Share on other sites

Link to post
Share on other sites

Leetcode Interviewer: I want you to come up with an efficient and correct working alogrithm to this NP complete problem that no mathematician have been able to figure out for century.

 

Actual job: edit a line to display flex. 

 

You probably already have enough skills to do junior roles but unless you are a master at leetcode, you probably won't be able to get into top tier silicon companies. You can still get into old boomer companies like insurance or banks that don't do leetcode though but the pay is no where as high. Interestingly enough, the whole industry practice of doing leetcode was pretty much invented by Google and later perpetuated by other younger silicon software companies like Facebook who adopted the same pratice. Before that, very few companies would actually whiteboard you with alogrithms.

Sudo make me a sandwich 

Link to comment
Share on other sites

Link to post
Share on other sites

Note that a lot of jobs required different skill levels. With the large quantity of positions opening everywhere, companies are also less picky. Now it's the best time ever since the end of the 90's computer boom. At beast you want to find something slightly challenging that would allow you to learn and become better at it.

Link to comment
Share on other sites

Link to post
Share on other sites

I contract for various clients and work with many languages - sometimes, I have to pick up an enterprise application, it could be in Java, GoLang or .NET, and need to refactor it and make it cloud native.  

 

I will tell you that most roles rely on your knowledge of frameworks as opposed to the language ins and outs.   You don't need to be an expert, you just need to know what they are, and how they impact your application. 

 

My suggestion of things to do before you go looking for jobs:

  • You should be able to build a basic REST API in Java, and should be able to implement all the basic features into it (JWT, ODB, Serialisation, Error Handling, etc).  There are frameworks and libraries out there that will make it easy, but this means that you at least know how to build an API.
     
  • Be able to test your API using Postman and be able to build a programmatic test suite of your API (an app that tests every possible combination of inputs of your API, so you can verify it works). 
     
  • Research Spring Boot, and the basics of enterprise apps (CQRS, Event-Sourcing, Microservices Architecture)
     
  • Have used Java with at least one SQL database, and at least one NoSQL database, you don't need to build a full app, just connect to it, add and retrieve data. 
     
  • Build a free CI/CD Pipeline with GitHub Actions (free), to build your Java App, as well as to containerise it and upload it to Docker Hub (free to use). 

 

All this stuff will be free, and I hope it shouldn't be too complex, but I think it will demonstrate that you know the basics of application development and should be able to decipher some Java platform code. 

 

Link to comment
Share on other sites

Link to post
Share on other sites

I'm a software engineer and i'm a Java senior dev.

I'm proud of my work in the companies where i worked and every work teaches me something.

 

The "less i know, more i (think to) know -  more i know, less i (think to) know" is a "friend" called the "Dunning-Kruger effect".

Knowing about that effect let me understand that maybe i'm not so bad at what i've done (embedded system for EMS, cloud data-collecting system, web app and many other) .

 

Now, in my opinion, you are the perfect "junior starter kit" and it is a compliment (a big one).

If your curriculum passes into my hands, i'll certainly check you.

 

As a developer, the problem that i faced with interviews is the interviewer itself (most of the time). 

Most of the time the interviewer is not technically prepared and it can be difficult for you (with no experience) to understand the job that you should have to do.

 

As a junior, be sure to be a junior. There is nothing more dangerous than being the one-man-developer with no experience.

 

Saying that, work life is like programming some times, you have to try and error. So apply if you think (remotely too) that you can do the job.

 

Hope it helps!

Link to comment
Share on other sites

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×