My name is Eric, and I recently started a four month apprentice program here at Varvet, mainly focusing on web development. First off, I’ll briefly introduce myself.
I’m born and raised in the western parts of Gothenburg and apart from computers, I gladly spend my time either watching or playing football, fishing, windsurfing or sailing. Education wise, I recently graduated from the Computer Science and Engineering programme at Chalmers, where I studied the algorithms, language, and logic master.
Regarding my own experience as a developer, I’ve tried out a handful of programming languages. In school, the focus has been on functional programming languages like Haskell but I’ve also dabbled with e.g. Swift when developing for Apple Watch at a recent summer job, Python and Apache Spark during my thesis at Chalmers, and ReactJS and NodeJS at my side project. However, I’m completely new to the main technology used here at Varvet: Ruby on Rails.
So far, my time at Varvet has been spent learning the fundamentals of Rails through books and by building my own throw away application, but more recently by working together with our experienced developers on a real client project. Overall, it’s been interesting to observe how things are solved in Ruby/Rails and in particular how the concept of metaprogramming is used for extending core classes with various functionality, e.g. listing a past date as
365.days.ago or using
11.mm for easily converting from points to millimeters.
When working on the client project, which uses ReactJS on the frontend and Rails on the backend, I’ve had the benefit to pair program with the other developers in the team, both on core business logic but also on how to recognize and resolve performance issues in a complex UI. In contrast to the majority of my previous projects, one of the things which strikes me the most is how diligently tests are used. As my co-worker Nicklas said, “the hard part with the software we write is seldom the algorithms, but rather how to produce maintainable software”.
In practice, this means tests for multiple layers of the stack. In the current project, there are unit tests for the core business logic, React tests for simulating interaction with the React components and making sure the DOM is appropriately updated using React Test Utilities and acceptance tests for interaction with the application through a real browser and testing e.g. persistence using Capybara. Coming straight out of school, where programs often are ditched as soon as the course is over and maintenance isn’t really a top priority, it’s been beneficial to watch and learn from developers with this mindset.
Apart from the technical side of things, I’m really enjoying the workplace and social aspects and I appreciate the warm welcome from everyone in the team at Varvet. It’s been a great time so far, and I’m looking forward to working on interesting projects and hopefully producing content of more technical character on this blog!