2 Years at Lumina Learning

2 Years at Lumina Learning

What I have learned

The start of March 2024 marks 2 years at Lumina Learning and I wanted to document my journey as I started as a junior developer and my progress so far.

In the beginning

I joined Lumina Learning in March of 2022 as a junior full-stack developer with a React and Node.js background in learning and doing voluntary work for the Scottish Tech Army. While I was starting as a junior, I was no spring chicken having decided on a career change with the help of CodeClan and their boot camp in software development.

When I started my first task was to get all their services installed and running. While this might sound easy I found this part hard. The first service was their main product that ran on a Windows server VM and used PHP and Microsoft SQL server. The rest of the services, which were another 8 services all ran from docker. One of these was in React while the others were in Angular Monorepo.

Getting all the services talking to each other didn't go smoothly and during this process, I did suffer from imposter syndrome quite badly but I was reassured that this process can be very tricky. After a lot of googling and help over Slack I got them all up and running and talking to each other and I felt a lot better at this point.

My first ticket

Now everything was up and running I got my first ticket as an intro to the systems and got my feet under the table. The ticket was on one of the angular systems that also talked to our main product. Again this meant a bit of googling on angular and tracing through both systems but this was the point of the ticket, to get me to explore the systems and see how they connect.
In the end, it was just a simple SQL update.

My first year

The small apps

This was quite an eventful year for me. My first couple of projects were to update a couple of smaller apps from Angular into React, at last something I know, but with a twist for me. While these apps used restful APIs Lumina used Tailwind CSS and this was the first time I saw this as I had always used traditional CSS and even used styled components on one project outside of Lumina. This while not a massive learning curve let me get experience in something new.

One of these smaller apps also included some animation, so I started to learn GSAP, which a the time did not have a react package but at the time of writing has just released one that I will need to check out. This was very interesting to me to learn how to animate images on the screen and also fade in the small navigation bar at certain parts of the screen. This involved a lot of trial and error once the animation was working to make sure the animations were starting and ending in the correct part of the window as it was being scrolled down and even navigated directly to.

The big one

Once I had managed to get these two smaller apps written, it wasn't time for their launch yet so I was switched to a much larger app. This has been one of those projects that looked a good size to begin with but once you got stuck in, it grew arms and legs. This project also gave me a new technology to learn, Apollo GraphQL. My role in this project was purely frontend with another developer creating the endpoints in the various systems this app used. GraphQL was a game changer in the way I could select exactly what I needed and even has a built-in loading state so that was one less thing to worry about. While working on this I got to use the basic features but I also got to dive deeper into understanding how the cache worked on GraphQL and how to manipulate it to stop unnecessary network calls. I enjoyed this and it was a challenge at times.

Meeting the team

Lumina have a team meeting every fortnight where they give us updates on various things, gather feedback and also use their products to create discussions and exercises to help us understand ourselves and others. When I first started I was very sceptical as I have had a similar thing with another company but they didn't do it very well so I didn't think this would be very good. I was wrong, as I work remotely all the time, I am in Scotland and their office is in London, this allowed me to meet everyone outside my team as well as get to know more about some members of my team. At the first meeting, I was paired up with a member of my team who works from Indonesia and it allowed me to get a better connection with him and that helped a lot.

Another thing they do is have team days every 3 months where everyone that can make it travels to the office while others dial in for the day. My first one was too close to my start date to make it in person and as a result, I got paired with others who were dialling into the meeting. Instead of the next one Lumina had their conference that had been postponed by Covid and I went down and met the full team face to face for the first time. I enjoyed meeting people face-to-face and getting to know everyone a lot better.

Little did I know that due to train strikes and faults on the train lines that would be the last time I met anyone in person and all the other team days were done remotely for the rest of the year.

My second year

Continue where I left off

The start of the year saw me continue my work on the bigger app and my journey with GraphQL and learn some of the more advanced features as the app grew in complexity. I loved the challenge of getting the most out of GraphQL and making our UI/UX designers' vision come to life was very encouraging.

Next.js

As time went on my backend engineer was sent to handle higher priority projects and as I ran out of endpoint on the larger project the create react app script became deprecated and the decision to move to another was underway with Next.js eventually winning. The decision to update the two smaller apps to Next.js was taken and while it was not a massive job it was learning the intricacies of the App router and how Next.js handled certain things differently compared to React on its own. I was able to get this done and even refactored some of the code to make it more readable and concise.

Expanding an app scope

One of the smaller apps needed an admin portal so my new task was to add this new section and integrate it into our SSO service for easy staff access. While most of the admin portal features were already available in the backend a new feature was being implemented and this was my first chance to work on the backend since I started. This was just a Node backend which I was familiar with and made an easy transition for me.

The final 3 months

Things changed in the last 3 months, I was asked to add a new feature with part of it in React but the other part was in Angular. While this was also JavaScript I had not used this framework before so getting to grips with the controller and how it passed information back and forth took me a little time to figure out but it was not too much trouble and it is now in production.

The other project I was given had a react frontend and I was given a sample JSON response to work on until the backend was complete. This had a couple of CSS challenges but was in my comfort zone.

Once I had completed this I was then asked to work on the backend and this is where it got interesting and very challenging for me. The backend was in our oldest app and written in PHP, which is a language I had never written in before and was told that the structure was quite different to that of any tutorials that I would find online. I used my personal development time to learn the basics of PHP, especially associative arrays, which looked like JSON. Because of the size and complexity of the app my imposter syndrome reappeared as I struggled at parts to understand some of this app. My lead developer, senior developer and manager were very good at pointing me to parts of the app that might help so I could look at these and gain some useful insights.

I managed to get part of the backend to work where it made some calculations and using some dummy data on a JSON file it returned the correct results and now onto retrieving the data from the database itself. I found myself going around in circles trying to find the right code but another nudge from my lead developer put me back on the right track and after some trial and error, I was able to get the right results back from the database and have the project working from the backend supplying the information to the frontend displaying it correctly.

My thoughts

Remote working

This was my first fully remote job I have done and it can feel a bit lonely at times but I think that Lumina have a good mix of online meetings and in-person team days and I like the structure. Also not having the commute means I can finish in the evening and then go straight and pick my son up from nursery which I enjoy.

Imposter syndrome

This can be very real and at times I dreaded going to work as I thought I would never get over that particular hurdle but with asking questions and a lot of research and learning I did get over this and for anyone going through it all I can say is it will end and you will feel a lot better for your accomplishments and feel better going back the next day.

Lumina

I feel lucky to be a part of the Lumina team. Everyone has been so welcoming to me as I think I was the second person in the team from Scotland even though the other person was Canadian, so they perceived through my accent. I like the culture at Lumina and how they strive to better themselves and this is part of their ethos and put into practice. They also use their products during the team days so we can get to know each other better I have found this useful and I am a bit introverted.

When I was interviewing for other jobs I always asked if they had any training time but none did so I never asked at my interview with Lumina so was surprised when Lumina had a program for this with a business Udemy account and time blocked off in my calendar. My manager also said that if I needed to learn something for a project then I should take the time out with this to learn it and it came in very handy when learning GSAP and PHP.

Scottish Tech Army

When I had finished my boot camp I joined the Scottish Tech Army and I believe that getting some experience through volunteering helped me get my job at Lumina as I could demonstrate some work in a real-world scenario on a real project so would encourage anyone who is struggling to find a job to find a local organisation like them or ask some charities if you could help them with an app.