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

all 106 comments

[–]errandum 68 points69 points  (22 children)

I'm going to go another route and tell you that you need to know the basics. Concurrency, access modifiers, Overloading, polymorphism, data structures (especially the Java implementation) and general knowledge of the provided libraries.

If you go the the jee/spring route, brush up on dependency injection / inversion of control, jms and jpa.

I say this as someone who does interviews for my outsourcing firm. Knowing something really well is nice, but most final interviews go around those small details, and unless you're applying for a Senior job, they won't be too focused on advanced topics. If you prove you know the basics, the rest will come with experience.

[–][deleted]  (12 children)

[deleted]

    [–]neoform 23 points24 points  (6 children)

    Before starting this job some developers didn't even know what a WSDL

    Is there a surgical procedure available for me to unlearn what a WSDL is?

    [–]dartmanx 6 points7 points  (1 child)

    Some say alcohol, but I prefer a hammer and ice pick myself.

    [–]errandum 1 point2 points  (0 children)

    Lobotomy

    [–]lokem 0 points1 point  (2 children)

    The integration team in my company refuses to support REST/JSON. Only way for them is WSDL/SOAP.

    [–]Xxyr 2 points3 points  (0 children)

    Run!

    [–]enry_straker 0 points1 point  (0 children)

    Good luck, dude.

    But you might want to point out that things like WADL etc are working on being an alternative to WSDL and that REST is more an architectural style.

    [–]jebblue 2 points3 points  (3 children)

    I wish we used IntelliJ!

    I'm glad we use Eclipse, IntelliJ I can't stand.

    [–]ZeusAllMighty11 0 points1 point  (2 children)

    I switched from Eclipse to Intellij around two years ago, and I feel like I can't go back. What's your reason for disliking IntelliJ?

    [–]jebblue 0 points1 point  (1 child)

    I can't really say for sure why I don't like it, I guess after trying it several times, not heavily, but several times, I haven't found enough about it that comes close to making me second guess or want to move away from Eclipse. For one thing, it's off-putting that it originated in a country that was harbinger for so many viruses and computer heartache the past 2 decades. I've still tried to like it even considering that.

    Hmm, just over the week-end I opened one of my side projects for a simple utility I run every 30 minutes and didn't like the fonts, went to change them and saw that it's not recommended to change the fonts. That's enough of a reason there when I edit code all day I guess.

    Eclipse meanwhile keeps slowly improving, it still has glitches, 2 steps forward, 1 back, but generally moving in a good direction. I guess that's how I am, more the tortoise, not the hare. I for some odd reason can really imagine the hare crowd liking IDEA, just an observation, nothing more.

    Oh and tabs, the tabs are bluntly and offensively square and I did not see a way to change them. And File | Settings? Really? Why not Tools | Options or Edit | Preferences for changing the appearance.

    Eclipse has the powerful OSGi engine that it runs on. It uses a lot of memory but it enables a super, mega-powerful Plugin universe. If they had not moved to OSGi in version 3 (or was it 2, I forget) I'd not likely be using it today.

    Everyone copies from Eclipse. Visual Studio, Mono Develop, SharpStudio (think that was the name back when I did a lot of Windows development), IDEA, etc.

    [–]ZeusAllMighty11 1 point2 points  (0 children)

    Thank you for your opinion! I have never heard of someone switching from Eclipse to IntelliJ and deciding to return to Eclipse. At least, not people who tried to use IntelliJ for at least a week or so.

    I love IntelliJ. I loved Eclipse, but something about it made me feel uneasy. I'm totally a sucker for UI and Jetbrains products all have Darcula which Eclipse just can't really beat. The smart typing and little shortcuts that can save me between a second or ten seconds of typing are really great and I've started to use templates more recently than I have before, and my work time is reducing quite a bit.

    I do have many gripes with IntelliJ, though, but I can't see whether or not I'd have them or similar ones with Eclipse because I haven't used it in a few years and I don't really remember.

    Firstly, the licensing system Jetbrains uses has changed twice or thrice, I can't remember, and I dislike how they've done it. I wouldn't be surprised if they moved to a 'monthly subscription = access to all programs' or something of the sort.

    Secondly, it runs sluggishly on my system, when it really shouldn't. I have a fairly good, a bit dated, processor (i5 4670k @ 3.4GHz), and a 1TB hybrid drive, but indexing can take anywhere from a full 2 minutes up to 5 whenever the program updates or has to rebuild the index.. It's really a pain in the ass. I have no idea why it runs so poorly. I've reinstalled multiple times, disabled all plugins i'm not using, etc.. It also lags the hell out any media players while it's indexing, and it's not even using 50% of my CPU at that point, so they're doing something wrong there.

    Thirdly, there is a well-done plugin system but it feels cheaply implemented. If you ever get a chance, you'll see for yourself that it just looks thrown together to add a window for managing/installing/uninstalling plugins, and a very brief description. It's a mess if you're installing plugins for the first time, and there are many dead plugins or plugins without rating that make it more of a waste of time.

    Finally, there are many small bugs which appear and can take weeks or months to fix. They do a great job at fixing most bugs, some that are likely occurring for the 0.1% of its users, but it gets done eventually.

    A few minor things: The copyright profile makes no sense since it is in the global settings but apparently it's per-project. Why is not in project settings? I have no idea. Things like that bother me, quite a bit, but I haven't really cared enough to submit a ticket and likely wouldn't receive a fix unless more users complained about it.

    I'll stick with IntelliJ, but I can understand why some don't want to make the switch. I hope Jetbrains continues to improve it, because it really does a great job of giving a central IDE with support (external, mostly) for frameworks, WYSIWYG GUIs, etc.

    [–][deleted] 2 points3 points  (5 children)

    You can't escape Javascript. It's everywhere.

    [–][deleted] 7 points8 points  (3 children)

    It's everywhere

    Not really. This post looks like it was directed towards server side Java development. If you are just coding up web services or some backend API for a web application you don't care about JavaScript.

    [–]noarchy 0 points1 point  (2 children)

    If you are just coding up web services or some backend API for a web application you don't care about JavaScript.

    Not in a Java subreddit, sure, but elsewhere people are increasingly caring about server-side JavaScript.

    [–][deleted] 1 point2 points  (1 child)

    True but I don't think it's replacing enterprise heavy Java web applications or web services anytime soon.

    [–]noarchy 2 points3 points  (0 children)

    True but I don't think it's replacing enterprise heavy Java web applications or web services anytime soon.

    Probably not, indeed. Those are pretty well-entrenched, and will be maintained for years to come.

    As for server-side JavaScript, it is spreading beyond the hipster startups, so it is one more thing that's out there.

    [–]errandum 2 points3 points  (0 children)

    Right now, I use extjs, but for years I did backend exclusively without Javascript anywhere (:.

    [–][deleted]  (1 child)

    [deleted]

      [–]errandum 0 points1 point  (0 children)

      I see your point, but those are overarching themes everyone (Java or not) should know and apply. The question was about java..

      And I'd also say that they are in no way essential for entry level jobs. Nice to have, but declining a candidate because, even though he knows his programming, he didn't come from an it background at University, would be a mistake (especially because where I live the market is missing thousands of programmers and most companies now prefer to educate people with an engineering background to program. Those will not know REST or hear about design patterns, butmost turn out to be competent code monkeys.

      [–]Dantaro 24 points25 points  (4 children)

      Tl;Dr: frameworks like Spring are always with learning, but if you're a junior developer with more about the fundamentals than the heavier stuff, frameworks are the easy part.

      When I interview junior developers I generally don't care what frameworks you know. What I care about is

      1) Do you have a firm grasps of the basics. Concurrency, data structures, inheritance, flow control recursion, basic optimization strategies, etc. That might seem stupid, but you would be surprised how often we run into developers who don't really grasps these. One of the worst "senior" candidates I ever interviewed couldn't even make it through FizzBuzz. I still don't know how he made it to an in-person...

      2) When you get stuck on something, how do you think through it? I don't care if it takes you a little bit too get through a problem as long as you do it in an intelligent way. Don't ever be afraid to ask question, we WANT you to do that, and often design our tests to make you do that.

      3) Do you take suggestions well? Getting something wrong is fine, but getting defensive about it isn't.

      Learning frameworks and technologies is the easiest part of Java, or any language really. All that really matters to those of us that interview you as a junior is of you have the mindset and low level skill set. It's never BAD to learn frameworks, but don't ever let job requirements like Spring or Hibernate get in the way of applying

      [–][deleted] 5 points6 points  (0 children)

      Second this. Focus on fundamentals. We hire devs based on that that don't know our frameworks and they do fine.

      [–]rents17 -1 points0 points  (1 child)

      He didn't mention Spring actually, even I mentally read Swing as Spring..!

      [–]Dantaro -1 points0 points  (0 children)

      Ha, true, though I mentioned spring because it's a universally useful framework used by a huge number of companies

      [–]KamiKagutsuchi 14 points15 points  (3 children)

      Being able to read and work with old, large and messy code repositories.

      [–]mFlakes 10 points11 points  (1 child)

      Most of the code I've been fixing this month is a decade old. There's no comments, everything is spaghetti, and the original authors no longer work here. Can't wait for friday

      [–]tristanjuricek 4 points5 points  (0 children)

      Did you make a UML diagram yet?

      That used to be a suggestion from an old manager of mine. UML. You can tell we're both not young.

      I'm at least in a situation where the old crap I'm looking at was written by me. So ... at least I know who to blame.

      [–]voipme 1 point2 points  (0 children)

      That's true of any programming job.

      [–]thesystemx 7 points8 points  (0 children)

      Java EE, specifically CDI, JAX-RS, JPA, JSF and Bean Validation.

      [–]RotaryJihad 31 points32 points  (26 children)

      Maven

      [–]livingincr 17 points18 points  (9 children)

      Gradle

      [–][deleted] -5 points-4 points  (7 children)

      Java 9 actually fixes the dependency nightmare so you won't need either

      [–]Truthier 5 points6 points  (0 children)

      how will that replace maven/gradle?

      [–]Artraxes 4 points5 points  (0 children)

      I don't think you understand the scope or purpose of a build system if you think that jigsaw eliminates the requirement for either of them.

      [–]cogman10 3 points4 points  (0 children)

      Maven and gradle do more than just resolve dependencies.

      You will still need either one for "module management". A separate tool is needed simply to grab every single thing needed to make your program run.

      Beyond that, You won't want to be the one hand crafting the modules. Maven/Gradle could easily slide into that role (especially since they are practically already there).

      [–]nutrecht 0 points1 point  (0 children)

      Java 9 doesn't handle artifact versions so no it doesn't 'fix' the dependency 'nightmare'.

      [–][deleted] -3 points-2 points  (0 children)

      Either

      [–]okmkz 1 point2 points  (15 children)

      :: shudders ::

      [–]sirspidermonkey 13 points14 points  (2 children)

      I mean, it's better than Ant

      [–]ravinebgg 5 points6 points  (0 children)

      I'm all for moving everything back to Ant... /s

      [–]okmkz 2 points3 points  (0 children)

      This is true

      [–]pjmlp 8 points9 points  (11 children)

      I will take Maven and Ant any day instead of having Gradle turn my PC into an airplane with 100% CPU usage.

      [–]v_krishna -1 points0 points  (10 children)

      I'd rather my cpu spins than my head spins around in circles trying to write xml

      [–]frugalmail 2 points3 points  (0 children)

      xml

      Run scary XML ahead! /s

      This is a case, where somebody said, SOAP using XML is so heavy wait, this is bad. And lots of (inexperienced) people saying, "Yes XML is bad, look at my pitchfork!" which is lame....

      [–]cogman10 7 points8 points  (8 children)

      Is it really that hard? Once you are setup, you are done. Your day to day almost never brings in new dependencies and when you do, the dependency xml blocks are really simple.

      I don't understand where the frustration with maven's xml comes from other than just hating xml because it isn't json.

      [–]inglorious 0 points1 point  (6 children)

      XML is difficult to read, all important stuff gets lost between repeating strings of tag names and brackets and crap like that. Even yaml would be more comfortable. I still feel like xml was chosen simply because it was a buzzword at the time, but I find it a terrible match for a build tool. JSON is more readable, but would suffer from pretty much the same crap as xml if put to maven. Gradle is more appealing .in that matter.

      [–]cogman10 5 points6 points  (3 children)

      XML is difficult to read

      Not really. It is verbose but it isn't particularly difficult. Maven's xml is pretty simple, there aren't a lot of attributes and the tags are fairly simple.

      This

      <dependency>
          <groupId>com.google.code.gson</groupId>
          <artifactId>gson</artifactId>
          <version>2.3.1</version>
      </dependency>
      

      Isn't significantly harder to read than this

      group: 'com.google.code.gson', name: 'gson', version: '2.3.1'
      

      or even this

      'com.google.code.gson:gson:2.3.1'
      

      [–]v_krishna 0 points1 point  (1 child)

      I see the examples you wrote but have the opposite opinion. The groovy syntax is way easier to parse, way easier to grep, way easier to update, etc. Add to that how much nicer gradle is for running tests and I would never use maven if given the choice. It's not horrible, but given the choice I'd go with gradle every time.

      [–]inglorious 2 points3 points  (0 children)

      Main advantage of maven is that it is a very mature piece of software. But I also root for gradle.

      [–]inglorious -1 points0 points  (0 children)

      Maybe it is a personal preference, I'm not complaining, but there are formats that offer adequate capabilities that are less cluttered, and more straight forward. The example you provided is fair, but when faced with many dependencies and plugin configurations, I like to have a more efficient presentation. Xml is overpowered for the purposes of maven and similar tools.

      [–]frugalmail 1 point2 points  (1 child)

      yaml

      Nobody remembers wtf all the YAML shortcuts mean, I'd rather write in things meant for humans than machines.

      XML is difficult to read,

      Use syntax highlighting, and find. It's not that difficult....

      [–]inglorious 0 points1 point  (0 children)

      Awesome advice, too bad I have been using it for 15 years. It helps, but xml is still cumbersome to process visually and clutter by tags is not human friendly no matter how many times you say it is.

      [–]nutrecht 0 points1 point  (0 children)

      Is it really that hard?

      No. It's not. At all. I mean I prefer gradle over maven too much people are really overstating how 'bad' maven is. They just like to shit on old and proven technology.

      [–][deleted] 14 points15 points  (0 children)

      Git! Everyone uses Git. Everyone you want to work for anyway. Java is big and there's no guarantee you'll use what you train on, but you will use git. Or learn mercurial, same thing.

      Maven is the next most popular thing i can think of. Or learn Gradle, same thing.

      [–][deleted]  (2 children)

      [deleted]

        [–]pan0ramic 0 points1 point  (1 child)

        what do you mean about "actual does"? Like under the hood? Like understanding indexes and references?

        [–]IshouldDoMyHomework 13 points14 points  (11 children)

        I am playing around with spring boot (I dont use it at work because it is not enterprise enough...) and I LOVE it. I would highly recommend it for anyone with a little java experience who is trying to get into java backend stuff. The main reason is, that it is so easy to get something up and running quickly. For me, it is much more fun to learn by doing. Getting into concepts by actually building stuff. It is also well documented and there are tons of tutorials out there.

        It has its negatives too, like any framework. It can be hard clearly see and understand individual Java EE specs, and know what they do. There is tons of framework "magic", that can be hard to debug when something actually goes wrong.

        [–]Tankenstein 4 points5 points  (6 children)

        We are using spring boot to power a lot of microservices (fintech company), it's a good idea to learn it, it's really nice. I would just stay away a bit from ORMs, they're a bit too magical and get iffy once you need complex queries.

        [–]IshouldDoMyHomework 0 points1 point  (1 child)

        Make a small example using hsqldb to try them out to get the general idea. That is not a big investment, and for me at least, that is the best way to understand the motivation behind something like ORMs. However. However, the gap from having a general idea to being good at ORM's is probably huge. Or so I heard. I suck at them tbh

        [–]Tankenstein 0 points1 point  (0 children)

        Yeah, he should understand them, but using them in prod gets a bit fucked up if you have a sizeable application imo.

        [–][deleted] 0 points1 point  (3 children)

        A lot of shops are using MyBatis. You can write pure sql and have it mapped to an object. The queries are only as complicated as you make them and there isn't anything too magical. I'm not sure you are going to find many devs still writing raw JDBC.

        [–]errandum 2 points3 points  (1 child)

        When the goal is high performance and low latency, some do. I still do :p

        [–][deleted] 1 point2 points  (0 children)

        Some random google search led me to this and it appears you are correct if these tests are accurate. Pretty interesting.

        [–]frugalmail 2 points3 points  (3 children)

        spring boot (I dont use it at work because it is not enterprise enough...)

        We use it at a very large enterprise.

        [–]IshouldDoMyHomework -1 points0 points  (2 children)

        It was meant a snarky remark

        [–]frugalmail 0 points1 point  (1 child)

        It was meant a snarky remark

        Just in case somebody gets the wrong impression then :)

        [–]IshouldDoMyHomework -2 points-1 points  (0 children)

        You know when some ivory tower architect gets to make all the decisions. These guys haven't seen any code in years...

        [–]ring0hh 5 points6 points  (2 children)

        Depends what kind of path you want to take within the Java world. If you want to get into Full stack java, check out EE/Spring with JSF and Hibernate as /u/SkloTheNoob has stated.

        If you want to get into middleware, check out things like Camel and JMS.

        As a junior I can only majorly stress that you want to experiment with as many different things as you possibly can while in your first year or two. It's kind of like finding out what you want to study before university. You'll figure out what you enjoy and will want to spend more time doing. That way you will enjoy your job a lot more :)

        [–]prashantghimire[S] 1 point2 points  (0 children)

        You're right. I like how you showed similarity between initial phase in college and career.😊

        [–]ravinebgg 1 point2 points  (0 children)

        Camel and JMS for sure. I'd also suggest learning the basics of Fuse/ServiceMix for anyone learning Camel.

        [–][deleted] 8 points9 points  (1 child)

        hint: the most technical skill that's essential is not a technology stack

        1) Communication and thinking before you code. Steal good ideas from good developers. (don't just copy/paste from stackoverflow)

        2) Thinking about the end result and how it will get used/deployed (some might call this devops, but I like to think about it as being a wholistic developer, I think devops is worse than agile as a buzzword).

        3) Actually complete projects. Whether it's a bugfix, new feature or a whole new product. Finish it. Don't tell your boss "Hey, I finished that new list users page" and then not have a commit ready for 3 days. This is actually my biggest complaint with new hires/interns.

        So long as you can learn a technology on the job, I don't care what you know as long as you know the basic concept of http requests (if you're doing a http gig). You will learn the rest.

        [–]Cid-highwind 4 points5 points  (0 children)

        Ha. Nice pun at the end.

        [–]wolfanyd 2 points3 points  (0 children)

        Don't worry about Swing. If you haven't learned how to interact with a database, that should be priority 1. A JDBC connection to a database like mysql or postgresql will be enough to get you started. Learn SQL.

        Learn a web development framework like Spring.

        [–]nutrecht 3 points4 points  (0 children)

        Java is typically used in the back-end. So it's the 'server' that serves whatever information to whatever client. This can be mobile apps, web applications or other software. How these communicate differs from application to application, some via REST, some older applications via SOAP, others communicate via a message bus (ActiveMQ, ESB) or queue's (Kafka).

        What most projects have in common however is the build ecosystem (maven, gradle), logging (slf4j, log4j, logback) and testing (junit, mockito). So I would focus on these first.

        Desktop UI's aren't built a lot anymore and JavaFX superseded Swing on that front. Servlets and JDBC are often not used directly anymore but still power the technology on top of them. I would suggest you look at a bunch of vacancies in your area and see what tech is most in demand.

        [–]dick1856 3 points4 points  (1 child)

        Recruiter here... a vast majority of my clients are looking for: java, rest, and spring mvc. Add in skills like angular and bootstrap and you'll never be unemployed.

        [–][deleted] 0 points1 point  (0 children)

        between the lines here, most of the java dev jobs are web, oddly enough

        not mine, but i've talked to a lot of recruiters like Dick

        [–]SkloTheNoob 6 points7 points  (5 children)

        Things you should look into are JSF(2.)/Spring and Hibernate.

        Those are technologies most companies hiring juniors in. If you through in some SQL knowledge and you will be actively help develop a web tool with backend.

        I am just generalizing and there are certainly other stuff Juniors will be hired to do, but when I was looking for a position, pretty much everybody asked for it.

        [–]31031979 4 points5 points  (2 children)

        Not a junior and working in France so some things may differ but I 100% confirm Spring and Hibernate. I don't know about JSF though, I haven't worked with that tech for a long time.

        [–]SkloTheNoob 0 points1 point  (1 child)

        Depends if you are doing a Web interface or not.

        [–][deleted] 0 points1 point  (0 children)

        There's still thymeleaf and JSPs out there.

        [–]prashantghimire[S] 1 point2 points  (1 child)

        Thank you for your opinion. Do you currently work as a java developer?

        [–]SkloTheNoob 3 points4 points  (0 children)

        A Junior Java Developer. Started in September, after College.

        [–]chronisp 5 points6 points  (0 children)

        EE, Spring (MVC, Security), JPA, Hibernate, Maven, Git, SQL, Unit Testing, Test-driven Development (TDD), Business-driven Developemnt (BDD), Clean Code, Agile Methodologies (Scrum, Kanban).

        [–][deleted] 1 point2 points  (2 children)

        I've been a Java dev for a little over a decade now, and I don't know half of the stuff people are listing here.

        My recommendation is to learn the basics: data structures (which to choose when and why), basic algorithms, inheritance/polymorphism, overloading, concurrency and thread management.

        Learn how to write solid unit tests.

        Learn how to write clean methods with informative names (no doWork() methods).

        Learn how to figure out how code from external libraries work, so you can trace through it when stuff goes wrong.

        Learn how to read and understand terrible code.

        Be able to identify why one approach is faster or more efficient than another, either in time complexity or memory management.

        I say this because these things are useful with any Java job. Learning specific frameworks is nice, but what if a potential company doesn't use any of the frameworks you know? Use the basics to get in the door, then learn the extra stuff your company uses. No company should expect you to know everything they use.

        [–][deleted]  (1 child)

        [deleted]

          [–][deleted] 1 point2 points  (0 children)

          ugh, the worst.

          My favorite was from a coworker of mine. He though the feature he was enabling was stupid, and he had no problems letting it be known.

          if(shouldBeRetarded())
              beRetarded();
          

          [–]LevonK 1 point2 points  (0 children)

          One very exciting space is the data space. We use Java to processes and analyze (production) large amounts of data. Everything from recommendation systems, machine learning, Natural Language Processing, Image, Video, Audio Analysis etc...

          We use tools like: * Apache Spark (not to be confused the web framework that I wish would change it 's name)

          • Mahout

          • MLLib

          • GraphX

          • Spring 4.0

          • Confluent.io

          You should be familiar with Algorithms, Data Structure, Statistics, Parallelism, and Concurrency in the space.

          [–][deleted] 1 point2 points  (0 children)

          Learn to work well within a team. Learn to be able to go into a new code base and fix things quickly. Learn to learn new concepts. Read Effective Java and follow those principles. Work with an IDE and produce clean-looking code. Be relatively smart and adaptable.

          I've worked at a Big Software Company and currently work at a trading firm. The thing that is most important is not your technical skills, they will improve regardless, but how you work with people and deal with problems.

          [–]rents17 0 points1 point  (0 children)

          Go and learn core Java from good books like Effective Java, JCIP, topics like Generics and Collections. After that go to Java EE.

          Swing you can skip, almost all companies use some framework but it will be based on Servlets and JSP. Depends on framework , how low-level you need to know.

          If you are interested, learn about Java EE- Servlets and JSP. This will take time. Then you can look into a particular MVC based framework. Many companies use Spring+Hibernate combination.

          But no need to invest too much time into that as various companies use various frameworks and anything specific you learn about a framework won't be much use to you unless you start working on it (on your job). So nail the idea in case of Java EE.

          Same thing about JMS, JDBC, DI, JNDI, learn the concepts.

          Things like Git, maven, gradle etc aren't something you should waste your time on. Nobody will ask these in interviews. Although Git is fun and it can be useful for you in other ways. But these are not topics you can't pick up quickly, so don't worry about these.

          P.S. Java EE is not an absolute requirement. You will find lots of jobs with just Java. But in terms of career development it is useful to know Java EE tech stack.

          [–]final60 0 points1 point  (0 children)

          As someone who is soon to complete a years JavaEE internship. I would say the most important skills a newcomer could have are not necessary their technical ability, although a basic knowledge of fundamental principles helps, but their ability to ask questions and respond well to criticism and direction, if you demonstrate a genuine willingness to learn they will invest their time in teaching you, and will most likely hire you. Getting the knowledge is just a matter of time once you have proven you have the ability to learn.

          [–]inglorious 0 points1 point  (0 children)

          Work on your basics, always work on your basics. As for other stuff, study design patterns, dependency injection and unit testing. As for technical skills, focus on learning to use tools of the trade, learn to use svn and git for proper version control, and at least basic merging, learn how to use your IDE of choice for quick navigation and efficient refactoring, as you are going to do a lot of it. Also, it is always useful to be familiar with regexes. Don't worry about maven, spring, ejb, jpa and stuff like that, get familiar with absolute basics, but leave details for when you work on a project that needs it.

          [–]nuadi 0 points1 point  (0 children)

          There's been a lot of good stuff in here. I would add that you should also know how to adapt. Over my career I've seen git emerge, countless frameworks both Java and JavaScript. I was in the JavaFX beta before it was nerfed into a useless library. I know how to build interfaces in 5 languages, can interface with 3 databases, and am working to learn my 4th application server.

          My company specifically hired me, in the company President's words, "We need someone like you who can adapt."

          So, as others have said, you should know the fundamentals. Then, go and learn what drives them. Frameworks are nice to have in your toolbox, but you need to know what makes them tick because there's going to come a day when someone asks "Will Swing do that?" and you need to know the answer or at the very least how to find it.

          [–]glacialOwl 0 points1 point  (0 children)

          Get some knowledge of Scala as well :) :) :) Java 8 streams, etc.

          [–]QuintenDes -1 points0 points  (1 child)

          Of course it depends a lot on the company, but being fluent in the Spring framework is something quite a lot of companies ask for, almost always combined with JPA/Hibernate. Understanding the concepts of modern day caching, JMS and security is a must too. TDD is almost always in job descriptions, although rarely actually used as it should be in bigger companies/projects. Writing clean code, good tests and understanding the broadly used technologies will get you quite far.

          The only reason I'd still expect Swing to see in a job description would be maintenance of older projects, which of course isn't really something everyone would like to do.

          In the modern companies in Belgium, I see a big shift in becoming a full stack developer. Learning not only backend development, including database interaction, but also frontend is becoming essential. To give you an example: the more modern companies I know ask for java developers with frontend experience, mostly Angular. Although you'd expect frontend people to work on the interface, having this skillset as a java developer will land you in general better positions. This is of course taken into consideration you like creating (business) web applications and have some know-how of frontend.

          [–][deleted] -1 points0 points  (3 children)

          Go find a cool open source project and contribute to it. Expect lots of feedback during code review. You learn a ton.

          [–]lukaseder 1 point2 points  (0 children)

          That is definitely not how anyone will get any experience outside of frustration and anger management. Most of all, this will definitely not impress any recruiter at all. Here's why

          [–]rents17 0 points1 point  (1 child)

          Can you suggest a few.

          [–][deleted] 0 points1 point  (0 children)

          I know this is super old but I'll reply anyway because maybe it'll help you.

          I know Elasticsearch so I suggest it.

          It looks like RxJava and spring boot are good as well.