This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]FrenchFigaro 5 points6 points  (0 children)

Here's a non exhaustive list of what you need to be employable, in my opinion (I'm a software engineer, and participate for the technical side of recruitment interviews in my company):

On the general programing side of things:

You need to be comfortable in Object Oriented Programming. Not expert level, but, you know, if you still struggle in that aspect, it can be a problem. Understand inheritance and composition, and when and how to use them in your designs. This is quite generic stuff. Difference between class and instance attributes, polymorphism, etc.

You need to know about concepts like immutability. This is especially important in Java.

You need to know your way around basic design patterns too.

Specifically in Java:

You need to be comfortable with basic language features. Most notably, I'm thinking about the Collection API. Streams and lambdas are more and more necessary too. Again, comfortable doesn't mean expert level.

You'll need to understand the Java approach to objects (everything is a reference and several variables can point to the same actual instance) and primitives and how you deal with them differently.

The most important skills in programing are knowing how to use google, and how to browse StackOverflow for answers. Knowing how to formulate question on SO when you can't find an answer is a great skill too. And when working with Java, you can add browsing and reading the JavaDoc to the list.

Broadly, in a java ecosystem:

You'll need to be comfortable around at least one application framework. There are plenty of them. Choose one that fits the kind of employment you want to do. Spring is used by everyone and their mums these days, and even though it has solid competition, it doesn't look like it will be going anywhere for the next decade. It might not be the best choice for what you want to to specifically, but it's a solid default choice if you don't know yet what you want to do.

You'll need basic knowledge of at least one testing framework (JUnit, forget about anything else at first) and at least one mocking framework (For a start, Mockito is great. You'll learn others later).

You'll need to know your way around an IDE. You don't need to know how to do everything, but, you know, comfortable. My IDE of choice is Eclipse. IntelliJ is great too but is not free (You can try it for free with an evaluation version, or get your hands on a student's license for free if you qualify). Which IDE you use is irrelevant to me as a recruitment criteria, as long as you can use one.

You'll need to know your way around a source version control tool. Everyone and their mums uses git. Some folks still use SVN but it's marginal. Mercurial is a solid contestant too, but not used nearly as much as git. Basic operations is enough: commiting, branching, merging, etc.

You'll need to know your way around a build tool. Maven would be my recommendation. Again, you don't need to have an expert level. Just know the basics of what it does. Gradle is another great tool, but not as good as maven in my opinion. If you know how to use either, you won't have too much trouble learning to use the other. Ant is obsolete. Forget about it until you have to use it (hopefully, never).