In 2021, I joined Barclays as a Software Engineer through their Aspiring Developer graduate scheme—a program specifically designed for non-technical graduates eager to transition into tech roles while learning on the job. It was the perfect fit for me, having studied Mathematics at university but wanting to pivot into the tech industry. As part of the graduate program, I completed a software engineering immersive, where I began to learn Java. Fast forward three years, and I’m now a confident Java developer, building meaningful solutions within the bank. The learning curve has been a rollercoaster. I quickly realised that focusing on areas with commonly repeated patterns, such as building and integrating with APIs, significantly accelerated my growth. However, coming from a non-technical background and lacking a solid foundation in programming fundamentals sometimes slowed me down, particularly when it came to designing and testing solutions effectively
Throughout my time learning Java I’ve had my share of lows, I’ve spent hours (days) trying crack a single unit test, created more infinite loops than I’d like to admit, and had too many late nights scrolling through the final pages of Stack Overflow trying to solve a problem. Fortunately, problem solving is one of my greatest motivators and each challenge has driven me to continuously learn, and also learn from my mistakes. I’m now not only able to build clean and stable software, but also able to pass on knowledge to my peers through mechanisms such as paired programming or peer reviews.
Java is great first language to learn, it teaches excellent object-oriented principles, and is so widely adopted that there is an incredible amount of resources to learn from. Below I’ve listed some of the ones I felt most useful:
- https://medium.com/codex/building-your-first-rest-api-java-and-spring-boot-5f3573f59f55 – The article I followed when building my first REST API. It gave me my first insights into project structure and the satisfaction of having functional software up and running quickly.
- https://www.pluralsight.com/paths/spring-framework-core-spring – Similar to above, I find getting code up and running is one of the most rewarding ways to learn. Learning the Spring Framework is a great way to enable this, as it allows for rapid development whilst learning the fundamentals of java. By following an online course, you can learn at your own pace whilst working towards a target.
- https://www.baeldung.com/ – Baeldung’s website content is completely free and is an excellent resource for learning Java and the Spring Framework. I find when reading code e.g. on stack overflow or on a PR, I use Baeldung to look up and understand feature that are new to me.
- ChatGPT – I say this with caution as I’m grateful to have avoided the urge of having an AI write code for me when I was a beginner. However, in recent months, I’ve found it to be an excellent companion in my learning, helping explain and demonstrate advanced concepts so I can deepen my understanding.
That being said, it still seems the learning never stops. Last year I found myself asking a senior developer “When will I feel like I know what I’m doing?”, they smiled and said “Never”. I’m grateful for that answer, as I’ve realised having the confidence to be vulnerable is one of the best accelerators for learning something new. Through asking lots of questions, taking on advice from peer reviews, and learning from errors I’ve been able to grow skills at a pace I never expected.