I've been working for four years as a software engineer after graduating college with a Computer Science degree, where most of the core curriculum used Java. However for work I ended up using Ruby on Rails and Golang.<p>I have upcoming interviews with companies I'm interested in that largely use Java. I feel very conflicted about this because when I first interviewed for companies and tried whiteboarding in Java, I failed miserably because I was so slow and the syntax was so verbose. I later switched to Python but I'm still worried about the day-to-day life as a Java programmer. Though Java has a vast ecosystem, I don't particularly enjoy working with that language. I feel like Java inhibited my ability to think holistically in terms of software architecture and design, and I'm worried my design and architecture skills may suffer if I use Java regularly for work.<p>In addition, I have strong interests in contributing to open source software in my spare time, and many of the projects I'm interested in are written in Go, C++, or Python. I'm worried about the cognitive effort it would take to balance this work when my day job is in a completely different language.<p>Looking for advice on how to deal with applying/working for a company that has great benefits but unappealing programming language that conflicts with personal projects and dealing with fear of skills worsening<p>tl;dr<p>- Learned Java in college, used Ruby and Go for work<p>- Dislike Java because of verbosity, syntax, overuse of OOP, and perception that it obfuscates and complicates software architecture & design<p>- Have a strong interest in contributing to open source projects written in Go, C++, and Python. Worried that Java day job will make this balancing act of programming languages much more difficult<p>- Conflicted on following through with companies that use Java given language, personal interests, and fear of skills declining<p>Any advice would be much appreciated, thank you!
I started programming in Java when it was in beta and thought it was revolutionary at the time, I was right. Personally I like Java. I think you can improve your quality of life dramatically in most cases by swapping out Eclipse for IntelliJ. You have to make peace with POM files, and find your own answers to boilerplate.<p>I have always followed the market when it comes to programming languages. I have often started a job without any experience in Language X (like that Java job above) and usually gotten up to speed in 6 months or so.<p>I had some bad experiences with Python circa 1999 but around 2015 I saw a lot of demand for Python work with some involvement in "data science" -- Python got a lot better. However, Javascript in all it's forms is rolling like a freight train in my environment: I got took off a Python project to move onto a React project then wound up at a small unit of a large company on another react project.<p>I have spent little time personally w/ Ruby and Go but I think they are competitive. They all have a lot going for them but they are all full of footguns which become increasingly obvious as a system becomes bigger and complex.
Why are you applying for Java jobs? It sounds like you want some reasons to not do it :-). Java is just a language, and I agree with you, its not very appealing with its factoryFactoryFactorys and so on, but it can pay well, but there are other jobs around.<p>As for interfering with you're side projects - I've used multiple languages, after a while changing between them is pretty easy. I liken it to people who know multiple human languages, they can switch effortlessly between them, programming languages are a lot more similar than human languages.
More than anything else: be honest and be yourself.<p>Emphasize your knowledge of programming, the cool things you've achieved in C++, Go, Ruby, and Python, that you might be rusty on the syntax of Java but it's not a foreign concept and can be productive almost from day one.<p>And maybe do some Java practice in the mean time? Maybe build something like a tinyurl clone in Spring (Boot) and post it to Github as "refreshing my Java skills" projects.