Prelude to Thoughts on “Turning Tech Hobbies into Side Hustle”

This is a bit of inception. A post on a post on a post.

For a while, I have been thinking that it might be worthwhile to try writing some shorter posts inspired by other blog articles I have read. During the week I read Erik Dietrich’s post Turning Tech Hobbies into Side Hustle and later sat down to write some thoughts it had inspired. I wrote 403 words, but they didn’t come very easily, lacked purpose and in the end I didn’t think they were worth sharing.

I think I’m still finding a balance between planning and writing off the cuff. Hopefully, as I go, I am reducing the amount of planning required for a good post. Eventually I realised that what might be worth writing about is analysing whether what I have done recently has been productive or a hobby.

So I am sitting down again to try and write something based on that. Fingers crossed it goes better than my last attempt. I am not sure that I will post that article tonight, which is disappointing as I was hoping to post something earlier than Sunday night this week and maybe even get two posts out.

Prelude to Thoughts on “Turning Tech Hobbies into Side Hustle”

Some reflection

I don’t have a specific topic to blog about this week, but I wanted to continue with publishing a post weekly, so this week I am writing a reflective piece.

When I set myself the goal of posting weekly I was aiming to

  • increase the quality of my writing
  • reduce the time it takes for me to write a post
  • share more information

Weekly blogging has been enjoyable, but when I think about what I am aiming to achieve I am not sure that I am progressing as well as I could be. Maybe that is because I didn’t specifically articulate the three points.

Personally judging whether my writing has improved is difficult. To improve the quality I think I should start getting regular review and feedback on my posts and I think there is two types of feedback I should look to get. The first is just general feedback on my writing e.g. spelling and grammar. The second, and probably more important, is whether my posts are clear and easy to understand and follow.

I haven’t been tracking the time it takes me to blog accurately, but I do think I have gotten faster at writing posts. The slow parts have been the researching and learning when I am writing about something new, and I learnt during the Selenium series that I should not try and preempt the posts, but instead learn and then write about what I learnt.

The last point is a bit vague and while it seems that I am sharing more information by blogging weekly, that is not how I was thinking about it. So far most of my blog posts have been technically orientated and describe the solution to a problem. What I want to get better at sharing are the things that do not have a solution or a right answer e.g. how I’ve hired developers, how I manage my team and building the product. I have been working on posts for those topics alongside other things and have found it harder to write about them. I am finding that it takes more thought on how to write about them to ensure those posts are clear and not just some ramblings. So while the aim is vague, once I get some of those topics on the blog I will be happier about progressing towards it.

Overall, while this has turned out to be a bit of a critical post (when is reflection not critical), I am happy with how it has been going. There is satisfaction in seeing the number of views my blog gets daily steadily increasing over time as I add more and more content to it. That said if I was just after views, I’d be blogging entirely about JavaScript probably specifically React and Webpack. My most popular post is far and away TypeScript to ES2015 (ES6) to ES5 via Babel 6 which I realise now I wrote a whole year ago. It must be extremely out of date by now!

Some reflection

Interlude and reflection on Selenium

I am putting my UI testing with Selenium series on hold for the moment. My goal at the start of the series was to be able to create UI tests and as I worked through learning how to, I blogged about what I was learning. My initial goal has been achieved and I can now write UI tests.

Before I continue the series I want to gain more experience UI testing, by writing tests for more advanced scenarios and allowing time for the way I write the tests to evolve. I also want to find out how robust (or brittle) the tests I create are when UI changes are made.

I think the blog series has been good. When I set out to learn Selenium, I personally found the available information confusing and had questions such as “which nuget packages do I actually need?”. I answered these questions and hopefully the series can help others who are looking to start using Selenium.

However, I do think the posts could have been better. It was not a conscious approach, but what I ended up doing was premeditating what I was going to blog about and then spend the week learning about that so that I could write the post. Deciding the goal in advance didn’t work out often and ended up splitting the blogging and learning into almost two separate activities.

I think a better approach would have been to have just blogged as I went about learning Selenium. For example something with a flow like the following bullet points.

  • I want to learn how to UI test with Selenium.
  • I can’t find any good guides for getting started.
  • I am attempting to create a UI test, but am confused about all the different nuget packages available.
  • Learn and describe the differences between them.
  • Create simple project with only the nuget required.

One of the things I struggled with was the structure of the posts and how to frame the information that I was learning. If I had written the posts as I went I think much of the background of why the information is important would have been taken care of. While writing the last post I started to make some changes to the example tests and the UI. Whilst making the changes I realised that I should add a page object to reduce code duplication and simplify any further changes. This led to me talking about page objects at the start of the last post, but I lost the context of why I introduced them, which would have help to demonstrate and explain the reason for the pattern.

I also think the posts require more code samples in the actual post. It would have been easier to add code snippets in if I was describing what I did in a more step by step manner.

My plans for the series are to look at libraries such as Seleno that simplify the UI tests, but as mentioned before I want to gain some more experience so that I can appreciate the benefits they provide. When I am ready to continue I will take the new approach to writing the blog posts.

Interlude and reflection on Selenium

Some reflection

I finished citibank-statement-to-sheets a while ago (GitHub tells me the last commit was on August 10th) and have been putting extra hours into One Model in the time since. I have some projects in mind that will help me organise and manage our code base, but until now I felt other priorities were more important to complete. Tonight I was excited to start on the first of these projects Ef6Uml, an app that will allow me to generate a class diagram of our entities on demand. I created the repo, put some details into the README and then started to create the solution and projects when I realised I still need to install update 3, which is how I ended up writing this.

The twelve months that have passed since last September have flown by. On the personal side I got married and took some time off for the wedding and honeymoon. Professionally One Model has grown from just a single developer (me!) to a team of 3 led by me. My role has changed from being the lead developer to managing the team and ensuring they are setup to deliver. I am also a director of the Australian subsidiary and have to manage the administration it requires. One Model is in a good place, both the business and the software but for this I am going to focus on the software.

I feel that we are getting the balance of quality to speed right. There are pieces that could be better, but there are pieces that could be worse. In AWS we have a dev environment that developers are administrator’s off and have full control of. This can mirror production, and with the exception of the data it does. This environment and AWS allows the team to operate with DevOps principles. Our infrastructure is scripted (CloudFormation and OpsWorks). We have continuous integration and delivery (deployment to dev is automatic) through AppVeyor and Octopus deploy. We didn’t start with all this, we grew from using Elastic Beanstalk and basic deployments directly from AppVeyor, but have built it up over the year and it now allows us to get features and fixes out quickly. This is also not the final destination, we will continue to improve, but it’s where we are at now.

Going forwards I think the next area of improvement for the team is UI acceptance tests. We have a good suite of unit tests that get run as part of the build, but are lacking acceptance tests to ensure the units work together as expected.

A lot of my own personal development has been in managing the team. I’ve been the technical lead before, but not directly responsible for management. Luckily I’ve had a couple of good managers who have inspired and shaped me and have been reading plenty of blog posts on various topics. I have read Managing Humans, but my goal is to read more literature on the subject. That said the team is still small, so I don’t spend a lot of time managing them. Most of my time gets spent in more of a product owner/business analyst role ensuring that features are ready for the team to start on and have been fleshed out to more than the 5 words on a card in Trello they tend to start out as.

The hardest part of my new role has been hiring. Other than sitting in on a couple of interviews I had no experience in this area. There are a lot of resources on the subject (even specifically on hiring developers) and over the last year I have been developing my approach. I am still having trouble filling the start of the hiring funnel and am relying on recruiters for candidates. I don’t think this is ideal (recruiters aren’t cheap) and candidates are still hard to come by. We need to do more brand awareness. A blog would be good and some more effort into our open source projects wouldn’t hurt. I also attended the AWS developer day in Brisbane and noted a lot of other local companies and startups had everyone wearing branded shirts. That was a missed opportunity for us. I also attend a lot of meetups and can probably put more effort into spruiking One Model there.

I was going to write a little bit about the meetups I have been attending, but this has turned into a pretty long piece already and it is getting late. I am already behind where I want to be on my Ef6Uml project. All I did tonight was create the repo and the solution. Fortunately there is a long weekend coming up to work on it.

Some reflection

Post Techstars

It’s taken me far too long to write this blog post. It’s almost been two months since I got back home from Austin and Techstars. I have to make room for writing blog posts in my home rhythm. Today is a public holiday here in Brisbane and I am making myself sit here and finally write this post.

The Techstars program was an awesome experience. I won’t go into detail about what actually happened during the program because Wonders, one of our cohort from the program whose great storytelling app you should check out, have a great write up that does a far better job than I could describing our experience.

For me personally the program was great for developing my entrepreneurial skills and knowledge. I had previously participated in a couple of entrepreneur/business programs while at school, but since then got a little too caught up in my career. I had a couple of ideas during that time, but didn’t have desire or courage to follow them. Co-founding One Model and participating in the Techstars program has rekindled this part of me.

Another thing I have taken from the experience is the importance of community. As Brandon Marker describes, community is a big part of what makes Techstars. I have come back to Brisbane with an endeavour to be more involved in the local scene. To kick this off I went to the final pitches for Startup Weekend Brisbane at River City Labs and I want to attend more events like this and look for opportunities to get involved.

I can always draw motivation and inspiration from the people I met during my time in Austin and I look forward to the next time I see them.

Post Techstars