Starting your career as a software developer is daunting. Additionally, software technology and processes change so quickly that it can be difficult to keep a grasp on career development and personal growth. How can young developers reconcile providing value to their teams while still taking time to focus on personal growth? Here are some of the things that helped me in my first couple of years as a software developer.
Persistence is a virtue
For me, persistence was one of the more painful skills to acquire as a young developer. I found that your context increases dramatically from what we are used to in school. When I was studying for an exam, my solution scope was finite. If the material didn’t show up in the textbook, slides, or lecture notes, it was not going to be on the test. In the professional world you get a problem with infinite solutions (including not fixing it at all!) and tradeoffs that you have to manage. You have to scour the interwebs, StackOverflow, and your colleagues’ brains to determine which solution is best for you. Simply put, there is no one right answer.
Building persistence is painful—but necessary—when transitioning to a professional solution set and adding value as a developer.
Context is Everything
Understanding my business end-to-end made me a better developer. It helped me empathize with stakeholders and, more importantly, helped make efficient use of my time. For instance, if I understand the user’s problem space, I can go to my product owner and say:
“X will cost you 3 dev weeks, but I see what problem you are trying to solve. I can deliver you Y in 3 days. You won’t get exactly what you want, but I think it will satisfy your requirements.”
Many times product owners have pushed back, but time is not wasted because their reasoning helped me align my thinking with the vision (oh, I didn’t know this about our users!). Ongoing discussions help build an intuition of the user story and helps add value beyond the code.
No two senior developers are the same, and gaining exposure to as many of them as I could helped me figure out what kind I want to be. I’ve found that developers get their letterman jackets by contributing in one of a variety of ways. Some become subject matter experts in the code, others design complex system architecture. Most do many things, but also specialize in one in particular. I gained face time with as many as I could by attending meetups and seeking out mentorship opportunities (can I buy you a beer? Or better yet, can you buy me one?).
How did I decide which kind of senior developer I want to be? What does their code look like? What do they care about? Why? How do they interact with their peers? Learn as much as you can from each experienced developer you encounter by emulating them. Sometimes all it takes is figuring out which feels right.
Find the right environment
My first job ever I was writing code within a week. I was lucky enough to be surrounded by people that guided me and were not afraid to push me into the deep end (with the sharks and a giant squid!).
Unfortunately, being a contributor is not entirely in your hands, it depends on your environment. I have many many friends who have left engineering jobs and careers because they were in the wrong environment. It is vital to recognize when your environment will hinder your growth as a developer. Here are some places to look:
The Interview: Is your interviewer proposing a symbiotic relationship? Tough technical review is a great sign, but questions like “Where do you excel?”, “What is your ideal role?”, and “Why Square Root?” show that the company wants to help you succeed.
Your First Week: How many people in the company have you met? Many companies will throw new developers into a room with a senior developer and inundate them with material to get them technically ramped as quickly as possible. Instead, look for companies that want you to understand their business and processes first (ideally during the interview). They hired you because you are technically qualified, but do they want you to contribute across board?
Your Team: Do your peers push you to extend your knowledge? Good teammates push you to stretch your knowledge and skills (ideally in areas that interest you!), and have your back when you make a mistake trying to do so. Does your team help each other grow?
The best advice I can give to a new junior developer? Investing in your personal growth is vital in achieving your goals. Use it to advance your career, solve different types of problems, and continue loving what you do.
Interested in checking out what Square Root has to offer developers? Check out our careers page.