I like problems. I decided to become a developer because software development is a never ending stream of problems. I have been a junior developer at Poppulo for just over a year and luckily for me no two days are the same with different challenges arising and solutions to be worked out. Joining Poppulo has fulfilled my appetite for problems nicely :)
Although Poppulo is a small company, from my perspective it was huge, with many teams and functions. My only development experience prior to starting here was at a small startup which while fun, was a bit limited in scope. The best way to describe my experience thus far in Newsweaver has been information bombardment. The project I am working is large with many moving parts and processes which means loads of nice problems for me to tackle! Also I have been getting up to speed with the many development practices needed to make working on such a scale manageable.
Beginning a new job is never easy but the rest of the Poppulo team have been great. They are always willing to offer a helping hand if required, and help is required a lot! This ranges from informal chats about issues I am having to more formal assistance such as training in new tech and code reviews which make up parts of the development process we have here.
Personally I have found code reviews or “Pull Requests” to be of great benefit. This is where your code is reviewed by other member of the team before being merged onto the main code base. This provides great peace of mind as it makes it harder for mistakes and potential bugs to make it to the production system. More importantly this fast feedback cycle has greatly accelerated my learning as a developer. Having other devs critiquing my code, pointing out any style issues, or areas that might need refactoring, means that I end up learning better practices and patterns than I would have if I had been left to my own devices.
The agile process also facilitates this fast feedback and learning loop. Daily scrums ensure that forward momentum and focus is maintained. I find sprint retrospectives are very important. Initially before being in one the thought of a retrospective seemed a bit wishy washy. Now I see the benefit of reflecting on what went well in the sprint and the areas that need to addressed. For instance one outcome of these retros over the past year has been the team re-doubling its efforts in upping test coverage. Because we talked about it in the retros the team moved forward into the next sprint with that goal clear in their minds. As a result of this it has been entrenched in our team values and is no longer something we need to worry about.
I have improved my knowledge of development hugely since starting. Reading other developers’ code (I review others code as well as them reviewing mine) is hugely beneficial in understanding problems and seeing how others solve issues. I have been exposed to several new technologies which I was previously unfamiliar with (such as Hibernate, Spring MVC and AngularJS and am learning new techniques and development practices every day.
Such is the nature of software development that there is never a time when someone knows everything or even most of everything. Technologies and processes are constantly changing and evolving so one must be familiar with the latest industry developments and trends. In Poppulo we hold frequent “tech talks” where developers present interesting new (and old) technologies they are working with. I have found this hugely beneficial and give me an awareness of lots cool new techs (from Cassandra to Spark to Event Sourcing).
“The man who graduates today and stops learning tomorrow is uneducated the day after.”
– Newton D. Baker
Asking questions is crucially important as it might take another developer a couple of minutes to show you a solution versus several hours of googling. In my time in Poppulo I have been guilty of not asking soon enough at times but I am getting better.
I have also learned the importance of planning tasks out in advance of beginning them. Previously I have found myself easily getting lost in large tasks and that leads to the frustrated feeling that no progress is being made. Because we practice Scrum I have found this is now less of an issue. With Scrum we sit down as a team and break large tasks down into smaller sub tasks before starting development on them. Smaller “bite-sized” sub-tasks enable development to be a lot more manageable and keep me and the team moving forward at a nice pace.
I aim to continue to learn, learn, learn over the next few months. As I become more au fait with the system and its nuances and I hope to take on more complex tasks and contribute even more to the team's velocity.
Currently there is a push to make the system less “tightly coupled” which aims to stop the different parts of the system from depending upon each other. Having a tightly coupled system makes development harder and more time consuming. This will help speed up development and enable development of new features to be more streamlined. By being involved in this project I hope to gain higher level insights into the system’s design and architecture, and best practices in these areas.
All in all it has been a great year here in Poppulo. I have improved a lot both personally and technically and with the team here I am looking forward to many years of happy problem solving ahead!