Logo Passei Direto
Buscar

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

How I was hired
I've been working here at Passei Direto for almost two years now, and it really amazes me how I evolved from my internship days to the present. Here I'll tell you key parts of my progress from intern to being hired.
Starting
I started as an Infrastructure Support Intern. Back then, we had some routines that required a good amount of manual work. One of those, and probably the most extensive and delicate, was the entry of new employees. It was a stressful routine, with several steps like:
Getting data from a Google form (filled by our colleagues from the People team or the new employee's future manager) containing all the info we would need for this process
Creating the employee's company email account
Creating an account/invite for each service the employee would need, and that would vary depending on his/her work profile (for example, a developer would have a different access profile than a product manager, and so on)
Editing and send an onboarding email to the employee, putting their future manager or pair in copy (the content of this email also would vary based on the employee's profile)
Then finally, configuring the new employee's computer, also based on his/her work profile (in this case, the computer model and programs installed would vary)
I think it's pretty clear why this routine was delicate. It was not only extensive but also very unreliable because of all the manual work needed. We were hiring a lot at that time, so imagine going through this whole process three or four times on the same day. It was only me and my coworker Jonata on this mission, so it was getting harder and harder for us to deal with all that.
Baby steps
We had this goal on our roadmap to automate a lot of our routines, including the one I described above. Since we had tons of manual work, as a consequence, we had almost no time to start implementing automation. So we started taking baby steps.
Jonata implemented a local image server so we could create pre-configured Windows installations and inject them into the computers through the network.
He also implemented an inventory system (Snipe-IT) to help us control our actives and keep an eye on the need to buy more resources.
Okay, some of the things were already on their way to glory, but we still had that pain I described at the very beginning.
Here at Passei Direto, we have this annual event called Hackathon, where we brainstorm some ideas, divide ourselves into small teams, and then spend a whole night developing those ideas. In the end, we all present the results and the winner gets a prize. Also, the winner's idea can actually be deployed in production!
Anyway, at this event last year (2019), Jonata and I decided to use the period of the event to start developing a solution to automate the new employees' entry process. With the help of Leon (our friend and member of the DevOps team), we started writing Python scripts to interact with the Google API.
We split the job in three ways:
Leon was writing the script to create accounts in our GSuite organization
Jonata was in charge of the opposite�deleting accounts
And I was in charge of the update script
Writing those three modules gave us a glance at what this could become and how it would optimize our work.
We weren't able to test it all together because Jonata and Leon had to go home and it was only me for the rest of the night.
That was the first time I met Python and it was love at first sight. I was so excited about that project that I stayed up until morning (with the help of some Redbull shots) tweaking up those modules we wrote.
By the dawn, I already had a completely functional prototype running in a terminal screen, receiving inputs and dealing with them.
On the next day, I showed the results to my teammates and they really enjoyed it. Even though it was really simple, for my first time programming in python it was quite a nice result. Actually, I could say that it was my first time trying to solve real problems with programming. You don't see stuff like that in college.
So, basically, after the Hackathon, I started to dedicate more of my time to this project. Jonata and I used to brainstorm a lot on how things could turn out. He was the project manager and I was the developer.
To make the system more usable, we had the idea to create a web interface where everything could be done in a few clicks. Then, Leon told me about Django, which is a web framework for Python, and how it would be easier to use our existing code.
Things are going south
I had no idea where to start, besides diving into Django's docs (which are pretty good by the way), learning how to use it. After getting familiar with the basics I was able to create a form page where we would fill in all the new employee's info we needed and then execute something on the post action.
This is where things started to go south. I spent literally weeks struggling on how to make the form post work. I was obsessed with it, even working on weekends. I'll let it be clear that I wasn't being pressured by my team whatsoever, it was a personal pressure I was putting in myself to make at least some progress.
After a lot of struggle and searching, on a Sunday night (around 11 pm), I finally managed to make it work. The form post called a function I wrote to send a request to the Google API and successfully created an account in our GSuite organization. Every time an account is created, all of our team receive an e-mail alert�so you already know what happened. On the next day, my teammates gave me that "I know what you did last night" look �.
Okay, it worked! But filling that form every time was still a problem. We shouldn't have to worry about filling the form, our concern was using the information already provided. This information should be static and the system would deal with that automatically for us.
Okay, it works� but it's ugly
Thinking like that lead me to an idea: let's retire that Google form, and now every information will go through our application. Bingo! I don't mean to brag but that was a great idea �.
This part of the app was completely functional, ready to go, but the interface� I'm not a designer, you know, so you can imagine how ugly it was:
Screenshot
I couldn't release a project that ugly for the whole company to use, right? I was so excited to release this and I would need to spend more time (and I mean a lot of time) creating the HTML and CSS (as I said, I'm not a designer so it would take too much time). But Leon (yeah that guy from before, you know him) told me about AdminLTE. Leon, if you're reading this, you saved my life that day ��.
AdminLTE is a library of HTML templates, mostly for admin like apps. You can customize it however you want (colors, icons, navigation bar, etc). It is really easy to use, so I spent only one day refactoring the website's design. And there it was, beautiful as never before!
Releasing the project
The most wanted day has come: the day I would show the project to our mates from the People team.
I remember showing informally to Lian and Jessica at their table. I told them to open a tab in their browser and type the app's address. The look on their faces was really gratifying: "You did this??!". And I, with all pleasure, started to explain to them how the website worked and how it would help all of us.
We soon decided to retire that Google form for good and start to use exclusively the PDU (how we called our application), short for PD UserManager (and PD is short for Passei Direto).
That's not all folks
Along the way, we saw the opportunity to automate more things using PDU.
We had this other stressful routine: VPN certificates.
VPN is a crucial tool for our developers to access our servers from anywhere. And some developers relied completely on a VPN connection to keep working. Our certificates are set to expire in a year and we only knew one had expired when someone called us for help.
We had to access the VPN's administration web interface, create a certificate with all
its configurations, then create a client also with all its configurations, then export the compacted file and send it to the employee via email.
It was a very long process to accomplish a simple thing. So the idea was to automate this routine with just a few button clicks using PDU's interface. Not only make the whole process faster, but also alert us when a certificate was about to expire (the chosen threshold was of two days before expiring), so we could act in advance.
It was not easy at all to implement, I tried several different approaches like sending requests directly to the VPN web interface, I also tried to use Selenium to navigate the web interface, and go through the whole routine, none of them were very effective.
So I decided to use Paramiko. It is a package that allows us to make remote connections using Python code. It literally saved my life ��!
To summarize, what I did was:
I made a form with two inputs, the first one was a selection field to choose the VPN region. The second one was a text input where we would type the employee's username, in this format: firstname.lastname (which is also our email pattern).
And there were three buttons: Create, Verify, and Revoke.
Create would, obviously, create a certificate using the given username and automatically send the file to the employee via email.
Verify would check if the certificate for the given username is active or expired.
And Revoke would deactivate the certificate for the given username.
Behind the scenes, PDU is connecting directly to the VPN server machine and running Linux commands to go through the whole routine depending on which button we click on the form. I also implemented a scheduled task (which runs every day at 10 am) to check for certificates that are about to expire and alert us via email.
Witchcraft?
After automating the VPN routine, other tools were implemented, but I think one of them deserves more attention. Remember that inventory system I told you guys about at the beginning? Yeah, that one, that Jonata implemented. It was basically our asset manager. We were using it to not only manage our physical resources but also have control of which person was using which asset (computer, accessory, etc).
When a new employee was about to come, we had to choose manually the better computer fitting his profile. And also manually associate all assets to him in the inventory system. Yet another manual job.
So we decided to make an integration between PDU and our asset manager. This process was now to become part of the employee's entry routine. So Maria Izabel and I (shed had recently joined our team at the time) started implementing automation for this.
The result was so satisfying that it looked like witchcraft or like PDU was creating consciousness �!
Now with just a button click, PDU searches the inventory system for any assets available matching the employee's profile and automatically associates them with him.
The moment
PDU has become a solid application, giving us a lot more than we expected! It saved us so much time to do other things and start other projects.
This whole effort called the attention of my leader at the time (Fabiano). He was our leader and also part of the DevOps team. At the end of the year, our company was entering a new era, we were dividing ourselves into squads (small multidisciplinary teams) and Fabiano called me to join a squad along with the DevOps team to learn and get started in this new world.
That was the moment! I had the opportunity to do new things and start a new journey! So I, of course, accepted the invitation and in January of 2020, I became the first DevOps Intern in our company!
Restarting
I worked along with Leon, absorbing everything that I could. I learned so much about CI/CD, Docker, CloudFormation, CDK, in such a short time. Not because I was smart, it was due to all the help I had from my colleagues. I felt like I was starting all over again (in a good way).
At that time I wasn't part of any specific squad, I was getting tasks on the fly as they appeared. But after a few months working as a neutral piece, I was invited to join a squad. It made me very happy to feel part of a team and it was the time that I learned the most.
I was the only DevOps in the squad and though my colleagues understood that I was only an intern yet I knew it was a lot more responsibility than before.
The day that I took our website down
For those who might not know our product, we're basically a study network where you can share and consume study materials at different degrees. So when I say "website" here, is our main product's website and all of its applications.
My squad is responsible for some applications involving our content and the upload is one of them, which is a crucial and delicate one. So I had this task to migrate the upload to run in a dedicated environment, separate from the other applications in production. I won't lie, I was pretty nervous, it was one of the first tasks I took in my new squad and it was quite a responsibility. Today I can see it was kind of a simple task, but back then I didn't have much experience and was really scared of something wrong.
After studying the best way to do it, I started developing a new stack in parallel to the current one at the time, things were actually going pretty well. Until the day I deployed the new stack�
Well, I messed up the configurations and it impacted all of the other applications in production. Nothing was responding anymore, and thousands of alerts started to pop on Slack. I didn't think it was because of something I did, but yeah, it was my fault.
Embarrassed I sent an apology message to everyone and how they reacted was a shock� (this is a great moment for a To be continued� �)
They were actually very empathic and said it was everything okay, shit can happen sometimes. It was funny because people started to tell awful mistakes they also committed. It made me feel less guilty and it was a moment I'll never forget!
It's about those around you
Even though I took our product out of the air for a while that day �, I was hired as a DevOps Engineer after a few months. The road I drove to get here starts at the very beginning of this post. Every mistake, every lesson learned, every advice, everything has lead me to this.
And if there is one lesson I can take of all this is that: it's not about how smart you are, it's about the people surrounding you.
I would never be hired if I wasn't surrounded by great people helping me!
I'll dedicate this to Jonata, Robson, Leon, Fabiano, Larissa Paz, and my squad!
Thank you guys, you are the best! � � �

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?