Dev for dummies
Few months ago I decided to drop my career as an oceanographer and decided to become a backend developer with Python, as I told some of you here. After my blog post circulates on the internet, I got an invitation to talk on the Caipyra conference, in Ribeirão Preto (thanks Marco Rougeth). I was extremely honored and went for it. I could never imagine that, after a two-day event, I had made 3 interviews and received a proposal to work in Ribeirão. And, if someone had told me that I would take it, I most certainly would have doubt it.
Well, 4 months after the Caipyra and almost 8 months after my career change, I write a little bit to tell you how is my life as a developer, in a kind of “dev for dummies” style.
The first thing I would like to say is: git is confusing. I suffer with it. Very often I cry for someone to help me because my rebase went terribly wrong. I can’t understand (or remember) all those commands of amend, rebase, fetch, etc. It very confusing, but still, very necessary.
Another thing I learned is that we spend too much time learning how to write code, but no one warned us that just as important as write code, is to read someone else’s code. And more than that: how to review a code. Very often, when reviewing a pull request, I get myself looking to it, with absolutely no idea how to test it. I read it, and it looks beautiful, but how am I supposed to test to see if it works? To me, it is still an exercise of patience and willpower. And there is even more questions that I can’t answer: are my doubts valid comments or just a noob ignorance? I lost count how many times I asked the pull request author in private and, depending on the answer, I would put my question in the public record. Yes, we need to deal with this kind of stuff.
In numerous chats of the system architetura, or even a simple idea, I have learned that is very important to go slowly on the flux of ideas. I, personally, really have the tendency of to go to the route of the problem. It is very recommendable that we look to the “big picture” of the hole problem. Very often we draw the processes in its sequence, usually starting a small person that represents the final user :) What I try to internalize is: go slowly. At the beginning it looks like a waste of time, but the slow process can optimize a lot of work later on.
Learn how to program with another person (the famous pair programming) is essential. I had to loose the fear of typing something in front of another person. I still get very messy on all vim commands when someone else is looking, but I am now able to write things while someone is looking without thinking that “I am making a fool of myself” at every second.
At the Caipyra, I said I didn’t feel like a developer and people asked me why not. One of my first answers was: “because I have never done a deploy”. Ok, I have done a deploy know. It is not that big of a deal… but I still won’t feel ready to deal with possible errors. What I realized after a deploy (with no errors, of course) is that I don’t think that knowing how to do a deploy and consider yourself a developer are correlated. It’s exciting, it’s cool, but not fundamental.
Those are some of the numerous reflection and lessons I am learning in this moment of great challenges. I have gone through some refactoring, I have built an app from scratch, I have improved tests and played with generic relations. There were moments were I wanted to break the computer or cry in front of it. At this moments… have a break! A little coffee is good for you. Stop the work! Even if you have a tight deadline. Just stop for a second! I can now say that I am a developer. Still beginning and with little experience, but still, a developer.
I would like to end my text by thanking all the feedbacks that I have received in my posts. I received several messages of people thanking me for telling a little bit about my history and that it helped them, in a way. A special thanks to my dear @seocam, Marco Rougeth, @joaojunior_jj and all my dear friends at Crave Food Services for all tenderness, learning, patience and fellowship.