Software Development is More Than Just Coding
What I learnt as a Software Developer Intern at ELMO Software
2020 began with my first ever lines code and ended with me in the midst of a six month bootcamp. After completing the course I was given the opportunity to spend one month as a developer intern at ELMO software in Sydney.
Before the internship I still thought mastering languages or frameworks was my biggest priority. Now I see there’s far more to development than just writing good code.
The real day to day
On day one I didn’t write any code and many of the developers I met didn’t either. It was my first realisation that software development was more than just sitting at a screen all day and programming away. Instead I got to see teams meeting, discussing and planning.
I guess I was still preoccupied with building up my technical skills post bootcamp. Technical skills are important but not the only things I need to learn as a junior developer. My image of what development was began to change from this point.
The day ended with what I now know as a story mapping session. At first it looked like a simple meeting to brainstorm ideas for a feature, but it wasn’t. I observed that by the end of it, a clear direction for that part of the project was decided on and everyone seemed aligned in their thinking.
This reflected what I kept seeing throughout my internship, which was good communication that clarified and refined what needed to be solved and why or how this should be done. This is why simply being a good coder isn’t the same as being a good software developer.
Working and planning as a team and thinking about whether or not a problem is actually a problem or even needs solving are things that have to be part of your skill set. If they aren’t then how can you achieve anything of value or how do you know if you are building what needs to be built?
Ask Why
During the internship we were given a task to build a React app that interacted with the Jira API. One day I was talking about this project with a senior developer. He began asking why I had made certain choices while building the app.
That was a great question. Why did I use that? Had I carefully considered if that was the best tool for the project? Is there something more suited to the problem I’m solving?
An engineering manager expanded on this further for me. He said that technical skill is basically a given and anyone can be a coder. The difference between this and a developer is the ability to think critically about what you are doing.
It seems to me that thinking and questioning is exactly what the planning processes I mentioned earlier are trying to facilitate. They help to identify a problem and a method to solve it.
Later while developing my app I learnt a valuable lesson around neglecting to ask these questions. I found myself building out features that weren’t necessary at the time, a minor issue while working on this small internal tool but something that could be very costly on a major project.
Stand ups, retrospectives, story Mapping, OKR’s. All of what I was seeing at ELMO every day was used and iterated on to keep the direction clear and pivot if necessary to meet customers needs. So this was agile. I’d never experienced it in a real life setting before.
Continuous Communication
I was very fortunate to participate in an agile training course while I was at ELMO. It helped me understand more of what I had seen and done and validated things I had been taught. My biggest take away from this was the need for continual communication.
During the training there were practical exercises to simulate an agile development environment. We interviewed, planned, and delivered a product in two teams.
Even with good communication this process wasn’t smooth. It required adjustment throughout the exercise, using the feedback from customers and managers and our own reflections to correct course and create real value for these groups.
This continuous feedback loop is what facilitates improvement and iterating on a design, which seems to be the core of agile software development.
What’s next?
The experience has been great and I’m very lucky to have interned at ELMO. It challenged my ideas of what software development would be like and my focus and habits as a developer.
From here I plan to build on these lessons. I will become a better coder, I’ll never stop studying for that, but I know that to be a good software developer who can work well in an agile team environment I need to do more than just code.