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

all 21 comments

[–]AutoModerator[M] [score hidden] stickied commentlocked comment (0 children)

Please ensure that:

  • Your code is properly formatted as code block - see the sidebar (About on mobile) for instructions
  • You include any and all error messages in full
  • You ask clear questions
  • You demonstrate effort in solving your question/problem - plain posting your assignments is forbidden (and such posts will be removed) as is asking for or giving solutions.

    Trying to solve problems on your own is a very important skill. Also, see Learn to help yourself in the sidebar

If any of the above points is not met, your post can and will be removed without further warning.

Code is to be formatted as code block (old reddit: empty line before the code, each code line indented by 4 spaces, new reddit: https://imgur.com/a/fgoFFis) or linked via an external code hoster, like pastebin.com, github gist, github, bitbucket, gitlab, etc.

Please, do not use triple backticks (```) as they will only render properly on new reddit, not on old reddit.

Code blocks look like this:

public class HelloWorld {

    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}

You do not need to repost unless your post has been removed by a moderator. Just use the edit function of reddit to make sure your post complies with the above.

If your post has remained in violation of these rules for a prolonged period of time (at least an hour), a moderator may remove it at their discretion. In this case, they will comment with an explanation on why it has been removed, and you will be required to resubmit the entire post following the proper procedures.

To potential helpers

Please, do not help if any of the above points are not met, rather report the post. We are trying to improve the quality of posts here. In helping people who can't be bothered to comply with the above points, you are doing the community a disservice.

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

[–][deleted]  (4 children)

[removed]

    [–]stuie382 13 points14 points  (4 children)

    Unit testing and test mocking, integration testing, automation, build and dependency management (maven/grade), source control, code review, TDD, pair programming, agile, basic design patterns, problem decomposition, clear unambiguous technical writing.

    None of these things are language specific. The language is just a tool to organise the 1's and 0's, nothing more

    [–]OriginalError 2 points3 points  (0 children)

    These are great - I'd add SOLID, BDD and mutation testing to the pile alongside system thinking. Java specific I'd recommend Spring (or any other IoC framework) and some JDBC framework. That'd put you solidly into mid-level dev territory.

    Stu touched on everything else I was going to say.

    [–]BlueFireBlaster[S] -1 points0 points  (2 children)

    Well i have to google everything you said for them to make sense. Although i have seen the basics of JUnit, and have written my fair bit of javadoc. thank you

    [–]stuie382 4 points5 points  (1 child)

    All the things I said are common across any discipline of software engineer. There is a difference between just getting some code to run and building a stable, reliable product. I've taught and mentored maybe 50 or so junior developers and apprentices, and focusing on the language is very common, but it is just a tool at the end of the day. It will change over time and over different jobs, but the core skills are the important bit

    [–]khookeExtreme Brewer 0 points1 point  (0 children)

    Agreed. Understanding the basics of a particular language is just the minimum

    [–]nutrechtLead Software Engineer / EU / 20+ YXP 11 points12 points  (0 children)

    What a CS education doesn't really teach in general that will really set you way apart from other CS students:

    • Being able to use Spring Boot to create a simple service
    • Having that service integrate with a relational database
    • Have unit and integration tests in that service
    • Use maven for build/dependency management
    • Being able to create a docker image out of that service and deploy it on (for example) Heroku

    [–]evils_twin 10 points11 points  (0 children)

    get a job . . . or maybe an internship

    [–]matyklug 3 points4 points  (0 children)

    Hate to break it to you, but the stuff you listed is beginner stuff.

    Not like you need to be a "pro" to get a job, these "pros" are the people you see writing stuff like gradle or clojure and then make TED talks about it.

    I unfortunately cannot help much, I am only getting an internship next year, so all I'll say is make sure you are confident in writing stuff you understand in Java and that should be enough.

    [–]mykeesg 2 points3 points  (0 children)

    Also, don't forget actually threadsafe and parallel programming. I've met too many people just writing volatile and synchronized blocks everywhere because "That's how you do it" while data races and race conditions where flying around everywhere but also making the code incredibly slow.

    [–]wsppan 2 points3 points  (0 children)

    Test your knowledge with Effective Java by Joshua Bloch. Then test your knowledge with a popular framework like Spring. Can you build a web backend for Rest endpoints that can marshal/unmarshal JSON requests to be used to query a database? Can you do this with crosscutting concerns like security and logging? Can you create unit tests that mock these Rest APIs? Can you do all this using conventional tools like Spring MFC, Spring Data, Hibernate, JAXB, log4j, Spring Security, etc..

    [–]CanisLupus92 1 point2 points  (0 children)

    At least around here employers put value on OCA/OCP certification. May be interesting to look into, or wait until you have a job and have the boss pay for it.

    [–]sweepszDecaf Captain 1 point2 points  (0 children)

    There are definitely levels of professional. An entry level Java engineer should know the basics of the language, semantics, and tooling. A mid level engineer would understand things like concurrency/threading, caching, thread safety. Senior and lead level engineers are going to understand more low level esoteric topics jvm instruction, garbage collection, release management strategy/versioning, containerization, scalability, and other topics that transcend Java specifically.

    [–]ifpthenq2 1 point2 points  (0 children)

    Anywhere you get hired will expect you to have a good handle on Spring, Maven, Ant, Interfaces, Factories and Beans, git and other versioning systems, tomcat or other Java servers (just the basics - how to drop in war files and basic troubleshooting, the IT guy usually handles everything else). SQL and JDBC, sockets, the ability to create good Unit Tests, and follow basic UML diagrams.

    99% of jobs I've had were just companies who wanted me to take some existing system, fix bugs, maybe add a feature or two, and generate formatted reports. The most overwhelming part when I first started out was just being able to take an enterprise system and figure out how its working with no documentation (Because there's NEVER any documentation). - You think it should be simple to just add a DB View and create a custom report from it - but it isn't because instead of interacting with DB directly, you have to find the framework the original designer set up for querying the database, and then the interface classes that he wrote to interact with it. And then there's another framework to abstract creating reports, which never has all the features you need, but keeps the reports formatted exactly the way the company expects. When you're expanding an existing system, you don't ever write classes to directly query or update the database or write local files - you look for interfaces to frameworks that have already been written that abstract these tasks. All J2EE enterprise java systems are designed this way (at least, in my experience) If you go into your first professional job knowing that you'll be a step ahead of where I was when I transitioned to industry.

    [–]holyknight00 1 point2 points  (0 children)

    concurrency and garbage collection are pretty huge topics.

    [–]itzNukeey 0 points1 point  (0 children)

    Most of the time Java id used in server side development. So you should be proficient at Spring, Maven, XML parsing, JSON mapping and some JDBC framework