Produced by Guest blogger
This is a guest blog by James Leaver, who is studying BSc (Hons) Data Science & Analytics.
In June 2021, I will begin JPMorgan’s 50-week Software Engineering internship program at their Bournemouth campus. This is in large part due to my experience at their Code For Good event – the topic of this blog post.
In the first year of whichever Computing-related degree you embark upon, there is a unit called Business Systems Analysis & Design (BSAD). This unit requires you to exercise all your programming skills, knowledge and intuition you’ve accumulated through the year. In this unit, you work in a team to go from a brief to requirements to designing and building a prototype, with the mission of developing a solution to a hypothetical problem for a business. The scenario varies from year to year, and this time round, the scenario was provided by JPMorgan. Over a fortnight, my team and I designed and developed an ‘Incident Response Management System’ for BSAD. Our reward for our efforts in the unit was an opportunity to apply for the Code For Good event.
This event was my first hackathon and I went in with an intention to both learn and contribute as much as I could. It wasn’t just a hackathon, but an opportunity to learn from professionals as during the event – there were workshops to better understand your capacity in a team and hear first-hand from employees of their experiences and the work-life benefits at their respective campus (London, Glasgow, and Bournemouth). Moreover, during the event, specialists were available to assist with any technical issues during the night; there are one-to-one sessions with your team’s mentor, to learn more about JPMorgan, and JPMorgan to learn about you.
For the main event, four charities are looking to technology to aid them in their fight for good, and they each present the issues they face and their needs in your solution. You, and five others whom you’ve just met (on Zoom – during the pandemic), must conceptualize, design and hack together a prototype for the idea in under 24 hours. Our charity was Social Tech Trust, which provides support and funding to technology ventures that improve people’s lives, and they were looking for ways to better provide resources and support to entrepreneurs in this space.
Our solution was a Talent Exchange Platform – to help connect volunteers with entrepreneurs and entrepreneurs with the guidance and expertise necessary to take their idea forward, with the intention of bringing a community for volunteers and entrepreneurs of social technology to fruition. In terms of features, a user could share their project ideas, express their backing for projects they liked and, if they’re an experienced entrepreneur, could share their expertise in the form of posts.
When it came time to decide which technologies to build our prototype in, I wanted to ensure that we were using frameworks that my team members had experience with and were comfortable using. My mission was to learn as much as I could, not only from JPMorgan, but from my teammates – especially those with greater hackathon experience – so I viewed pair-programming with an unfamiliar technology as opportunity rather than a hindrance. The consensus was a React front-end, a REST API powered by Django and a relational database stored via SQLite. Since our team was predominantly composed of those with back-end expertise, I was allocated to the front-end.
I had never worked with React before but I had written a lot of vanilla JavaScript in the past, so I wasn’t completely lost; and with the help of the React documentation and my teammate, was able to write some logic and the display of a couple components for the front-end. The back-end team made good progress on the design of the database, but were having difficulties getting off the ground with Django, so at 1 am, we made the decision to switch to Flask, another Python-based framework but one I had experience with from coursework at university, and I switched over to the back-end team. This setback made me realize how valuable the early stages of development are – both in terms of fatigue and in the decisions you make that shape the later stages of development.
As the night went on, we grinded through the essential features, writing the logic for resource locators necessary for the parts of the front-end that existed, modelling the database with SQLAlchemy and testing the API with ARC; but progress slowed down as we became more and more deprived of sleep. At 6 am, we sought to finally bed down and regroup at 8; we still had to connect the front-end to the back-end and sort out a presentation with the deadline looming at around lunchtime.
When we awoke, a mentor had arrived to help us coordinate the final stretch. During this final stretch, we had one team focusing on the presentation and the other on wrapping up the prototype. Through a second wind, we managed to connect the two parts of our project and get it working, and while it wasn’t the prettiest – it was functioning from end to end in time for submission. We didn’t win the competition but I was proud of what we had accomplished; it was the first hackathon for the majority of the team and the experience was worth it.
This experience taught me a lot about myself as a member of a team, and my priorities as a student and a programmer. It taught me the value of frameworks and code reusability. It taught me the impact of development decisions and the value of the early stages of development. These things may all seem very elementary but it was only when I was desperately trying to make the most basic of features work at 4-5 am that it really clicked in my mind. Furthermore, I believe the impression I made and contributions to the team, was a factor in JPMorgan’s decision to offer the Software Engineering internship to me.
If you’re a 1st year looking to do well or anyone seeking a career in software engineering, then my advice would be to learn as much discrete mathematics, algorithms, and programming as you can, and practice programming as often as you can. Programming is a skill, and only through practice can you learn it. Keep up to date with the latest tools and frameworks, and familiarise yourself with them. If you’re wondering whether it’s worth doing a hackathon, then yes it is – especially if it is hosted by a company you’re looking to get a placement with; it gives you an opportunity to make an impression you wouldn’t otherwise get to make through the standard induction process.