I am in the last quarter of Hack Reactor's 12-week advanced software engineering immersive. I have wrestled with Git, solved problems with algorithms, and written a lot of code that does a lot of cool stuff. I have also written a lot of code that didn't work as expected.
There was one project where literally nothing worked. My team had inherited a web app from a previous project and we were tasked with adding additional functionality. My team was able to bang on the project until cool things happened. My stuff never, ever worked.
I tried to rescope my role, I changed tech stacks, I asked for help from staff. I did lots of research and wrote lots of code. Then I was out of time. I felt like I had just wasted several days of my life. After the deadline, my team presented a demo of the app. They had built some cool functionality. I was really happy for them. And I was very sad for me. This is a huge part of my portfolio right now. Can I even include it on my resume when I didn't contribute anything?
It is currently on my resume and I know how to talk about it now, after encouragement from the staff and reflecting on another time when I was devastated by what I thought was an abject failure.
In the fall of 2003, I went to college with a full-ride ROTC scholarship. I left the program after the first semester. I felt like I had lost everything I had ever worked for. Looking back it was one of the best decisions I've ever made. The military lifestyle is not one that would make me happy. I shoudn't feel ashamed for trying and determining that it was a bad fit. It is better that I be self-aware and move forward when things aren't working than stay just to prove that I can.
The same thing can be said for my 'failed' project. We are always working under a deadline. Sometimes we write jenky code. Sometimes we don't even know why our code works. When the deadline hits and we have a successful deliverable, we get to be proud of it, no matter how jenky it is or if we can explain why it works. At this part of the program, we're software engineers and nobody has a magic solution. We're the experts. Sometimes the experts don't have answers. Your work can be valuable even if it didn't appear in the final product.
Thomas Edison said, 'I have not failed. I've just found 10,000 ways that won't work.' I had learned lots of ways my project wouldn't work. I learned some other things, too.
Being a good software engineer requires empathy.
It's easy to blame the person who wrote the original code, or the tech they used, when you are having trouble building on an existing project. Because I am not them, I don't know if they felt the same frustrations that I did when the wrote it originally. They may have tried 10,000 things that didn't work. They felt the same pressures that I did. I know how they feel. It isn't their fault that I can't get this to work now. It might not be anybody's fault. It just might not work.
I'm not advocating that we stop striving for excellence in our coding. I am advocating that we be nice to ourselves and to others while we all try to write better code. Just because my code wasn't in production during the demo doesn't mean it wasn't valuable.
Sometimes you have to take a bullet for your team.
Sometimes you choose a path that leads to a dead end. Sometimes you run straight into a brick wall. While you were doing that, another teammate was working on something that worked. By the general definition of a team, if you are working on something that's failing, you are freeing up another team member to work on something else.
You are learning what doesn't work. You are researching a testing possible solutions. You're helping the team make decisions about what features to keep and which ones to cut. Those are valid pieces of your story and deserve to be talked about.
It's easier to whip Git into submission, I've written a few more algorithms, and I've written a lot more code and not all of it worked. And that's ok. I'm still building cool things at Hack Reactor and I'm ready to talk about them, even if it didn't work like I expected.