Six things I’ve learned in my first year as a Software Developer

Published:
September 22, 2021

​In July 2019, I took a leap of faith (no pun intended) and changed career, industry, and location to become a Software Developer. I had been working as a Data Analyst in the Civil Service for a couple of years and had felt like I needed more of an intellectual challenge: a job that would engage me more and provide me with a greater sense of purpose.

This potentially life-changing decision was made after amassing a grand total of six months of coding experience — yet I haven’t looked back. This article serves as a reflection of the things I’ve learnt about software development, about learning, and about myself as I approach my first anniversary as a Software Developer.
A picture of the author
Me: Software Developer, Jollof Enthusiast, Avid Traveller

1)An engineering journal is a beginner’s best friend

Author’s engineering journal template
My template for my daily Engineering Journal entries
​My engineering journal is essentially an electronic notepad where I do three main things on a daily basis. Firstly, I document all my achievements, big or small, such as solving a complex bug, completing a tutorial, asking a pertinent question, making a new connection at work. I also write down all the new things that I learnt that day including any questions that I asked my colleagues and Google. Lastly, I write down a to-do list.
As simple as it is, taking the time to consolidate my thoughts at the end of the day is really therapeutic. I get to convert my written rushed scrawls into meaningful notes and also get to close down all my open StackOverflow tabs(!) Writing in my engineering journal has meant that my learning process has become more intentional and less ad hoc, and it also allows me to shut off from work at the end of the day without taking any stress home with me. You just have to remind yourself to make time for it. I try and complete mine in the last 30 minutes of the day, or first thing the next morning if I’ve been super busy.
Using applications like Notion or Bear means that you can create sophisticated journals that can be searched, and sorted allowing it to become a valuable resource that can be continually built upon. It’s sooooo much better than flicking back and forth through my written notepad trying to find where I jotted down a certain piece of info that I vaguely remember noting down a few weeks ago!

2)Ask questions, and then ask some more!

As I don’t have a traditional tech background — everything is new to me. Although I’m distinctly aware of the cliched ‘there are no stupid questions’ and people always like to say ‘ask as many questions as you want’: so often I feel like I have *too many* questions. Like I’m a nagging child constantly asking ‘but whyyy?’
But do ask them. Ask Google, ask your peer, ask yourself, ask a senior colleague.
Ultimately tech is made by people, people who bring their own experiences and learnings to the codebase. And what I’ve realised is that the majority of my questions largely revolve around ‘why has this part of the codebase been written like that?’ or ‘why is this process like this?’. At the start of my developer journey I used to accept the codebase as the gospel, but it wasn’t until I started verbalising my questions that one of two things occurred. Either a more senior developer would end up pointing me in the direction of a new concept/syntax/technique (yay for expanding my learning), or there would be no real answer other than ‘it just works’.
Whilst the latter seems unhelpful, it has given me a lot of opportunity to improve the codebases I work on when I’ve identified that what’s currently there doesn’t read well, could be more efficient, or otherwise improved upon. It also reassures me that other developers are often winging it, just like I am, and keeps the imposter syndrome monster at bay.
So, ask your questions. If something is unclear there usually means that there’s an opportunity for improvement in your learning and if not, then an opportunity for improvement in the codebase, in the documentation, or even in your team’s working practices. Just make sure you write down the questions you ask and their answers in your engineering journals!

3)Sometimes you just need to work with where you’re at

As a developer you’re always learning regardless of how many years you’ve been in the industry and I learnt pretty early on to let go of mastering everything. It’s impossible — the technology and goalposts are ALWAYS changing. Yet there is still a burning urge inside of me to get better and to progress. But it is exhausting.
Instead I’m striving towards a healthy balance between learning brand new concepts and consolidating the knowledge that I already have. I’ve realised that I gain as much, if not more, by slowing the pace and choosing to build my confidence with my current knowledge rather than jumping from one new thing to the next. I’ve also learnt the art of judging whether some concepts are beyond my comprehension at this current point in time.
Focusing on all that I don’t know is overwhelming. However, focusing on what I do know and building from there is much more manageable and retainable.

4)The EUREKA moments occur when you take a break from your laptop

Picture this: you have been working on a new feature in a project for a day or two, it’s all slowly and gloriously coming together…except this one tiny thing that just won’t work. You try x and you try y, you try debugging, console logging, commenting out parts of the code. Still nothing. Hours go by. Then, for me at least, there comes the point where I eventually give up — I go to the gym, I go and lie down, I go and hunt down some comfort food.
This is a fairly typical scenario for me. And it’s *always* in these breaks, when I’m minding my business, avoiding coding thoughts, that my sub-conscience will bubble up with a solution.
And so now, I’m trying to be more mindful about taking breaks, as tempting as continuously hacking away at the code is. Just looking away from my laptop for five minutes to stare into space, or going to fill up my water bottle or any other seemingly mindless activity, has been a surprisingly productive discovery. Who knew my tendency to daydream could be so helpful?
Next time you’re stuck on something, instead of grinding away at it non-stop, try walking away and thinking about something random or even not thinking for 10 minutes or more. Return to your machine when you’re at peace and trust me you’ll have a new sense of clarity!

5)Don’t attribute your worth to your technical ability (or lack thereof)

I’m fortunate enough to have always been a high-achiever, from school, to university, and in my early career. Along the way that ‘achievement’ wove its way into my sense of identity. And honestly there’s nothing like joining a completely new industry where I have very little (technical) expertise to blow that sense of identity out of the water!
This year I’ve had to re-evaluate and reflect on what ‘success’ looks like for me and what value I bring, in a world where technically my skills are minimal. That starts with understanding that the role of a Software Developer is much more than just coding.​

​Sure, I can’t write 30 lines of JavaScript without my trusty friend Google but there’s a lot more that I bring to the table. Some of these are personal attributes — I’m super curious, I am tenacious, I pay attention to the details. And some of these are core skills I’ve honed whilst not being in the tech industry like being able to explain something clearly to different audiences, context-switching whilst working on multiple projects at once, building relationships, conflict resolution and so on.
If you’re new to software development like I was and struggling to find your place in a team where it seems like everyone knows what they’re doing, take a step back and trust that you’re there for a reason. Assess your skills more holistically and find opportunities to display them. Maybe you create excellent documentation, or you may be a STEM ambassador, or have fun ways to run meetings, there will definitely be something!

6)Talking to others gives you a better perspective of your journey

It’s so easy to fall down a rabbit hole as a new developer, or even more broadly, as a beginner in anything. You focus on your progress or perceived lack of it, you work hard and push yourself, and it becomes easy to focus on how much further you have to go rather than how far you’ve come. As simple as it is, talking and listening to others in a similar boat can put everything into perspective.
My developer journey first began in an evening course full of women who were all mostly new to tech. This was then followed by me starting on a Graduate Scheme with another cohort of people with similar-ish skill levels. So, I’m lucky that I do have groups of people who are largely going through the same experiences that I am. We can go for lunch and natter and be reassured that we are all doing just fine, or if something seems off my colleagues can chip in with what their experiences have been and I can course correct.
If these resources aren’t available to you, I’ve also joined more technology Meet-up groups than I can name (Signify actually run a monthly specifically Scala meet-up) and I couldn’t recommend them enough, particularly if you are from an underrepresented group in tech. They tend to be free or at the very least affordable, with food(!) and the opportunity to meet others, be pointed in the direction of new resources, and see the career paths and decisions that others have chosen.
If you have a daunting fear of networking, don’t be put off, you can still gain insight and perspective by simply turning up and listening to the panellists, or by making small talk with just one new person. Following developers of a similar skill level on Twitter or finding online communities is also a great way to get an understanding of the achievements and troubles that others have, which can help put yours into perspective.

​It’s almost been a year since I career-switched into Tech and I definitely feel like I made the right decision. It’s challenging, the learning is endless, and I’m constantly building things to destroy them and re-build them again, but that’s the fun of it! I have a job where I get to problem solve all day and I feel very fulfilled doing so.

​By Faith Ege

If you’d like to learn more about entering the tech industry, find out more about Coding Black Females, or would like to share your story, get in touch through any of our social media channels, or drop us an email at info@codingblackfemales.com.

Related news

Revealing Future Trends: Scala, Rust, and Go Language
Published
March 19, 2024
As the digital age accelerates, companies are constantly evolving, seeking robust and efficient technologies to drive their development. A pivotal aspect of this technological adoption lies in choosing a programming language that addresses current needs and is sustainable and scalable for the future. We recently conducted a poll to gauge industry insights on which programming language professionals believe will dominate enterprise development in the next five years. The results offer a unique perspective on the future of programming in enterprise environments.Our poll attracted diverse opinions from professionals across the technology sector, revealing a close race among three major languages, with a surprising twist in the respondents' anticipation for the future.Scala With its functional programming prowess and seamless Java Virtual Machine (JVM) integration, Scala received 18% of the vote. Its sophisticated type inference, immutability, and pattern matching enhance developer productivity and software maintainability. Enterprises that have invested heavily in Java find Scala a natural evolution, offering advanced features without abandoning their existing infrastructure.RustRust, acclaimed for its memory safety features and performance, garnered 26% of the votes. Designed to provide safe concurrency and prevent segmentation faults, making it an ideal choice for high-stakes enterprise applications where security and speed are paramount. As businesses increasingly focus on data integrity and efficient processing, Rust's assurances in these areas make it a strong candidate for future dominance.Go With 27% support, Go, or Golang, stands out for its straightforward syntax and powerful concurrency support, traits highly valued in the fast-paced world of enterprise development. Its robust standard library and built-in features for concurrent processing enable developers to build scalable and maintainable systems efficiently. As enterprises seek to streamline operations and handle massive data volumes, Go's simplicity and performance offer compelling advantages. Interestingly, the largest % of our respondents, 29%, believe that none of the languages mentioned will dominate enterprise development in the coming years. As organisations navigate their digital transformation journeys, the choice of programming language becomes a strategic decision influenced by team expertise, application requirements, and long-term goals. Whether sticking with time-tested languages like Java and Python, adopting newer alternatives like Kotlin, or exploring the languages highlighted in our poll, enterprises must balance innovation with pragmatism to thrive in the ever-evolving technological landscape.Which language do you think will rise to the top, or do you foresee a different trend shaping the industry?
View post
Advantages Of Using Golang for Web App Development
Published
February 6, 2024
Want to develop your unique web app and attract more traffic? Well, you have several options when it comes to programming languages. However, choosing the right one is vital to ensuring the success of your web app.  No doubt, C, Python, and Java are among the prominent options for web app development. But Google's Go language (Golang) is also becoming popular recently. About 70% of software developers consider using Golang for app development. That's indeed significant!  Now, you must be wondering, when there are several programming languages, what makes Golang so different and popular? Well, it is gaining popularity owing to the features and benefits it offers.  This article will provide you with valuable insights into the advantages of using Golang for web development. Let's dive in!  An Overview of Go Language  Before exploring the advantages, one should have an idea of the programming language itself. The Go language, or Golang, is a famous open-source programming language.  Go was initially developed by Google in 2009 for internal use to leverage the powers of Java and C#. Today, it has gained the trust of developers worldwide, allowing them to build secure and scalable web applications trouble-free.  Golang concentrates on solving development issues, inspired by Python's relative productivity and simplicity. Those include uncontrolled dependencies, effort duplication, cross-language development, and slow build time.  Golang simplifies software development as it offers less complicated programming. However, it is significant to note that Golang is still in its infancy stage. But it has garnered immense popularity in the last couple of years.  The Advantages of Using Golang  Want to make use of the Go language for your next web development project? In that case, go through the most convincing benefits before hiring the developers.  Easy and efficient codes  When it comes to web development, coding is an integral part. It often consumes a lot of time. However, with Golang, coding is easy and efficient.  Codes are two times shorter than other programming languages without affecting functionality in any manner. Besides, they ensure equally high performance. It helps save a great deal of time and allows developers to complete coding in much less time.  High speed of execution  Essentially, Go is a compiled programming language. That means it has been translated by the compiler from a high-level to a low-level language. Hence, it becomes easy to understand for the processor.  Consequently, the compiled programs tend to run faster. Besides, you don't have to install any extra programs for execution.  Enhanced performance  The Go language performs better than other programming languages, such as Python. Did you know that it is even faster than Python versions 2 and 3? Yes, you read it right! Are you wondering about the secret of such high programming language performance? It is mainly due to its concurrency model and higher CPU scalability. This creates Goroutines, exclusive to the Go language, that adds more functionality to the execution. Also, Goroutine provides affordable resources and allows you to save resources efficiently.  Ideal for large-scale projects  Working on large-scale web app development projects is often challenging. However, with Golang, you do not have to worry. It allows the development of large-scale and complex applications in a hassle-free manner.  Easy to learn  Do you have a basic understanding of Java and the C language? If yes, you can easily use the Go language for web development. It has an easy learning curve, which makes it quite popular among developers.  The syntax and keywords may be different in C and Java. However, the procedural approach remains the same. You will get familiar with the programming language in much less time.  Comprehensive programming tools  Golang offers you the freedom to choose the best tools for your web development project. From among the best Golang Web frameworks, libraries, databases, and other tools, you can pick the ones that meet your requirements.  Moreover, you can also download IDEs, editors, and plugins. So, you will have no issue finding the most appropriate development tools for your web development project.  Built-in package manager  Programming languages like Python require you to install third-party packages. However, Golang comes with a built-in package manager. As a result, it becomes easier for the developers to manage codes.  Moreover, you can easily pull in more libraries as per the requirements without the need to install them. It makes the development task easier for beginners.  Easy documentation  Documentation plays a vital role in the coding of an application. So, developers try their best to simplify this process. In such a situation, leveraging the Go language can be an ideal choice.  Golang comes with GoDoc, thereby making the development of documentation pages easier. Developers do not have to make use of other languages like PHPDoc, JavaDoc, or JSDoc. Using simple English is sufficient. Consequently, Golang helps save a great deal of time for developers.  Doesn't require web framework support  Most programming languages require web framework support. But that is not the case with Golang. This is what makes it very unique and distinct.   The Go language is self-reliant. It comes loaded with numerous in-built tools. Besides, it gets the necessary support from the native language core. Therefore, you don't have to worry about conducting extensive research to find suitable frameworks.  Huge community  The Go language is a modern programming language. It is growing at a rapid pace and has a large community of developers. Thus, using this language is extremely beneficial for your web development projects.  Additionally, you can contact professional developers to address any issues for faster development. Moreover, you can stay up to date about new industry trends and receive seamless support from the community.   Wrapping Up  Besides the advantages mentioned above, web applications created using the Go language are easy to maintain. So, now that you know the benefits of using Golang for web app development, it's time to hire proficient and experienced developers.   The programming language is here to stay and will likely witness increased demand in the coming days. Hence, connect with expert Go developers today to build high-performing and feature-rich web apps.  
View post
Fullstack Developer Emerges as the Most Demanding Role in 2024 🚀
Published
January 23, 2024
In a recent LinkedIn poll that resulted in over 1,300 votes, the Fullstack Developer role has emerged as the most demanding in 2024, resulting in over 59% of the votes. This revelation raises questions about the factors contributing to the heightened demand for Fullstack Developers in ever-evolving technology. One of the key reasons behind the demand for Fullstack Developers is their ability to navigate both front-end and back-end development seamlessly. In today's fast-paced digital era, businesses seek professionals who can develop end-to-end solutions, ensuring a cohesive and efficient user experience. Fullstack Developers, with their versatile skill set, become invaluable assets in a tech-centric world. Technology is evolving at an unprecedented pace, and companies are constantly adopting new tools, frameworks, and languages to stay competitive. Fullstack Developers possess the adaptability required to keep on top of these changes. While Fullstack Developers lead, Back-end Developers secured 23% of the votes. Back-end developers have the specialised skills to handle server-side operations and database management, bringing deep expertise in server-side technologies, APIs, and database management—essential components of any robust digital infrastructure. The LinkedIn poll results, with 59% of respondents identifying the Fullstack Developer role as the most demanding in 2024, shed light on the evolving needs of the tech industry. The all-encompassing expertise, adaptability, efficiency, and cost-effectiveness of Fullstack Developers make them indispensable assets in a landscape where innovation and digital transformation are paramount. As technology advances, the demand for professionals who can bridge the gap between front-end and back-end development is likely to persist, solidifying the Fullstack Developer role as a cornerstone in the ever-changing world of technology.Top of Form
View post
Rust vs Go - Exploring the Similarities and Differences
Published
October 26, 2023
In the ever-evolving landscape of programming languages, two names have become prominent in recent years: Rust and Go, also known as Golang.  These languages have truly caught the attention of programmers globally due to their unique features and strong use cases. In this blog post, we'll dive into the similarities and differences between Rust and Go. Memory Safety  Both Rust and GO have memory safety as a priority; however, they have their own individual approach.  Rust is known for its ownership system; tracking and enforcing references and memory allocations ensures memory safety. It eliminates common pitfalls like data races simultaneously, making it an ideal choice for system-level programming. GO, on the other hand, relies on garbage collection for memory management. By reducing the risk of memory leaks and dangling pointers, it remains a memory-safe language and simplifies memory handling.  Performance Both languages are praised for excelling in terms of performance. However, GO does not match Rust's high performance; its efficiency and garbage collection make it a strong choice.  Rust's fine-grained control over memory and low-level access contribute to its speed.  Now, let's get into the differences.  Error handling  Rust is advanced when it comes to error handling, to help reduce the likelihood of error emission, the system is based on Result and Option types.  It's known that GO has a more straightforward error-handling system, and if not handled correctly, it can lead to error omission. Functions return multiple values, including an error, which is easier to work.  Ecosystem  Active communities and growing ecosystems but focusing on different areas.  Rust is frequently used in systems programming, the construction of web servers, and other performance-critical software. The Rust community strongly emphasises open-source development and maintains an extensive repository of documentation. GO is highly favoured in web development, microservices, and crafting networked applications. Its community is celebrated for its commitment to simplicity and practicality, underpinned by a resolute focus on real-world use cases. Rust and GO are versatile programming languages with unique strengths. Your choice between the two should depend on your project's requirements, your familiarity with the languages, and your personal preferences as a developer. Rust excels in memory safety and fine-grained control, making it ideal for performance-critical applications. Meanwhile, GO shines in concurrency and simplicity, making it an excellent choice for building scalable, concurrent systems. Ultimately, the right choice is the one that best suits your specific needs and goals.
View post
Events and Conferences; Let's talk about the benefits
Published
October 11, 2023
In today's fast-paced world, digital communication dominates, and attending events and conferences seems to be an outdated way of gaining knowledge and expanding your network. However, they are invaluable for personal and professional growth. In this blog, we'll explore the benefits of attending and why they are worth your time and investment. Learning OpportunitiesThey offer copious learning opportunities; bringing together experts and industry leaders who share their insights, experiences, and knowledge. From keynote talks to panel discussions and workshops, numerous ways exist to gain new perspectives, skills, and information. Whether you want to stay updated on industry trends, acquire new skills, or dive deep into a specific topic, these opportunities provide knowledge.  NetworkingOne of the most significant benefits, and one of our favourites, is the opportunity to expand your professional network. Interacting face-to-face with like-minded individuals, experts in your field and potential collaborators can lead to valuable connections. Gaining these connections will open doors to finding job opportunities, learning about meetups and even sparking new business ideas. Inspiration and MotivationWe're always learning, and the industry is constantly evolving; sometimes, we even just need a little push to reignite our motivation and enthusiasm. Attending events and conferences can be a powerful source of inspiration. Hearing success stories, listening to passionate speakers, and engaging with individuals who share your goals and aspirations can rekindle your drive and ambition and provide a different perspective on situations you may not have considered. Brand and Career DevelopmentAttending events and conferences can significantly boost your brand and career development. If you're a professional or an entrepreneur, speaking at or sponsoring such events can enhance your credibility and visibility within your industry. It can also serve as a platform for showcasing your expertise and ideas. Additionally, attending these gatherings can help you stay updated on industry trends and developments, making you more marketable and relevant. Recharge and ReconnectIn our hectic daily lives, losing touch with our passions and priorities is easy. It's an opportunity to step away from your routine and focus on personal and professional development.  Events and conferences offer many benefits, from learning opportunities to networking and personal development. The knowledge, connections, and inspiration gained from attending these gatherings can have a lasting impact on your personal and professional life. So, if you've been on the fence about participating in events and conferences, it's time to take the plunge and unlock the countless advantages they offer. Your next breakthrough moment might just be around the corner.  We'll see you there!
View post

Want to know more? Reach out to us!