Java developers: How do I push myself to the next level?
July 25, 2013 11:22 AM   Subscribe

I am a Java developer. I am in a dead end job that used to be awesome but my company reorganized underneath us. Many of our group went to a sister company in the organization, including my old boss. I now report to someone in a distant city, though I am located in NYC. The relationship is good but he is hugely overloaded and very inaccessible and undependable. I've been interviewing, but I had two good possibilities fail recently. I think it's because I need to get to the next level.

I'm a decent dev, I write clean code, and you can count on me to get things done, but there is a lot I don't know how to do. When I look at the code more senior devs write, I know that at the moment I couldn't do something like that. I would really like to kick it up a notch. I'd like to feel less doubt when presented with a problem, and more confidence.

My question is this: How would I plan and execute a campaign to make myself a great developer?
posted by kewpiedoll99 to Technology (10 answers total) 2 users marked this as a favorite
 
I don't have much time so apologize for such a short reply but.. learn other languages.

Learning other programming languages expands your programmers' world view, gives you new approaches to take back to your core language(s), helps you build hard-earnt wisdom, and also looks great on the résumé. If you're a Java developer, I'd advise initially sticking to languages that also work on the JVM because it'll be more commercially useful to you. I'd recommend Clojure (which will demand you learn a lot of functional programming stuff), Scala, and possibly JRuby.

As well as trying new language, you should try new things in your existing language, such as some games programming, working with different databases, etc. This will all make your knowledge more broad and give you new ways of applying what you already know.
posted by wackybrit at 11:32 AM on July 25, 2013 [3 favorites]


I forgot to mention, if you haven't read classics like The Pragmatic Programmer, now sounds like a good time. Even if you're not a fan of reading about best practices, there are many books of that ilk that other developers and managers will be familiar with and they often act as a litmus test in conversations or interviews.
posted by wackybrit at 11:47 AM on July 25, 2013


Good suggestions from wackybrit, particularly RE: learning other languages. Python leaps to mind, partly because it is so refreshingly light and liberating to code in compared to Java (at least, that was my experience), and with Jython you can compile to native Java bytecode. But really, anything different is good for both the resume and for your overall skill as a developer. Once you've tinkered with a few different languages the common patterns and constructs among them become clear, as well as the strengths and weaknesses of each one. It means more tools in your toolbox and a higher level understanding of software architecture in general.

For learning new stuff, whether it's a new language or just an aspect of a language I already know, I find it crucial to make a concrete project out of it... I can follow along with an O'Reilly book and intellectually understand all of the explanations and examples, but nothing drives it home like jumping in and trying to code something on my own.
posted by usonian at 11:52 AM on July 25, 2013


As an addendum to the suggestion to learn other languages, focus less on the language and more on the problem to be solved.

When I interview someone who is invested in one language they always seem to answer every question through the lens of that language, even down to reciting code. I find that overly restrictive. The interviewee that can collaborate with me to sketch out a solution without needing to speak in terms of any particular language or framework is always viewed more favorably.
posted by rocketpup at 12:00 PM on July 25, 2013 [1 favorite]


The "learn different languages" thing, while definitely true, is already well covered, so I'll skip that and focus on:

When I look at the code more senior devs write

The best developers I know seek out other developers who are smarter or more experienced than they are, so they have someone to learn from. You have access to code that's better than what you can do currently. GOLDEN OPPORTUNITY! Study their code! Learn how it works! Try to figure out why it was written the way it was, how it might have been written differently, pick out chunks and try to rewrite them and compare your results with theirs. If you have any access to the senior devs who wrote it, that's even better, because you can ask them when you get stuck. (Or end up figuring it out on your own in the process of trying to formulate a question that won't waste their time, which is how I usually wind up.)
posted by ook at 12:05 PM on July 25, 2013 [3 favorites]


Another good strategy is to learn to write, start with short- to medium-length blog posts to articles about a particular topic. Someone with communication skills will edge out more impressive coders in a lot of job searches. Get friends to read and critique your writing, and write for a specific audience.
posted by Space Coyote at 3:44 PM on July 25, 2013 [1 favorite]


Learn a different skill. Java, particularly enterprise Java and all the bloated libraries surrounding it, is coming to the end of its life for interesting work. If you want to have fun with the cool kids spend some time learning Node.js for server side Javascript, or get solid with JQuery + Bootstrap for client side Javascript, or learn all about setting up Amazon EC2 instances efficiently. Or build some expertise with databases (Postgres, MySQL, and at least one NoSQL like MongoDB. Or Redis.) If you're really wedded to Java, learn some Scala.

None of these skills themselves land you a new job. But they'll greatly expand your vision of writing software beyond the Java world.
posted by Nelson at 3:56 PM on July 25, 2013


Write more code. Throw it away. Write it again, only better. Throw it away again. Repeat until you see the same thing you are seeing in the senior developers' code.

There is no silver bullet. Practice. Preferably in languages in addition to Java. Learn code patterns, why they are useful, what problems they are meant to solve. Bone up on algorithms and data structures, mistakes there are the easiest way to bomb any interview.
posted by jraenar at 4:21 PM on July 25, 2013


The book Apprenticeship Patterns will be helpful. I can't recommend it highly enough.

It's about being a software engineer, but not about programming - more like a guide to managing your career as a developer and it really speaks to your situation (and many others). Perhaps you could take a turn Being The Worst, for example.
posted by mjg123 at 5:28 AM on July 26, 2013


Response by poster: Thank you to everyone who posted suggestions here. I forgot to mention that I also know PHP, but I still think that learning another language will be super helpful. Many people seem to adore Ruby, so I might try to tackle that. I've also signed up for the MongoDB class at 10gen, which starts today.

My buddy also sent me links to this programmer competency matrix and this article about "leveling up" as a programmer which talks about setting goals that you deem representative of next-level stuff. So I'm in the process of setting up a plan with goals and tasks to get there. Thanks again for all your ideas!
posted by kewpiedoll99 at 7:20 AM on July 29, 2013 [1 favorite]


« Older Jealousy over the ignorance of others   |   Source of Gore Vidal quote about writing Newer »
This thread is closed to new comments.