If you wanted to polish yourself and become a software engineer, someone who makes things that work, reliably and consistently. My suggestion would be to download Pharo open source Smalltalk, go through the lessons in the Pharo MOOC, and learn how to write real applications in a developer friendly environment, with plenty of people on the Pharo email lists willing to help anyone new.
Smalltalk was my first language at university, followed by Objective-C, and as a result Java was a bit annoying, but relatively easy. Smalltalk is very different, syntactically, because the syntax is entirely based around objects and messages, rather than parameterized method/function calls.
I recently received an email from a consulting firm that specializes in Smalltalk asking if I’d be willing to move back to an area I lived in for nearly a decade, but is over a thousand miles from where I live now, which is really home to me. The interesting thing was that it wasn’t a job writing in Smalltalk, it was a job as a Java developer, but the hiring manager would only interview Smalltalk/Java developers, because ‘people who grew up with Java can’t write object code.’
Below are a couple of links. One word of advice, at first just use the classes and messages in the way the high level examples do. Don’t worry about ‘needing to know’ how the messages are handled by the objects internally at first. By the time you need to know that, you will. Unlike Java or other ‘object’ languages, where you do need to know what the method does with the String or int in its signature in order to send the right one,
in Smalltalk you send the whole object and let the class figure out how to handle it. Which makes a good deal of sense, since the developer of that class ought to know how to handle a message with an object more than a caller of the class. As you pick up more you can go further into the depths of the system, because all of it (except a minimal bootstrapper) is there as source, the language, interpreter, VM code, JIT compiler, etc., and it can all be modified in real time, though until you really know what you’re doing, I wouldn’t advise modifying the VM kernel, interpreter or JIT compiler within your application :).