Working on a software project after it has shipped for 1 or 2 years can be fun. But sometimes you feel like you need to do something a little different – to get different ideas, different perspectives, and different types of challenges. I feel like I am in the midst of such a journey, one that has begun to have some results that were unexpected when I started. The big lesson has really been that I need to *talk* to more people about coding.
I have to start by saying, it is awesome working on a successful project. Our teams’ vision is now being used by thousands of new users every month, and some are even sending us love letters 🙂 These just add a certain energy to us day-to-day. We have also ended up learning a lot of things: That small UI changes from increased prompts to reorganizing menus and dialog boxes can make users much happier. That paying attention to the right type of profiling can result in a few lines of code that improve the performance of our code by over 100x. That sometimes results can be large if we remove features that we are not happy with and spend time improving the rest of the software.
And to top it all, we have been fortunate to be very customer/user focused and have not had to deal with the bureaucracy that you find in some organizations. But even with the above, I have felt a a need to try new stuff. To make sure that I am not not stuck in my old ways, and that I know how to improve.
Failure: Online Forums
As an introvert, one thing that I have tried a fair bit is reading blog posts online. And that has been great. Discussions on aggregation sites (like Hacker News, Reddit, DZone, etc) have often been interesting. The thing though has been that I have always had a little bit of an uneasy feeling with them.
I have generally not been sure how much of the opinions that I read online are that of biased people, and on the other end – on aggregation/voting sites that the opinions were following the crowd mentality.
While blogs and online forums are good, I felt wanting to see the facial expressions of someone when they say something that is incorrect. There is so much we can learn from getting a breadth of smart people talking about a topic.
Failure: Going to User Groups
Even though I am generally a self-learner, one of the first things I started doing was making sure to attend user groups. Our main development is in Java these days, so going to the local Java User Group’s seemed like the best idea. And I did not really find it that helpful.
As a self-learner, I am mostly up-to-date about the latest frameworks, so I quickly got bored of attending any of the basic introductory talks on frameworks that I am familiar with. This just resulted in me coming only once or twice a year when the topic was interesting.
After about 2 years or so of not being very happy, I wanted to take a different approach. Hearing the perspectives of others at these User Groups sounded like they had most of what would be helpful, but I wanted a way to make sure I was not wasting my time. I wanted to see if I could get these perspectives and if I could take my ‘bored’ time at user groups to work on more advanced skills on the same topic.
Success: Coding and Interacting at User Groups
At a recent talk on Grail 2.0, I found it helpful to hear the latest stage of the roadmap of the project and see where things were going. I was able to get a sense of whether my fears of the project stagnating were true or not. And I found some interesting resources that I had not realized were available. And when the presenter gave an introduction to Grails – which I had read a couple of tutorials on before – I took the opportunity to actually build a full-fledged Grails app.
I know that some people might consider it bad etiquette to do something different while a topic is being presented, but I did want to hear the rest of the presentation and I hope the presenter appreciated me staying around for the talk.
Beyond the core presentation, some of the user group members got together immediately afterwards to get some drinks. During this time we talked about general development processes, challenges that teams are facing, and what the job trends are. In fact, I found this part of the meeting so helpful, that I have decided to actually spend more time volunteering and helping the organizers.
I also looked for smaller groups that have a lot more discussions among members. One of them has been focusing on Software Craftsmanship. I found it helpful sharing general development thoughts with people who care about the code that they are writing. And at the same time, as someone who has seen attempts at Test-Driven Development fail way too many times, it has been very helpful to hear how others have gotten tests to work effectively for themselves.
So, yes, I am going to be attending user groups in the next few months. And I will make sure to be sharing more tips and learnings from these. Though, at the end of the day, everyone’s situation is different. If there is a big lesson here, it is actually to actively attend and participate in such meetups.
If you happen to live somewhere where there aren’t such meetups – try starting one. It is incredibly helpful to have people to talk to who don’t just think like your team/company. And if you live out in some place where there are few coders living in the area, make sure you attend multiple conferences!
Comments/Discussion on Hacker News.