Your First Developer Job: A Different Perspective
Today I read an article by Matthew Kjer in Hackernoon here on Medium, called “Being a Junior Developer is Tough”. As someone working at my first job as an iOS developer, I completely understand that sentiment. However, I found the way he expresses his points quite unhealthy and problematic. Here I am going to provide my own perspective — as a developer bootcamp graduate, a 30 year old man in his second career, and someone who suffers from chronic depression — reinforcing these points in a more positive way. I will also rebut some of the thought patterns he presents, which I found to be quite unhealthy. No matter whether you have a CS degree, a bootcamp education, are self taught, or are only just now wondering what starting a career in software development is really like, read on for positive and uplifting advice from someone who is at the bottom of the ladder.
Get Used to Learning
Matt’s introduction revolves around his perspective as someone who started off as a developer just out of university. He lists a set of tools that he started using at his first developer job, and very rightly says that early in your software development career, you will be overwhelmed. This is very true. I have never been so stressed as I was this week, going through a massive codebase I had never seen before, touched by many hands, and beholden to my employers and users alike. While at Flatiron School, I was taught a set of development tools and frameworks — many of which I continue to use. However, it could easily have gone another way. Another student was hired to pursue mobile development in an entirely different language. There are hundreds if not thousands of combinations of toolsets out there. I still had to learn new tools at my new job, and I fully expect to learn entirely new tools at my next job.
Matt’s focus then shifts to the fact that the intermediate and senior devs know this feeling because they have been there themselves, which is also true. However, what he fully neglects to mention is how they left that feeling behind. The answer is: they got used to learning.
At Flatiron School we are taught to “Always Be a Beginner”. This is because developers aren’t just developing their apps, they are developing themselves. We are constantly striving to be better, and that’s why some often liken themselves to martial artists using words like Sensei, Dojo, and Ninja. Even intermediate and senior developers are learning every day. The tools we are using today will be different from the ones we will use next year. The languages we use right now will be outmoded in five to ten years. We were taught that we will always be confronted with a tool that we have never used before. Senior devs are just used to that feeling and even seek it out actively. Let’s strive to do the same every day, and not wait for experience!
Embrace Opportunities to Learn, Not Inadequacy
Asking questions is great and you should totally do it. Getting a mentor is great and you should totally do that. But, don’t do it because you feel inadequate or like you are an imposter. The feeling of inadequacy is a weakness and a self doubt that will only cause you pain and harm. Focus on your accomplishments, and take some time to look back to see how far you have come. Look at the code you are writing now, and when you get home boot up your first few coding exercises. Realize just how much you have learned and understand that now that you have graduated and gotten the job, you have already gotten past the hardest parts.
From listening to others’ experiences at talks and in conversation I have learned that being a Junior Developer is the time to make your mistakes. In fact, it will be expected of you that you make mistakes. Did you push a change that crashed the app? Did you ask a question that got you weird looks at a meeting? Did your pull request get sent back to you with comments? All of these situations are opportunities to learn something. There is a reason that the tech industry likes to “move fast and break things”, because that’s how learning happens. Embracing your inadequacy is a great way to destroy your self confidence. Instead, embrace opportunities to learn. Push that idea that you are not good enough right out of your head and buckle down!
Don’t Put Experienced Developers on a Pedestal
Respecting the skills of others is extremely important not just as a developer but as a co-worker. We should do the same for our compatriots in Product, Design, Marketing, Business Development, and Accounting as well! Setting your own goals based on the skillsets of other developers is also extremely important. But as you do this, remember that the mindset is everything. Check out Matt’s words:
“Comparing yourself to others I’d also deem a necessary evil. ‘I wish I was as good as X, they know f*****g everything.’ It’s an unfair comparison, but a necessary one.”
Not only is this degree of comparison not necessary, it’s absolutely wrong. Nobody knows everything. I’m positive that even my own programming idols — Bjarne Stroustrup, Linus Torvalds, Steve Wozniak, Chris Lattner, and Jim Campagno — don’t know everything. There is so much going on in the world of software development that one brain can’t hold it all. The only reason you may think someone knows everything, especially if you are a recent undergrad college graduate, is that you are coming from a place where nobody knows anything and entering a place where everyone knows something — and a lot of them do know a lot more than you.
Idolizing and fetishizing your “superiors” will lead directly to Asshole Driven Development because you will be less likely to speak up and question their decisions. This will rob you of opportunities to learn and to defend your own ideas. Putting Senior Devs on a pedestal could even lead you to becoming a dreaded “1337 coder jerk” yourself. Having gone through the experience of humbling yourself at the feet of your “betters”, you may come to expect this behavior from others later in your career. Then either no one will want to work with you or nobody will challenge you. Either way, you will stagnate — and every professional developer I have met (as well as my own experience in IT) has informed me that in Tech, stagnation is death.
Matt seems to be a well-meaning guy, and I respect that he has learned much in his first year as a developer whereas I have only worked a single week. However, I can’t help but feel that his article is actually quite condescending towards those who are in my position as far as just starting their jobs, even as he recalls that experience for himself. A possible rebuttal to my criticisms in this article could be that my opinions differ from Matt’s only in terms of phrasing. This is true, and in fact it’s the point. Please allow me to explain:
As someone who suffers from chronic depression, I can attest that Matt’s phrasing follows negative cognitive patterns that have plagued me for my entire life. From my own standpoint, I can’t sit back and allow other people to encourage these negative thought patterns which have harmed my own development even when they mean to express things that are true. Additionally, I am passionate about making the tech industry better for people who have faced challenges far worse than mine, discrimination which I have never faced, and harassment I have never experienced. I do not believe that it is my place to compare myself to or defend these people. However, I do think that the fact that these experiences exist means that it is important that we developers phrase our advice in a way that is positive and uplifting. “You ain’t shit” negative motivation is for the military, where everyone is being molded into the same thing. Let’s leave that out of the Tech industry, please.
I am totally against coddling others and expect hard work from my fellow developers no matter who (or how experienced) they are. I judge others by the quality of their work and their character. However, that comes with a need to communicate compassionately, be a positive influence on everyone around us, and be mindful of other points of view whether or not they match with out own. In our careers as developers, good communication skills will be extremely important. It is my hope that we learn to speak not only from experience but from a position cognizant of the positive change we want to see in others around us and the world at large. After all, we got in this business to change the world, didn’t we?
Thanks for reading!