I was a software development intern at nearForm from January to September 2015. During my time at nearForm, I learned some really important life lessons that I’ll never forget.
Where to start? The lessons I learned include the following:
- How to code as part of a large, globally distributed team.
- Coding isn’t all there is to being a good developer. Writing skills are essential. I learned to hone my writing skills to best put them into practice.
- Having a good manager is great. Having the best of managers? Priceless.
- The really important software problems I encounter are sometimes people problems. But that is okay, because to err is human. Good communication skills will resolve these problems for you.
- All of the approaches you can think of to solve a problem might be wrong, and it’s OK to reach out and ask for help.
- Identifying and stating my own weaknesses and making them clear for others is a strength, and usually, people help where they can with those problems.
At nearForm, I realised that culture is a key part of life in any company.
I got to work with a marketing department whose people understand software development. They don’t dismiss developers as background cogs (which can sometimes be the case in other companies). I made a real contribution to the development of an internal tech blogging process.
In terms of software development,
I worked with a diverse, multicultural team who all made me feel that I was more than just a junior developer.
I was a respected team member who could do more than just patch a bug. I was a part of something bigger.
I became attached to nearForm and everyone in it.
Seeing it grow from one room in an office complex to our own dedicated building made me proud. It’s truly humbling to have worked with people who managed to make an intern feel like what he did made a positive impact on the company. I was part of a company that respected me and all I ever saw was a positive culture within all aspects of the company, and for that I was very grateful. Provided that it was positive for the people or culture within the company, breaking the mold was okay.
Getting off the ground
Before I started my internship, I asked to work with some native Node.js modules. When I arrived into the office on that first Monday morning, I was introduced to Damian Beresford, one of the delivery architects in nearForm. Damian was to be my instructor, and he had an idea for a project which was the perfect fit for what I wanted to work on. Under his guidance, I implemented LTTng support in Node.js.
Next, I worked on open source libraries for instrumenting Node.js code.
Getting to work on these open source projects was really cool and fun, and I got to give back while doing it. I loved getting that chance to help others like they helped me.
Damian delivered a talk at the Node.js Dublin meetup in March 2015 on tracing in Node.js and tracing in general. He got me to demo my work at the meetup and it got a good reaction from the audience. I built a web app for running on a local machine to control tracing sessions, which was a much-needed tool. I was involved with the io.js tracing working group on GitHub and I got to help with adding tracing features to Node.js. I thrived with that level of responsibility.
At the beginning of May, I met with one of the nearForm managers to discuss whether I felt ready to move up to the next level: working on client projects under supervision. There would be full transparency with the client; the client knew that I was an intern and that any contribution I made was closely supervised. I was told that if I needed help at any time, I would receive all the support the company could provide.
In my first client project, I worked on load-testing the platform that we were co-developing with a client. Then I wrote validation tests to check that we had the correct user permissions in place. I worked with another intern on designing a really cool test harness, which created and ran over 1500 tests to verify system permissions for different user types. We made it super-awesome (in my opinion) so that it could be used to validate permissions on a lot of Seneca.js projects we work with.
It was hugely exciting for me to be part of real client projects.
The fact that I was allowed to do so reflects the spirit of supportiveness and trust that there is at nearForm.
nearForm is heavily involved in open source and the global software community. As part of this work, the company is a partner and sponsor of the CoderDojo Foundation. I got the chance to work on the new community platform that CoderDojo recently released. The people who work for and with the CoderDojo Foundation are phenomenal people and I feel privileged to have worked on that project.
Also, seeing everything that happens on the development of a large microservices project such as this made me really appreciate the importance of communication skills for us as software developers and engineers.
While working on these projects, I had the chance to get involved with some of the many events that nearForm runs. I attended a number of Node.js Dublin meetups, a Microservices Dublin meetup and the CoderDojo Coolest Projects event. nearForm encourages all its staff to become involved in the tech community on a wider level. I got to assist in the running of events that I never imagined I would be attending. These were enjoyable and memorable experiences. (How could I forget some kids trying to land a drone on me at the Coolest Projects event?)
I also got to work on a “cocktail robot” for the NodeConf EU event before I finished my internship. The task assigned to another intern and me was to build four cocktail-making robots in five days (including the weekend). To do this, we had to assemble the robots, develop software to run the pumps, and build a server that sent jobs to the pumps over mqtt [Github link].
The guys who came up with the cocktail robot idea assembled the PIs, while another intern and I collaborated to come up with the best messaging format between the server and the PIs. I then built the server and the UI. The UI was built with Bootstrap and AngularJS, which communicated with the server in real time using Socket.IO.
We went from nothing to a fully automated, finished product in five days and it all worked.
What’s even better, I wrote updates for the UI and server and deployed them, while we were running everything and drinking cocktails! It was an awesome project to finish my internship.
Going forward, I hope to work a lot more with Node.js. I’m using it for my final year project in college. I loved every moment of my internship, and hope that nearForm will have me back when I graduate.