First of all this is a personal post with lot of questions, insecurities and rants. Really any answer reply’s, tweet, PM, email anything would be useful and help me at this point. But first let me give a bit of a background of how I got to this stage in the first place.
I’ve studied programming since highscool all throughout University I had a CS major so I have/had the basics covered. While in Uni they hired me as a “Test automation engineer” but what I ended up doing was mostly manual testing with very little coding (or thinking by the way) with continuous promises of getting in the development side. Which never came, so one day almost after a year of getting fed up I decided I would move on.
I moved to another city get a job at a respected international financial firm and went trough their graduate program. It was wonderful they really tried their best to teach us about all the low level intricate details of *nix systems and C/C++ differences and idioms and a short introductory to function side with a bit of Scala.
After the program we where pre-placed in teams ,and although I always had more affinity for backend related task and technology someone decided I will do Flash/Flex development on a huge system but with the promise I’ll get to work the backend as well.
It’s been a year since and almost all I did was UI development and it really doesn’t suit me, while I rarely had the chance but everytime I could do any minor change on the Java backend I was really happy. Don’t get me wrong it was hard with virtually any experience with a 500k lines of code base. It was/is really hard to find way trough it. Since it is a 6 years+ old project most of the original team has moved on and any bit of documentation outdated.
I did my best to learn the theory and I can say fairly confident that I know how dependency injection works, I can use Spring and can modify the components based on the code that’s already present. I know how ORMs work and even wrote a toy one for myself at home just to get a deeper understanding. I read a lot about and in theory know and understand design patterns.
But my problem is that certain thing just don’t click in my mind. It’s mostly the why’s. Why are there factories everywhere, why are there builders upon builder, things like AbstractProxyBeanFactory and the like make me hold my head and scream. Why are things like VisitorAdapter (just like this ) defined. Why and who thought SOAP was a good a idea to communicate with integration partners. I find my self lost with no guidance at all, I rarely get to write code in the backend and feel that my home pet projects are not enough to learn certain things like this.
So my questions are as follows: How to learn ,to understand and to get better at this type of code? I thought about open source but find it really heard to contribute to anything meaningfull. It’s either also huge without anybody to ask, or I’ve read here or there that they are impatient with new people, or all they have time for is a readily made pull request.
My final question is on a related ,topic is should a try to master Java more or focus on more new and trendy stuff ?Thing is I really feel like this ,and feel like I really should try to focus on one thing just don’t really know on what.