10 lessons from my first year as a software engineer

It’s been a year since I moved from Customer Success to the Engineering department. After a year of intensive study, these are the lessons I’ve learnt.

Jessie Auguste
CodingBlackFemales
10 min readJun 22, 2022

--

Amber Shand and I presenting our talk “Be the catalyst in your junior engineer’s career” at LeadDev London

1. The difference between building your own project vs contributing to an existing codebase is easily underestimated

Between my own self study, and the part time bootcamp, I put a lot of effort and emphasis on applying what I was learning to side projects. This was in the hope that it would give me practical experience and allow me to transition into the engineering role easier.

Whilst this was beneficial, I was not prepared for the steep learning curve of having to read and understand the code that had come before me, in a project which had existed for years before I joined, in order to build on top of it.

When building your own project from scratch, it’s easy to read what you’ve written yourself, and understand why you’ve done things in a certain way. It’s also easy to know where different functions and classes live, how things are connected, and where things should go. Starting a task where you’re required to iterate on a piece of work that somebody else has started, I believe, is a completely different skill.

This complexity increases when you’re working on a feature that has been contributed to by multiple people over a long period of time. Although any given code base should have its own conventions and rules, so that it is as consistent as possible, everyone has their own preferences and styles for how they like to achieve their goal.

Reading another person’s code requires you to understand the previous requirements for the feature (which may have changed over time), by reverse engineering what is already there. This is a massive part of starting most tasks.

I think that if I had the opportunity to go back in time to prepare for this career change, I would try to find open source projects to contribute to. This would provide the opportunity to gain experience in reading other people’s code, and the collaborative skills necessary to build together with others.

2. You don’t need to be committing code on day 1 in order to be contributing

I remember feeling the pressure when starting, to ramp up as quickly as possible and deliver value from day 1 to demonstrate that I deserved to be there. This pressure was self-inflicted, and was not at all a reflection of my team’s expectations.

As a new person to the team, you have the valuable perspective of being new and fresh to something that others are already very familiar with. This is an incredible thing to have.

By asking questions about why things are built in a certain way, you might provide other engineers with the realisation that there are better alternatives, having not considered it before your question.

Your value doesn’t end there. You are still able to weigh in and give your opinion in important decisions, even though you are not writing code yet. Having a customer focused hat on could be a benefit in this situation, and you can offer a point of view in a planning meeting that could positively impact the final feature.

3. Asking questions will speed up your learning, infinitely

This should go without saying. But during my first few months, there were a lot of times where out of fear of seeming silly, I would hold back from asking a question.

The first few months might feel as if you’re not making any progress, but there is so much you need to absorb before you can apply it

As a senior engineer, it can be tough to remember what a junior does or doesn’t know. If there is an assumption of knowledge, it isn’t necessarily because they expect you to be an expert on it, but likely because they have forgotten that it’s not something you would have come across in your learning so far.

Don’t be afraid of asking more questions, it can be a helpful nudge to the engineer you’re asking, reminding them that there are some foundational concepts that need to be explained.

Since actively working to ignore that fear, I have found that I am much better able to work on tasks that require the assumed knowledge that I would have otherwise missed out on.

4. Having a support group in the form of a bookclub has been an invaluable resource

Matcha latte’s, Data Structure’s and Algorithms

Being the most junior FT SWE on my team for the year has meant that it can be hard to have someone at work to learn alongside in the same way I might with someone who has a similar experience level.

In having a group outside of work, who share a common goal of learning computer science fundamentals having come from non-traditional backgrounds, I have been able to better see and understand my progress.

5. Having a supportive environment that embraces learning can be a catalyst for growth

At CybSafe, the engineering culture is built to enable the engineers to thrive.

A good team around you would be organising regular 1:1s, so that you can get experience pairing with different engineers. Having regular catch-ups with engineers who specialise in different areas, means that you can gain their methods of learning.

Have mentoring sessions. Not all 1:1’s need to be collaborative and peer-to-peer. Sometimes the most helpful sessions can take place in the form of a mentor — mentee teaching session. A type of tuition where you can prepare questions ahead of time and get an in-depth explanation into a concept or area of the codebase can be a game changer.

You can come prepared to a session with context, and be able to demonstrate the steps you’ve already taken to understand a concept, so that the tutor in this situation can help you with your process of learning, as well as with the concept itself.

Your team can provide help in your success through the selection of quick-win work which builds your skills and knowledge of the product incrementally, while delivering value and giving you that reward.

Not being the first career conversion on the team, some of my most helpful sessions were with peers who’ve taken a similar route to me. Seek these out in your workplace with a similar experience level as they may have insights into the resources and methods that could work well for you too.

6. There is such thing as ‘trying to learn too much’

My ADHD brain loves learning new things. I can also very easily hyper-fixate on an area of technology which has nothing to do with the task I should be thinking about.

It can be easy to justify signing up to an AWS course because it’s “something we use at work”, when it would be far more beneficial to me if I did some deeper research into authentication.

Having your eyes and your mind on too many disparate topics may ultimately slow down your progress in the domain that you’re specialising in.

Keeping focus on the topics that most relate to what you’re doing, can ensure that you’re learning things that are relevant and that you will be able to apply. Rather than getting too wide a breadth, having the knowledge be surface level and not having the opportunity to apply it.

7. Learning in public and teaching, super charges consolidation and knowledge retention

Teaching an introduction to secure coding principles to a group of girls attending a Girls Into Coding event

As a beginner, it’s hard to imagine that you could provide much insight at all to others. Having read what others are learning and knowing how much that has benefitted me, I can assure you that what you have to share as a newbie has the potential to help a lot of other people.

An additional benefit that I’ve found is that by speaking at conferences, delivering workshops and writing content and courses, I have been able to commit all my learnings to a deeper level.

It is widely understood in Psychology, that there are different levels to knowledge and memory consolidation. Teaching and sharing your learnings provides you with another context and opportunity to apply what you have learnt, increasing the likelihood that this information will stay, and improving the ease with which it is retrieved and applied.

A core concept in educational development is reframing, which involves new labels, new perspectives, and the examination of assumptions. Teaching gives you the opportunity to reframe the information you have learnt, especially if you do so in a live environment where you have students asking you questions.

Being new to coding, at a cyber security start-up, I’ve found it important but challenging to learn and understand OWASP secure coding principles. In doing the research to write an introductory piece, and helping to put together and deliver a course on the OWASP Top 10, I have had to understand the concepts to a standard that allows me to confident.

As a result, I feel that I am much better able to apply these well to my work.

8. Having an external mentor provides an alternative perspective

A large part of being a great software engineer comes from managing stakeholder relationships, effective communication and presentation skills. It’s easy to neglect these “soft” skills as you focus on building up technical ability.

One thing I’ve found is that, although you can learn these things from others in your place of work, it has been fantastic to get a different perspective, away from the context that I spend the majority of my time in.

From a mentor who does not know my place of work, I am able to get an external opinion on the difficulties I am having. I get a different point of view or proposed solution which I can try out.

I also get an insight into another organisation’s processes and best practices in terms of communication methods, and can bring these with me into my own place of work.

This different perspective isn’t to be taken in isolation, but is complimentary to the regular feedback I’m receiving at work.

9. If you’re from an under-represented group, find a community

Ensure that you have others around you who share a similar lived experience.

It’s not easy showing up every day to a place where there are hardly any others who look like you, are from a similar background or experience the same issues you do.

Sometimes you just need to have a conversation with people who “get it”, without having to explain a lot of who you are and why these feelings manifest.

Having Coding Black Females, Triangirls and Black Valley as sources of community and mutual understanding has provided the safe spaces needed to continue to learn and grow in an industry where it’s easy to feel that you don’t belong.

Make an effort to seek out those groups and find people that you can connect with, the opportunities to help others as well as being helped by others, can facilitate growth in ways you may not have thought possible.

If you’re not part of an under-represented group, seek out opportunities to volunteer or help out with one.

Attend their events! You might hear a lightening talk on a topic which inspires you to do the same. You could hear about your next job opportunity. You’ll most certainly get practice at being able to discuss and debate technical topics.

10. You don’t stop feeling like a beginner after the first year

In the beginning, I looked forward to the 1 year mark as a place I would feel confident in what I was doing and not need much help.

Whilst it is true that the work I can do independently has increased in complexity, and I require less help when I do get stuck, I very much still feel like a beginner.

Not a day goes by where I do not learn something new.

This could be reframed from:

“I’m having to learn so many new things that I’m not confident yet

to:

“It’s exciting that this role is so varied that it requires me to learn new things every day”.

Learning to get comfortable with this feeling is immensely helpful in keeping the focus on moving forward (something which I am still working on).

As I reflect on the year I am excited by so many of the milestones:

  • Doing my first in person conference talk to an audience of 800+ Engineering leaders at LeadDev London
  • Part of a small engineering team that is building a product and scaling from Series A to B
  • Creating and delivering a secure coding principles course with Coding Black Females
  • Being a Women in Software Powerlist winner
  • Launching a technical podcast: Glowing in Tech
  • Participating in my first Hackathon at Athena
Amber and I at the Women in Software Awards 2022

I hope to continue learning and growing, and document my lessons and reflections next year.

Thanks for reading!

Please do share lessons you’ve learned in your software engineering journey!

--

--

Jessie Auguste
CodingBlackFemales

Backend Software Engineer at CybSafe, Co-host of Glowing in Tech podcast: linktr.ee/glowingintech