Things I Wished I Knew About DevOps Practices and Cloud Technologies When I Started my First Role in Tech

Things I Wished I Knew About DevOps Practices and Cloud Technologies When I Started my First Role in Tech

It’s 2021 and I’m just over a month into my third role as a Software Engineer & Tech Coach. It’s been a whirlwind of a journey so far! Here’s some things I wished I knew about DevOps practices and cloud technologies when I started my first role in tech.

My role wasn’t just about full-stack Software Engineering in C#, but also involved DevOps practices and Cloud technologies

During my career switch into tech, I thought that DevOps practices and Cloud technologies were utilised solely by DevOps Engineers and Cloud Engineers. I under appreciated how much of my role involved DevOps practices and Cloud.

When I spoke to people in my network and especially those who have recently started their first roles in technology; it seemed like there was a mixed bag. Some people were not involved in DevOps and Cloud at all, though they mentioned some of their colleagues were. Others, like myself had more of a hybrid role and some people were doing DevOps and Cloud every single day!

What is DevOps in a nutshell?

AWS states, “DevOps is the combination of…philosophies, practices, and tools that increases an organisation’s ability to deliver applications and services…”. The infrastructure and process that sits behind software ensures a smoother experience for building code, testing it, shipping it out and monitoring it.

DevOps and Cloud is there to help Developers

Some Software Engineers would say that DevOps and Cloud is not part of their role, so why should they bother; they do have a point there. It’s a massive world, recently, product offerings like AWS Amplify for example, help those who major on the front-end and API domains build mobile/web apps quickly. However, there’s value in learning some of the key concepts on how DevOps and cloud is helpful.

In my first role in tech, I wanted to learn some fundamentals of DevOps and Cloud that would support me in my role as a C# Full-Stack Software Engineer.

In my team at the time, one of the projects we were tasked with was re-writing a legacy Excel application into a .NET Core 3.1 C# web application (at the time of writing this post, it’s .NET 5). I really liked the way my team worked together on this, all the developers/testers, business analysts, our product owner and scrum master mobbed on this.

Something popped into my head at the time: “Why can’t we just build the web application and then just deploy it to production for the users, easy right? I can just click around on the Azure Portal and just manually make my resources there and then manually deploy.”

Well, when we started mob programming on the cloud infrastructure process, I realised there was more to just ‘making something work’.

Automated Continuous Integration & Continuous Deployments Using Azure Repos & Pipelines

One of the things that stuck with me was CI/CD (Continuous Integration / Continuous Deployment). According to the AWS DevOps blog, “An integral part of DevOps is adopting the culture of continuous integration and continuous delivery/deployment (CI/CD), where a commit or change to code passes through various automated stage gates, all the way from building and testing to deploying applications, from development to production environments.”

I got to appreciate this by learning about git, git repositories on Azure repos, managing branches and creating pipelines to build and deploy our C# solution.

During my learning process, I had a sneak peak at how different teams were utilising Azure Pipelines. At first I was hard-coding things in and this sort of worked, but then I found myself copying and pasting all the time. I then realised parameterisation was helpful to ensure I could supply different values for the same pipeline variables. This helped me as a developer and for other developers on my team because it meant we could replicate the same setup across the development environments, testing environments, pre-production and production environments of the pipeline. We could configure things to be switched ‘on’ and ‘off’ through code.

Separation of concerns was important here. We decided to go with an infrastructure pipeline and an app pipeline. If there were changes to the web application on a branch, CI/CD will automatically detect this and trigger a build and deploy onto the relevant environments using the relevant pipelines. Test suites would also run automatically too. Once the Pull Request (PR) for the branch has been approved and merged, the CI/CD pipeline will build and deploy to the environments. No more arduous manual deployments that we had to deal with for the original Excel application! Great!

Infrastructure-as-Code

During my first role, I realised that clicking around the settings on the Azure Portal to create and configure resources was helpful for me, but not helpful for others. It wasn’t repeatable. We had to think as a team how we can define the infrastructure and configure it using a better approach. This was where the Azure Resource Manager (ARM) templates came in handy. It enabled the definition of what infrastructure we wanted to make, how we wanted to make it and configure it.

The ARM templates were useful as they could be version controlled through git as well; just like we would version control code. There were also helpful extensions on Visual Studio for structuring and validating these templates.

Most importantly, it enabled a repeatable and testable process for our infrastructure.

Logging & Monitoring

So why do we need logging & monitoring? Let me put it this way, when you release a new feature for your product, that’s just the start. Just as a plane has a suite of telemetry to record readings from instruments; it is the same concept for software to ensure everything is operating as it should. Try to think where logging and monitoring makes sense for you.

We used Azure Monitor to add observability into our applications, infrastructure and network.

Final Thoughts

This is just the surface of what DevOps and Cloud technologies can offer to developers, of course there are specialists who go a bit deeper into more concepts that those I’ve covered here. If you are working in tech, there is some benefit to learning some of the fundamentals about the infrastructure and process that sits behind software to ensure smoother experiences for building code, testing it, shipping it out and monitoring it.

Hey Kim, what’s it like being a Software Engineer & Tech Coach? Q&A Session

Hey Kim, what’s it like being a Software Engineer & Tech Coach? Q&A Session

How did you become a Software Engineer & Tech Coach?

I didn’t plan this path; it totally happened by accident! 😂

It was only back in February 2019 that I received a fully-funded scholarship to attend a 16-week intensive Software Engineering Bootcamp at Makers. I was a career switcher, having at the time spent over 4 years in sustainability and business consulting roles.

I have since been exposed to full-stack Software Engineering and DevOps practices from a range of roles and industries such as investment management, e-commerce and tech education.

While in my Software Engineer role at Trainline, which is a FTSE 250 rail and coach ticketing platform, a random advert popped up in my LinkedIn feed in December 2020 and it was for a Software Engineer & Tech Coach role at Tech Returners.

When I read the job advert, negative thoughts started coming to my head:

😥 “Am I doing the right thing? Is it too early in my tech career to do this? I’ll be leaving a FTSE 250 company, will I regret it?”

😥 “Am I even qualified for this? There’s only some technologies on the job description I know well, those I know enough to get by and those where I don’t have a clue yet!”

Somehow because these thoughts came into my head, I wanted to pursue this more than ever! I tried to map things out rationally and thought about what I enjoyed doing, which was my experience teaching people to code and creating workshops for the community alongside my friends, speaking and mentoring work. However, I still wanted to keep on being an active Software Engineer, so the role was a great blend for me.

🙌 I applied for the role, did my 2-minute elevator pitch video, had my interviews and landed the job! 🙂

What do you do as a Software Engineer & Tech Coach?

It’s been just over a month since I started my role as a Software Engineer & Tech Coach at Tech Returners – whoop whoop! 🙂 It’s a hybrid role which means I get to do tech coaching and software engineering.

As a Tech Coach, I help to deliver programmes to upskill individuals at mid-senior levels in technology. Since learners on the programme have prior tech experience, it means I have the opportunity to explore tech concepts in a bit more depth. I’m currently leading sessions, helping with seminars on tech topics, having 1:1s with learners/pair programming with them, recording short videos and providing detailed code review feedback. I onboarded remotely and went straight into all the action. By Day 3, I was already delivering some sessions!

💜 I remember my first week watching in awe as the other Tech Coaches, James, Ellie and Heather did their thing! They conducted their roles with care, precision and best practice; I honestly wondered why people hadn’t heard of Tech Returners before.

One of my goals is to design and develop a 5-star curriculum to really innovate tech education. As a Software Engineer, I’m working on internal projects across the full software development lifecycle. There’s a project I’m working on which is totally brand new, a great chance for me to be involved with a product from scratch.

How do you go about teaching technical concepts? What techniques do you use?

👩🏻‍💻 I use plenty of visualisations

👩🏻‍💻 I explain tech concepts using analogies and relate them to real-life things

👩🏻‍💻 I record short videos/screen recordings to walkthrough tricky technical concepts, provide thorough code review feedback and help with debugging strategies

👩🏻‍💻 I conduct 1:1 and group video calls to host sessions, webinars and provide technical and wellbeing support

👩🏻‍💻 I try to start from the core principles and break down technical jargon as much as I can to make it sound less daunting. Some technologies like git version control use scary words which create a barrier to learning; even though the technology can be very powerful.

How do you balance learning & coaching?

I create and deliver programs to help underrepresented people refresh & upskill in the Software Engineering domain after a career break. I also deliver programs to upskill engineers at existing companies in all things DevOps!

That’s a lot of technologies! How can you keep up?

I would say I’m aiming for a T-shaped skillset. This means I have deep expertise in few technologies with supporting, but less-developed skills in others. For example, I am more backend/cloud focused with my primary language being C#; but if I get asked a question about React components and how to test components, though that’s not my area of expertise, I’m able to conduct some research, put the pieces together or reach out to other tech coaches to put technical recommendation together.

Over time, I develop a skill for spotting patterns in code quickly whatever the tech stack/languages used. Learners think I do some magic! The reality is, I don’t, it’s patterns I see again and again which helps me to spot things quickly.

Developing myself while teaching others

I listened to the egghead.io developer chats podcast episode featuring Ali Spittel on Developing Yourself While Teaching Others and I found so much inspiration from Ali Spittel’s journey.

Through going through the cycle of learning & coaching, I found myself solidifying my understanding of tech concepts and technologies at a faster rate than if I were to learn without teaching others. Before being a Tech Coach, I would become impatient and skip over a tech concept quickly just to ‘make things work’; I am now focusing deeper and with higher precision with my learning to enable me to provide the best technical coaching.

Since I’m not writing production code as often, I set some time aside (25 mins to 1 hour) in the morning before my work commitments to develop myself by building my own projects, practicing my coding skills or researching technical concepts. I don’t code on the weekends and in the evenings after 6pm because I find it’s important to have some time off. I’m trying to learn how to be a more effective and efficient learner every day. I also repeat technical concepts again and again, rather than moving on too quickly.

What do you enjoy most about being a Software Engineer & Tech Coach?

I love seeing others learn and grow in their technical skills and confidence. It’s not just about the technical journey, but the human one too.

I also really like the challenge of finding new ways to explain technical concepts and technologies in digestible ways. I like the feeling I get when I get asked a question from the learners and I have the opportunity to go in and explore for myself.

I like pair programming and mob programming with the other Software Engineers & Tech Coaches so we can all learn together and continue to innovate tech education.

What would you say are the most challenging aspects of your role?

From a technical standpoint, there’s times where I doubt myself and my abilities and I start to think: “What if I get caught out?” “What if I get asked a question and I don’t have a clue how to answer it yet?” “Surely, I’m the tech coach and I should know everything right?” I always have to remind myself about my T-shaped skillset and that I don’t have to be an expert in everything.

From an emotional standpoint, I have a duty of care for my learners, which means I provide support from a wellbeing standpoint and ensuring I listen to my learners and help them find ways to move forward and reflect themselves. Therefore, I have to be more disciplined with the way I use my time more than ever, so that I can focus on providing the best support possible; whilst also making sure I take care of myself and prioritise my own time for my learning before I can support others.

How are you continuing to develop yourself? What’s in store for the future?

For my T-shaped skillset, I decided that I would focus on C# as my primary language. In terms of tech stack, I’m focusing on the backend and DevOps side of things. I’m not a specialist in HTML, CSS and React, though I’m able to work with it as best as I can.

I love creating content, designing, developing and innovating tech education, so would love to continue to create workshops for the community and do some public engagements around technology, such as my most recent collaboration with The National Museum of Computing and the Codebar Festival.

Thanks for reading! 🙂

My First 3 Weeks as a Software Engineer Summarised in 10 Quotes and Emojis!👩‍💻

My First 3 Weeks as a Software Engineer Summarised in 10 Quotes and Emojis!👩‍💻

Hi again! 🙂

I just finished my first 3 weeks as a Software Engineer. Woohoo! Here is my experience so far in 10 quotes and emojis! 👩‍💻

1 👩‍💻🤩 “I’m so excited, I can’t sleep!. 😴Hey, get to sleep already! You need to be fresh for tomorrow!” 👩‍💻🤩 “Awwww…but I’m too excited!”

2 💃“Oooo…how does a Microsoft Surface Pro even work? What’s this flappy thing at the back?”

3 “Hello Microsoft Windows, haven’t used you in a while!…Windows Update!!! 😂”

4 ”🤓 C# is so cool!!!! I finally get to use a static programming language!”

*Goes to build solution = ERROR ; expected

AHHHHHHHHHHH!!!!!!! 👿

5 “Let’s get this code out! Deployment, what can possibly go wrong with the build and deployment pipeline? 🚀”

Deployment fails…arghhhhhh!!!!! 😡

Goes into ultra mode to fix issue 💪

Deployment passed – yipppeeee!!! 😎

6 “It works, it actually works!!! Oh yeah!! Ice cream time!” 🍦🙌🏼😃

7 “I can figure this out…I can figure this out…should I ask for help? 🤔Nah, I can figure this out…I can figure this out…oh man…I NEEEDDD HELP!!! SOMEONE HELP!!”

8 “How have I not used Visual Studio IDE before? It’s A-M-A-Z-I-N-G!!” 💻

9 “Am I meant to be here? I don’t have a clue what’s going on. Damn…I’m actually writing code!” 🎊

10 “Wow, I’ve learnt so much! How did all of this happen?” 😊

Final Thoughts

As you can see, a lot of ups and downs, but I’m absolutely loving it! 🙂

Byeeeeeeee,

Kim

I got my first ever job as a Software Engineer!!!

I got my first ever job as a Software Engineer!!!

I got a job as a Software Engineer!!!

kim_morning.jpg

Getting ready to leave this morning for my first day!

I GOT A JOB AS A SOFTWARE ENGINEER! 🥳🎊🥂🎈

Today, I am so excited to announce my first ever role as an Associate Software Engineer at M&G Plc! The career change has been an adventurous ride; dreams really do come true!

I thought I would never be able to do this without a Computer Science degree, but I was proven wrong by the amazing tech community who supported me!

If you’re interested on hearing more about my career change, check out a Q&A on my Coding Journey here.

Special Thanks!

Thank you to all those who have been part of my tech journey so far!

I also want to do a big shout out to EVORA Global, Makers, Codebar, Code First: Girls, Women Who Code, Girls in Tech, Inc., Tech for Good and Rails Girls for supporting my journey into tech!

EVORA Global

My friends at the sustainability consultancy are a bunch of fantastic people, who inspired me to come into work everyday to do my best. After a year as a Junior Sustainability Consultant on the consulting team, I was given the opportunity to put forward some ideas to grow the company’s proprietary technology solution, which was focused on the sustainable real estate industry. The solution had a data-driven approach to support on environmental data management and reporting for commercial real estate sector clients.

I’m so grateful that the company put its trust in me and offered me the chance to be part of their new technology team. It was pretty much a blank slate at the time and something felt ‘right’ about it. Though I hesitated to leave my sustainability consulting days behind, I was elated at the prospect of being part of something special.

For over 2 years, I grasped with the concept of Agile and engaged with the team on the software development of the sustainability software through the implementation of agile product/project management strategies, business requirements gathering and specification. I learned about scrum iterative software development and how to use Atlassian’s JIRA tool.

Thank you EVORA for being part of my tech journey!

If you haven’t heard of EVORA, definitely check out their website here!

Code First: Girls

In September 2017, I joined the Code First: Girls Web Development Beginner’s Course and never looked back again. I remembered dashing off after work an evening a week to the Twitter UK HQ, being utter exhausted, but felt so excited and energised to code. I had sessions once a week which covered so many things such as HTML, CSS, JavaScript, jQuery, GIT, GitHub collaboration, development concepts, Twitter Bootstrap and responsive web development and even had the chance to work on a group project.

As soon as that ended, I enrolled onto the Code First: Girls Advanced Ruby Course, where I was introduced to Ruby programming, Sinatra framework, GET/POST requests, development concepts, automated emails using Mailgun, external APIs and deployments. I got to understand application deployment on Heroku cloud hosting services and explored the Twitter API.

Thank you Code First: Girls! You really helped me to find my passion. As a Code First: Girls alumna, I feel like I could change the world!

If you haven’t heard of Code First: Girls, definitely check out their courses. They have free community courses and professional courses aimed at getting women into tech.

Rails Girls London

The 2-Day Rails Girls London Installation Party and event in December 2017 was cool beans! Held at Deliveroo, there were some inspiring lightning talks and coaching.

There’s plenty of materials online too! Watch out for their next event!

Codebar London

Codebar is growing so fast across the UK and the world. I have been a student as part of the Codebar London chapter for a while now. It’s been cool to meet everyone over good food and code! Yummy!

Thank you to all the coaches who have coached me so far, your workshops have been so insightful!

Technology for Good & Women Who Code London

Going to talks through https://www.meetup.com/ run by Tech for Good and Women Who Code London really got me thinking about the application of coding for specific social causes. I’d recommend checking out their upcoming events!

Makers

By the time I encountered Makers in late 2018, I was sure that Software Engineering was for me. I attended the Demo Day events and was blown away by the projects created by the students there. The Intro Cohort was a useful time for me to meet up with like-minded people and code together.

Entering Makers felt like home to me and I imagined myself there one day. I actually looked at several coding bootcamps across the UK, but was deterred by the costs. Luckily, I came across the Fellowship Programme at Makers and applied! It was the best decision I had made. My interview was challenging; though it was one of the most enjoyable interviews I have ever had!

Girls in Tech London

I went to a conference organised by Girls in Tech London during London Tech Week 2019 on the intersections of tech and benevolence. It was a thought-provoking evening and I left feeling inspired to hack my tech career!

Thank you Girls in Tech London!

Final Thoughts

Onwards and upwards! 👩💻😍 I’m so happpyyyyyy!!!

Byeeeeeeee,

Kim

We did it! Top 5 Reflections – Machine Learning Final Project @ Makers

We did it! Top 5 Reflections – Machine Learning Final Project @ Makers

The Final Project at Makers

For the final project at Makers, I chose Art/Music AI as my topic of choice. I was assigned to a team called ‘AJAK’ to build a project of our choice.

For our project, we ended up using a Convolutional Neural Network Machine Learning model to classify doodles. The aim was for the user to input a doodle and the model outputs a prediction on what the user has drawn. In our app, the user can draw a camera, crown or rabbit.

We all came into the project with no/little knowledge on Machine Learning. We only had 1 1/2 weeks to complete the project, so it was a big achievement for us when we delivered our product on Demo Day!

You can check out our repo on Github!

Check out our app here: https://ajak-doodler.herokuapp.com/

AJAK Doodle App
AJAK Doodle App

We’re on Social Media!

If you missed the action, don’t worry! You can catch up via LinkedIn, Twitter or Facebook.

Check out the LinkedIn post

Here’s the Twitter post

We did it!!! 😍 @makersacademy thank you all, it’s been a blast and a great experience. Had so much fun on the group project #MachineLearning #Python #ArtificiallIntelligence #agile https://t.co/wtzT9HINOT

— Kim Diep (@thekimmykola) May 24, 2019

Missed the May 2019 Demo Day event @ Makers? You can watch the presentations on Facebook.

What’s it like to do a Machine Learning Project?

Here are my top 5 reflections:

#1 Machine Learning is flipping awesome!!!

I went into the project with some theoretical knowledge on Machine Learning, but no implementation know-how at all. Within 10 days, I fell in love with deep learning technologies and now feel equipped to do my own projects!

#2 Data acquisition and processing was a key part of the project

Even before the model can be trained, there was a lot of decision-making on where to get the data from, what the format of the source data was and data exploration to explore what was possible given the dataset. Data processing was important to get the data into the right format for our model.

#3 Building in Research & Development (R&D) time at the start of the project paid off

Given little team knowledge on Machine Learning, the first couple of days was spent on research. Whilst the other teams were putting code down, we hadn’t produced any code yet. This didn’t matter, as we took on a challenge and stuck to our team goals.

Personally, I learnt a lot from exploring a classification problem using the Handwriting MNIST dataset (literally the ‘Hello World’ of Machine Learning) and doing some crash courses using online tutorials.

We learned together as a team, used the whiteboard to break down our problem and made sure every team member understood the domain and choice of model. We chose to use a Convolutional Neural Network (CNN) in the end!

Understanding Convolutional Neural Networks (CNN)
Understanding Convolutional Neural Networks (CNN)

#4 Re-grouping as a team was useful to make informed decisions

There were a couple of moments in the project where we had to make pivotal decisions on the pros and cons of the technical implementation and balancing against delivering our Minimum Viable Product (MVP).

Re-grouping as a team and diagramming ideas out made it easier to be on the same page and created the space for ideas to be generated and decisions to be made!

Deciding on our technical architecture
Deciding on our technical architecture

#5 Sharing the love for Agile!

Having daily stand-ups, retrospectives and valuing communication over processes helped us to apply Agile theory to Agile practice! This made our team gel a lot better and made our project more engaging to create with the end-user in mind!

Final Thoughts

We delivered a kick-ass interactive project!

Thank you to my team for the wonderful journey into Machine Learning! 🙂 You guys were awesome – a pleasure working with you all 🙂

Byeeeeeeee,

Kim

An Experimental Mindset – Learning Quickly, Reflecting Deeply @ Makers

An Experimental Mindset – Learning Quickly, Reflecting Deeply @ Makers

It’s been just over six weeks since I embarked on my programme at Makers and wow has it been one crazy ride! As I’m sitting on the train, I reflect on what’s been happening, trying to digest it all. Settling into a new environment, new routine and meeting new people has been an exhilarating experience. So what’s been going on you might ask?

An Experimental Mindset – Learning Quickly, Reflecting Deeply

From an earlier blog, I spoke about putting on that child-like mindset, the boundless state of mind where creative juices run with the desire to experiment and make stuff!

Here’s the quote from my blog:

“When I was 5, I got my first computer and wanted to be a computer hacker. I imagined myself working undercover as a secret agent, making potions and hacking through computers, like Disney’s Kim Possible saving the world from monsters!”

The truth is, this childhood feeling never really left me. It was just hiding away, waiting to be re-discovered.

Over the past couple of years, I realised that at times when I thrived, it was a matter of having the courage to take risks and the resilience to bounce back from setbacks. It was only during the past week at Makers where I began to feel comfortable with the unknown and live out my experimental mindset. It was only by doing this that I felt like I was riding the wave. Learning quickly and reflecting deeply has been really effective to my own well-being and personal growth.

undraw_creative_experiment_8dk3.jpg

What’s it like to learn coding?

The fast-paced learning at Makers means I might be introduced to a concept (or even multiple concepts) in the morning and then apply them to solve problems in no time at all – iterating towards weekly goals. This took a bit of getting used to. Instead of waiting for the ‘perfect’ time to apply theory to practice, it was about being pro-active and jumping off the diving board, testing ideas out straight away. Having a boundless, experimental mindset makes learning engaging and is helping me and my peers to generate more innovative solutions – totally great for solving tricky problems.

At times, this required me to dig deep. I am a perfectionist at heart and this meant I felt uncomfortable when I did not understand the ‘whole’ concept straight away. Though, when I let go of this side of me, I experienced something called ‘Beast Mode’, this mode describes the feeling of being ‘uncomfortably excited’. This is the ideal state of mind to test ideas out without fear of failure. Having this experimental mindset is key to riding the wave with confidence, something I want to harness and continue.

It’s not just about writing code, it’s about the process

It is time to put the ‘human’ back into technology. It is so easy to think that technology is all about writing code like something from ‘The Matrix’, but it is all about the people and processes. Whether it is creating a sustainability application to improve people’s relationship with their environment, or an app to aid learning in museums, technology is empowering and transformative.

Here are a non-exhaustive list of some of the processes I encountered over the past couple of weeks and why I think they are important:

User Requirements

Great ideas are generated all the time, but how can these ideas translate into something tangible? It all starts with the User Story. User Stories, describe from the users’ point of view, what they want to do, why they want to do it and how they will achieve it. A User Story has a beginning, middle and an end. Agile teams use stories to flesh out user requirements, conducting proof of concepts, assessing the technical feasibility, sketching out designs and creating a feedback loop to improve the overall approach. Even when a feature is released to the end-user, more feedback can be sought to further improve the product and user experience. It takes a multi-disciplinary team to make this happen, not just developers.

undraw_user_flow_vr6w.jpg

Modelling/Diagramming/Object-Oriented Program Design

In technology, to solve a problem, you have to start by modelling the world you’re trying to simulate which is an abstraction of reality. It is impossible to model every single data flow/relationship between things perfectly and instead, you go for a model which captures enough to successfully help you understand things a bit better.

Diagramming describes the process of visualising the domain (the world you’re trying to model). There are plenty of tools and techniques available such as flowcharts, wireframing and class diagrams, just to name a few.

Test-Driven Development

Test-driven development is the process of developing code from the test first. At the start, it is a change in thinking, but it is such a powerful process. Rather than diving straight into the code, the aim is to write the test first which is derived from the business requirements and write the simplest code to pass that test. Once the test is satisfied, some refactoring is done to tidy up the code. This is called the RED-GREEN-REFACTOR loop. By writing the test first, this guides the development of the code to ensure alignment to the requirements.

Testing in Web Apps / User Experience

Combining test-driven development to a web application is like adding another layer to the cake. I’ve been using Capybara for feature testing on Sinatra applications. This enables testing from the user perspective as they navigate through the application and captures the business logic and acceptance criteria for satisfying the user requirements.

It is not uncommon to find combined testing approaches throughout the whole software development lifecycle. For example, in my Ruby-Sinatra application, I may start by writing a feature test which tests out the business logic and how the end-user may interact with the application, and on top of this, I may refine the logic further through unit tests which lead me to passing the feature test. So far, I’ve been using RSpec for Ruby and Jasmine for JavaScript. Of course, test-driven development is not the answer to everything and can be combined with other approaches to reflect and iterate on the requirements and code development. A powerful way of checking that the business acceptance criteria is satisfied is getting feedback from the users and undergoing a User Acceptance Testing (UAT) phase and building this into the Agile development process. Collaborating in a team, you may have to test your builds are working, as well as system integration testing and penetration testing for security purposes – so testing is not something to be underestimated!

Something I want to explore over the next couple of weeks are progressive web apps and how they improve user experience.

Pair Programming

By engaging in pair programming sessions, I have been able to learn from others and improve my ability to verbalise my thoughts and the confidence, respect and patience to work with others. Having experience working in an Agile team and tutoring, pair programming is very familiar to me; it’s been great to reinforce this at Makers.

undraw_pair_programming_njlp.jpg

“…being ‘uncomfortably excited’. This is the ideal state of mind to test ideas out without fear of failure. Having this experimental mindset is key to riding the wave with confidence.”

Thank you to Undraw for providing the images used in this blog! 🙂

Byeeeeeeee,

Kim

My Coding Journey Q&A – Geography graduate to Software Engineer – Fellowship Programme @ Makers

My Coding Journey Q&A – Geography graduate to Software Engineer – Fellowship Programme @ Makers

“When I was 5, I got my first computer and wanted to be a computer hacker. I imagined myself working undercover as a secret agent, making potions and hacking through computers, like Disney’s Kim Possible saving the world from monsters!”

This childhood feeling never really left me.

I wanted to share my coding journey in the hope that it will inspire you to make your career change.

undraw_moving_forward_lhhd.jpg


Kim, what are you up to nowadays?

I’m currently living and working in London and drawing my business-technology role to a close. Psst…I have some amazing news to share; I’m about to become a Software Engineer as part of the Fellowship Programme at Makers. I will be starting my Pre-Course on Monday 4th February 2019. Thanks to the Makers Fellowship Programme, I am about to embark on my childhood dream and being sponsored too! Big shout out to Makers for the fantastic work you guys are doing! I thought that dream was over a while ago, since I didn’t do a Computer Science degree. How wrong I was! The London tech community has been amazing and quickly debunked that myth. Turns out, I never really stopped ‘coding’, it was just hiding within my climate/environmental modelling work during uni, my Microsoft Excel functions at work and my interest in computers waiting to be unlocked. There is actually a lot in common between Geography and Software Engineering; the ability to break problems down into component parts and systems-thinking has helped me tremendously.

Being out of my comfort zone for the Fellowship, I’m excited and nervous at the same time. I guess it’s natural given I’ll have new routines, new environments, the chance to meet new people and take on new concepts and ideas. It is quite sad to draw my current business-technology opportunities to a close for now and leave that chapter behind; though I am super hyped up to get stuck into my Software Engineering career!

Why did you choose to study Geography at university? What did you do after graduation?

I didn’t know what I wanted to do after college; 18 was a young age to make decisions and yes, it did feel like the end of the world at the time. Growing up, it was drilled into my brain that university was the only logical option. I flipped between Medicine and Law and felt compelled to fit into the ‘ideal’ of what people expected from me. In the end, I chose Geography because I was curious to learn about what makes the world tick. I felt Geography had a good mix of arts and sciences shedding light to environmental, social, economic and technological interactions. As an alumna of Oxford and UCL, I graduated with my Bachelors in Geography (2014) and Masters of Science in Environmental Modelling (2015).

After graduation, I still didn’t know what career was right for me; many of my friends took on great Graduate Schemes and were well-remunerated and at the time, I felt like somehow I had ‘failed’.

Instead of comparing myself to others, I bounced back to forge my own path. I eventually landed a full-time role as an Energy Industry Analyst and wrote loads of reports for a market intelligence company, whilst working at my part-time tutoring job too. My gut felt that job wasn’t for me and after 6 months, I moved onto a sustainability consultancy focused on accelerating the evolution and productivity of sustainable building management in cities, where I have stayed for the past 3 years.

When did you first encounter code?

I wrote my first line of code whilst trying to find a better way to extract some climate data for my project in 2011; back then, coding was merely a tool for me to get to the final answer. In the past couple of years, I found myself wanting to know more about how something works rather than just receiving the end output.

What does coding mean to you?

Good question. Nowadays, I see coding as an art-form and a way of thinking – a philosophy. I never thought in a million years I would go to the Foyles book store out of curiosity to find “The Agile Samurai: How Agile Masters Deliver Great Software” book by Jonathan Rasmusson, which I used to support the introduction of Agile product and project management strategies to my company. To this day, I have been able to blend my skills from all aspects of life. I love consolidating my knowledge so far, improving my coding everyday and challenging myself! I am inspired to teach others to code one day and volunteer my skills for diversity and social mobility in the technology industry. I also see myself helping responsible businesses grow which aligns to my mission to use the power of coding and technology for instigating social, environmental and economic change.

What sparked you to make the career change to become a Software Engineer?

Looking back to my quote at the beginning, I wanted to connect with my childhood self to get away from what my mind thinks I should do, to seek what I really wanted to do and link it to my passions. I’m passionate about sustainability and smart cities and how technology brings people and the environment together, changing how people perceive and inhabit their environment. At the same time, opportunities at work and curiosity to know more about the inner-workings of technology made me realise that a career in Software Engineering would be a good fit for me.

You can read on more below.

I tried to split it into two sections: opportunities at work and opportunities outside the 9-to-5, as I’m a big believer in enriching myself inside and outside of working hours.

Opportunities at Work

My friends at the sustainability consultancy are a bunch of fantastic people, who inspired me to come into work everyday to do my best. After a year as a Junior Sustainability Consultant on the consulting team, I was given the opportunity to put forward some ideas to grow the company’s proprietary technology solution, which was focused on the sustainable real estate industry. The solution had a data-driven approach to support on environmental data management and reporting for commercial real estate sector clients.

I’m so grateful that the company put its trust in me and offered me the chance to be part of their new technology team. It was pretty much a blank slate at the time and something felt ‘right’ about it. Though I hesitated to leave my sustainability consulting days behind, I was elated at the prospect of being part of something special.

For over 2 years, I grasped with the concept of Agile and engaged with the team on the software development of the sustainability software through the implementation of agile product/project management strategies, business requirements gathering and specification. I learned about scrum iterative software development and how to use Atlassian’s JIRA tool.

It was awesomeness all round!

With my multi-disciplinary background, I spoke both the language of business and technology. I wore many hats to bring together the details of the technology to something meaningful at the business level. I secretly enjoyed it whenever a bug appears, as it would mean I could have a chat with the developer to try and debug something and ask them questions. I had loads of fun at work, everyone was very supportive and had good ideas to bring to the table. Wearing many hats was challenging but rewarding when you were transforming the way the user approached technology-driven sustainability.

P.S. I also have a soft toy Angry Bird called ‘Yoda’ and a ‘Pusheenosaurus’; they also attended some meetings too!

plushiesWork.jpg

Opportunities outside of the 9-to-5

I’m fortunate enough to have access to a lively technology community at my doorstep. There are so many great communities out there, here are some wonderful ones I got to know about:

Code First: Girls

In September 2017, I joined the Code First: Girls Web Development Beginner’s Course and never looked back again. I remembered dashing off after work an evening a week to the Twitter UK HQ, being utter exhausted, but felt so excited and energised to code. I had sessions once a week which covered so many things such as HTML, CSS, JavaScript, jQuery, GIT, GitHub collaboration, development concepts, Twitter Bootstrap and responsive web development and even had the chance to work on a group project.

As soon as that ended, I enrolled onto the Code First: Girls Advanced Ruby Course, where I was introduced to Ruby programming, Sinatra framework, GET/POST requests, development concepts, automated emails using Mailgun, external APIs and deployments. I got to understand application deployment on Heroku cloud hosting services and explored the Twitter API.

Thank you Code First: Girls! You really helped me to find my passion. As a Code First: Girls alumna, I feel like I could change the world!

If you haven’t heard of Code First: Girls, definitely check out their courses. They have free community courses and professional courses aimed at getting women into tech.

Rails Girls London

The 2-Day Rails Girls London Installation Party and event in December 2017 was cool beans! Held at Deliveroo, there were some inspiring lightning talks and coaching.

There’s plenty of materials online too! Watch out for their next event!

Codebar London

Codebar is growing so fast across the UK and the world. I have been a student as part of the Codebar London chapter for a while now. It’s been cool to meet everyone over good food and code! Yummy!

Thank you to all the coaches who have coached me so far, your workshops have been so insightful!

Technology for Good & Women Who Code London

Going to talks through https://www.meetup.com/ run by Tech for Good and Women Who Code London really got me thinking about the application of coding for specific social causes. I’d recommend checking out their upcoming events!

Makers

By the time I encountered Makers in late 2018, I was sure that Software Engineering was for me. I attended the Demo Day events and was blown away by the projects created by the students there. The Intro Cohort was a useful time for me to meet up with like-minded people and code together.

Entering Makers felt like home to me and I imagined myself there one day. I actually looked at several coding bootcamps across the UK, but was deterred by the costs. Luckily, I came across the Fellowship Programme at Makers and applied! It was the best decision I had made. My interview was challenging; though it was one of the most enjoyable interviews I have ever had!

What advice can you give to someone wanting to change their career?

Take the time to think about why and how you would like to change. Changing career is always risky and an opportunity cost; if you think it is worth it, make the jump and take the time you need to ease yourself in. Everyone is different, you know yourself better than anyone else. Change doesn’t happen overnight, you have to have grit and patience to see it through. If you fail at something, it’s natural to get frustrated, but get back up again. If it’s not right for you, then find something that makes you tick. Successes are without failures; they go hand-in-hand. Remember to go easy on yourself and get plenty of rest! I speak from experience of burning out so many times! Most of all, there are some things which don’t work out in life; c’est la vie!

And that’s a wrap to my long-ass blog! I hope you found it useful.

Byeeeeeeee,

Kim