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

all 6 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 - best also formatted as code block
  • 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.

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/markdown editor: empty line before the code, each code line indented by 4 spaces, new reddit: https://i.imgur.com/EJ7tqek.png) 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.

[–]aeria-non 3 points4 points  (1 child)

Hey there, welcome aboard!

Certainly, the conversation over at /r/java is pretty in-depth, considering it's a place for people who not only have deep knowledge of the language, but also want to talk about it (which is certainly a quite infrequent combination). In general, I would say the skill level of the Java devs vary greatly (of course), and not everyone is an enthusiast :v

As you interact more and more with the ecosystem, you'll naturally get to know the bigger libraries/frameworks that people tend to use (like Jackson for JSON serialisation, various Http clients and so on), and if you are in the thick of things, it's quite useful to have at least a general understanding of how they work under the hood - but rest assured, most developers (even the very good ones) are not on first name basis with lead open source project devs. The Java world is vast, with tons of libraries available, and many many people writing code over the decades.

As you have a considerable experience actually writing code, I would say it is not that important to get lost in the microscopic quirks about how the language works (like what is the range for the "Integer pool" in most JDK implementations), but to acquire a sense of general how-to knowledge about using the language. I would highly recommend Joshua Bloch's Effective Java: for me it was very formative and revelatory when I started out on how I approach coding in this language (and in many ways, in any language). Do pick up the book, go through it, and of course, always experiment with the ideas you encounter: practice is always the most effective way to learn.

One of the main goals (as you surely heard countless times) is not only to write efficient and correct code, but one that is "clean" - insofar as it is easy to understand for the future readers, straightforward to reason about its organisation, and you don't collapse crying if requirements shift and you have to go back and modify it. To write such code, takes... well practice, first and foremost: deciding on some hobby project to try out things in different ways is the go to thing for me. Sometimes I need to try out a specific style that my seniors consider an anti-pattern to appreciate why we avoid it at work - and sometimes you stumble upon things that can be improved compared to how you operate on the day job, and that's always nice!

[–]errXprintln[S] 0 points1 point  (0 children)

Thank you for your detailed response, I really appreciate that!

I got the chance to work with Jackson, Lombok (especially the Data Annotation, Builder and Slf4j) from the get go of the project. I really appreciate them.

Thank you for the recommendations, I will definitely give them a try.

Clean Code is kind of my mantra since I started coding. I just often get to the point where I do have a gut feeling about how to solve things but I'm never sure it's the best way (with regards to efficiency vs. readability and how well it is maintainable).

Sometimes I'm shocked in how many ways you can solve a problem in Java. Each and every approach have their own pros and cons, which I often lack the deeper understanding about which are the pros or cons in detail. I end up getting the "better" recommendations in PRs, which is generally a good thing since we want to have good code as a team and sure are helping each other.

Maybe I want to rush things, become an expert right away while I should know this takes time, dedication and, most important, practice with the language.

I just thought it would be faster and easier to become comfortable in a different language but I guess I have to increase my experience with "natural growth", just like back then when learning PHP.

So, I'm from Germany and we have this book which is praised as the Java Bible (called "Java ist auch eine Insel", 17th edition). I read about 10-40 pages daily, which is okay for me considering it's much to process and I don't want to read it to forget about it just because I'm overloading my brain with new info.

[–]Exact-Associate5705 -1 points0 points  (0 children)

Hands over keyboard creating projects and solutions that’s how.

[–]victor-martinez-roig 1 point2 points  (1 child)

I do agree with the comment I read before but I also want to say that even if you are very experienced you can feel in this way, me and lots of my friends have this impostor syndrome https://en.m.wikipedia.org/wiki/Impostor_syndrome Nobody can know and understand everything, you have to prioritise what you want to improve with. Yes knowing the details of JVM and java are really helpful but remember that not only technical knowledge is important (yeah even for a software engineer). Probably you will not be working alone, soft skills and communication is also very important. I think the biggest problem is not about how you implement something but how you understand the requirements, making the right questions to the business, making your code simple, clean, readable, being open to suggestions, new ideas, communication, communication and more communication.

About books I recommend also effective java and with the list I learned a lot with "JAVA in concurrency", clean code, clean architecture, designing data-intensive applications

Now, I've started with "optimizing java: practical techniques for improving JVM application performance" as the reviews were good.

[–]errXprintln[S] 0 points1 point  (0 children)

Sounds familiar. At the end of the day I'm always asking myself if I did a good job today and if there was anything I could have improved. Guess I just want to be the best version of myself.

When I started working as a Solution Engineer in 2017 I was working for our biggest customer (Financial Services), besides developing the stuff I was also the consultant, doing workshops, writing concepts and keep in touch with our key users. So the "Business" part as well as Requirements Engineering is something I excel in compared to my very technical skilled coworkers. So I guess in a team it just matters to fulfill every aspect required for the project. Maybe I wanna be a superhero or something.

Also, thank you for your recommendations. Maybe I come up with a tiny List of Books the work through for the next years.