For about five weeks now I’m working together with another apprentice on an internal Rails application. Being tasked with a completely new framework and working environment, I wanted to share some of the experiences I made during that time.
That application was the first project I’ve done at 8th Light that was not a personal apprenticeship application. Like Tic Tac Toe for example, where we may pair on some stories with other apprentices but working just in our personal codebase/repository.
So being together with other apprentices on the same codebase felt really good. We had good conversations about the features we need to implement. And with the comments in the pull requests I definitely learned a lot. It’s great having a completely fresh pair of eyes looking at the changes you committed. Sometimes there are things that just slip through while pairing on a feature. So this is definitely a plus.
Having a six hour time zone difference between the team members is unfortunately something that can be hard at times. Communications between team members can take a while with a time difference like that. That’s something every team member needs to be aware of and try to not waste too much time during discussions.
That’s especially true for situations where a discussion needs to be settled. I prefer talking directly to my colleagues when I feel there’s something that needs to be resolved. Asynchronous communication via e-mail or instant messengers just don’t help at all. So I’ll keep that in mind for me should it happen the next time. Then I’ll probably just call the person directly and discuss the matter – if the local time of both persons allow it, of course. I didn’t run into problems where I would have needed to call someone in the middle of their night to hit the red button…
The transition phase into the new project was a bit rough for me though. Having never worked with Rails before, I felt lost in the codebase at least for the first two iterations. Granted, it’s not rocket science working with Rails (I know that now). But having a feature where you need to add a new view and controller and don’t know how to add and wire it up correctly is just frustrating at the beginning. You somehow know what you want to do, but you just don’t know how. But it’s all part of the learning process.
Another thing I learned is, that you shouldn’t take the existing structure of the codebase as a best practice for new features. I don’t mean that everything has to be bad that already exists, but maybe there’s a better way to do certain things. Even if similar things have been done in the application already in a certain way. The discussions in the pull requests we’re a great learning experience for that.
I’m looking forward to introduce new apprentices to the application, now that I know what is going on in the codebase.