A week into my web dev gig and there’s a TON of information that has been consumed with a faulted attempt to process it in a reasonable way. My task for this contract is to get up to speed as soon as I can with, from my point of view, a fairly complicated codebase. I like the challenge though. Things have always came pretty natural to me throughout my life and for once I actually feel like I’m truly being challenged on a daily basis, it’s frustrating but rewarding feeling. This week came with some pretty big realizations, struggles and jumping into unfamiliar territories.
First off I wasn’t prepared for this, not in a bad way but I definitely didn’t expect the complexity of the tasks that I would have to perform right out the gate. It’s not that I find them to be too difficult but that I have so little exposure to them that they seem confusing. The codebase that I am working with is based off an API first mentality meaning that Rails is the API and, in this situation, the front end is Ember JS. Two things that I haven’t had much experience with, I’ve been learning primary with a Ruby/Rails full stack with a focus on CRUD apps with a little bit of added complexity. It’s a bit overwhelming but I see the incredible value that it serves and look forward to truly understanding it all.
Not being able to have the safety net of the Rails frontend everything is verified and built via TDD/BDD using RSpec. Another area that I don’t have a ton of experience with so this has created another layer of complexity. I got a swift realization that my testing skills are atrocious but with time I will get better and better at them. Right now things are moving painfully slow because I want to do my best to focus on writing good tests and develop the application in a pure TDD approach. This is pretty different from how one starts out learning Ruby/Rails. If you are starting to learn Rails make sure you are also learning TDD in tandem so that when you land your first dev position you can jump right in with writing tests.
The big focus of my week was focusing on the HelloSign API which was an interesting learning experience in how a more complex API integrates and interacts with a Rails application. It was pretty frustrating at points but that’s because I was over complicating things, it can be a real problem for me. I had to be reminded and remind myself that I need to break things down into smaller chunks. If you’re like me and have been doing a technical job for quite some time you take for granted and often forget about how in the beginning when you were learning that you needed to break it down into its smaller parts. In my current IT role I can roll multiple tasks up in one because I know what I’m doing but with software development since I’m fairly green in experience I find myself slipping into wanting to roll multiple tasks up in one but since I don’t know all the moving parts I run into frustrations and complications. My biggest learning experience this week was that I need to remember to always break things down into smaller parts or I will create undue hardships for myself. The learning of the API was valuable but the re-learning of the troubleshooting process was far more valuable.
The last few days have consisted of working with Ember JS and I’ve got to say seeing the results of what it’s capable of I’m fairly impressed, however, JavaScript is still a pain in the ass. Since I haven’t focused on JavaScript really at all in my development career so far this has been an interesting battle of attrition. I currently have this horrendous love/hate relationship with Ember JS and JavaScript as a whole. I know how powerful and quick it can be but at the same time it’s like trying to write a book in ancient sanskrit; it’s painful, frustrating, and most of the time I don’t know what the hell I am writing but having seen the results I’m motivated to keep learning and persevere through the attrition.
This week hasn’t been easy from my side of things because of the learning curve and having to work two jobs but the challenge is real and it’s what I’ve been looking for for many years. There’s a lot to learn out in the world but what I can say from this week is learn TDD, if it isn’t working and you think it should be easy it’s because you’re making it hard, break things down into smaller chunks, and make sure you are reading and comprehending your tasks properly. Jumping into your first dev gig isn’t as easy as maybe some of us may wish but if you get a difficult one with a great company it’s worth all the attrition and pain you may endure. It’s always hardest before it isn’t and that’s what you’ve got to remember.