<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Richard Chernanko</title>
    <description>The latest articles on Forem by Richard Chernanko (@rchernanko).</description>
    <link>https://forem.com/rchernanko</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F64673%2F175205c3-34fd-47bf-80f8-4289bdca95f1.png</url>
      <title>Forem: Richard Chernanko</title>
      <link>https://forem.com/rchernanko</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/rchernanko"/>
    <language>en</language>
    <item>
      <title>8 things I’ve learnt from my first year in mobile development</title>
      <dc:creator>Richard Chernanko</dc:creator>
      <pubDate>Fri, 26 Nov 2021 15:55:43 +0000</pubDate>
      <link>https://forem.com/rchernanko/8-things-ive-learnt-from-my-first-year-in-mobile-development-41cm</link>
      <guid>https://forem.com/rchernanko/8-things-ive-learnt-from-my-first-year-in-mobile-development-41cm</guid>
      <description>&lt;p&gt;&lt;strong&gt;A little bit of background…&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It’s a Friday afternoon. I’ve just made a cheeky cup of tea, and I’m in a good mood (my football team is yet to play) — it’s time to write.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Z6Jve0r0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4x4vnko60qythgk6kpfe.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Z6Jve0r0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4x4vnko60qythgk6kpfe.jpg" alt="Change/Chance" width="880" height="584"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’ve not done this for a while, but a year into a new role is definitely a good time to reflect. This post will look at some of the things I’ve learnt in moving from backend to mobile app development, along with a few other random thoughts based on my first year at my new company.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Another sideways transition&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No, I’m not talking about the “we don’t actually want to score any goals” tactics of my beloved Tottenham Hotspur, but rather the fact that I’m in the process of making yet another transition into a different discipline of software development.&lt;/p&gt;

&lt;p&gt;In the last seven years I’ve gone from:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;manual testing to automation testing&lt;/li&gt;
&lt;li&gt;automation testing to backend development&lt;/li&gt;
&lt;li&gt;backend development to mobile app development&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And it’s this last one that I’m currently going through.&lt;/p&gt;

&lt;p&gt;There’s always a question of whether it’s better to be a generalist or a specialist. Quite frankly, I’m not 100% sure on what the right answer is. It probably differs from person to person. My short-term take — I like to try new things, and so when opportunities come about to do something different, sometimes I just go for it. I loved test automation and backend development, but I think that it’s nice to build up a breadth of knowledge across disciplines. I can try lots and lots of different things, and then one day I can then potentially narrow down my focus. That’s how I see it anyway.&lt;/p&gt;

&lt;p&gt;And so that’s essentially how a role in mobile came about. The opportunity to try something new was there (UI development), the company and its culture felt right, and so I thought why the hell not.&lt;/p&gt;

&lt;p&gt;End of context.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My top 8 takeaways from this last year:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tohwMlk5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hthe22y09z045r0plluf.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tohwMlk5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hthe22y09z045r0plluf.jpg" alt="Man eating pizza" width="880" height="587"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;1) Ghandi (Eppendorf Baum)&lt;br&gt;
2) The Vegan Eagle (Langenhorn)&lt;br&gt;
3) …&lt;/p&gt;

&lt;p&gt;Hold your horses Rich, this is actually a tech blog…&lt;/p&gt;

&lt;p&gt;Here are my top 8 &lt;strong&gt;work-related&lt;/strong&gt; takeaways on the transition to mobile app development and my first year at my new company (in no particular order):&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Jumping into something new is still both exhilarating and yet absolutely terrifying&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This one doesn’t solely refer to the last year, but to the general concept of transitioning from one thing to another. Making these kinds of jumps is scary. Like my previous transitions, I had absolutely no experience in the thing I applied for. Throw in the fact that the job would be remote (I am in Hamburg but hey, Covid-19 restrictions), I was quite frankly sh**ting myself before starting the role. How would I fare?&lt;/p&gt;

&lt;p&gt;Before accepting the job offer, I tried to make sure of two key things — were the people in my potential future team right, and would I be supported in my learning of a new discipline? From my on-site trial day, I knew the first part was fine. And as for the second part (here comes the sales pitch), I must admit that the company has been excellent. My colleagues and I have done countless pair programming sessions and they’ve always been there when I’ve had questions that needed answering, or to explain concepts that have not been fully understood the first time around. They’ve shown a lot of patience with me and this has been most welcome. Even working remotely has gone as smooth as I could have hoped for.&lt;/p&gt;

&lt;p&gt;A year in, and I think it’s safe to say that things have gone ok. Having done this kind of thing a few times now, I’ve been fully aware that there are always going to be downs as well as ups. It doesn’t always run smoothly. There have been and will continue to be times where I am pulling my hair out. But hey, welcome to the world of software development.&lt;br&gt;
To cut to the chase — if your attitude’s right and you’re backed by a good company and colleagues, the jump is not as big as you might initially think.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. It’s been strange going from releasing x number of times a day to 1 release per x weeks&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This has been an interesting one. As a backend developer, if you release a change and it breaks something, you can just release a hot-fix immediately. With mobile apps, this isn’t really an option. If you release something into the wild and it’s not working as intended, you then have to go through an entire upload / approval / release process again. In my experience, the process for Android is not too bad but Apple reviews can sometimes take the same amount of time it’s been since my football team last won a trophy (13 years and counting…).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DGfFLZJ1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5312gcq2kxhc5mb6mvae.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DGfFLZJ1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5312gcq2kxhc5mb6mvae.jpg" alt="Man holding hands in head in football stadium" width="880" height="584"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This has definitely required a change in mentality.&lt;/p&gt;

&lt;p&gt;Naturally, there are ways to mitigate the risks. We’ve a vast number of automated tests, a thorough manual testing process, we use phased releases and we monitor crashes and error logs after a release. We also have a proxy-server (Kong) that allows us to change the responses that are returned to our apps. But of course, sometimes bugs or unexpected knock-on effects slip through, and it can be quite annoying to then have to wait until users are using a ‘fixed’ version of the app and no longer the buggy one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. I like Swift&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Swift is a nice language, I must say. Naturally I still need to wrap my head around its many intricacies, and of course, I have not learnt / do not know everything about the language, but my initial impression is good. The things I like the most are guard lets, enums and exhaustive switch cases. Especially the guard lets. Oh yes, I do love an early return, especially if it results in one less if / else statement. I frigging hate them.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--N9lDgLU---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/42itrcflxi2mupmfm8gl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--N9lDgLU---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/42itrcflxi2mupmfm8gl.png" alt="Meme - if else statements" width="300" height="255"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It’s still taking some time for me to get fully used to things like UI view lifecycles and architectural best practices (e.g. MVVM), but this is just a question of practice makes perfect. I haven’t really had much of a chance to work with Kotlin for our Android app, but this also strikes me as being quite nice to work with. It’s definitely great to be working with what are considered ‘modern’ programming languages.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. I have a love/hate relationship with Xcode&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I honestly don’t even know where to begin with this one…quite frankly, I don’t like Xcode as an IDE. It feels ridiculously heavy and slow, like a dying-old man trying to run a marathon. The number of times I’ve seen that horrific colourful spinning wheel of death pop up on my screen — it drives me mad. The caveat here — I’ve never used an IDE for UI development, so perhaps this is just the norm. And quite honestly, I am used to using JetBrains IDEs and I am comfortable with them. That being said, I must admit that I have gotten somewhat now used to Xcode, and it does offer pretty much everything you’d want for iOS development in one place. But I don’t think I will ever fully warm to it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0nZ3SpRz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/23n26w8jela19xkm4adz.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0nZ3SpRz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/23n26w8jela19xkm4adz.jpg" alt="Man screaming at computer" width="880" height="680"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And despite this, it has a big perk — it’s free. It costs nothing (minus a high-spec MacBook of course…). And that’s the thing I need to remind myself when whining like a spoilt brat (see above). Of course I could just buy an account for AppCode, but when everyone else in the team is using Xcode, I don’t think that this is a good idea. And like I said, I have gotten used to it, that’s for sure. But unfortunately, the fact that Xcode is free is something I am constantly having to remind myself when it either crashes or causes my laptop to burst into flames.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. You have to care about users using older devices&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Pretty obvious I know, but not something I really had to worry about when building APIs. Of course, I needed to ensure some kind of backwards compatibility, but that wasn’t so much of an issue. But yes, if there’s a certain percentage of your users still using a 4-year-old operating system, you need to cater for them. It’s sometimes a little annoying as it can stop you from adopting newer libraries and frameworks, e.g. SwiftUI, but I must say that we are quite good at regularly checking the versions we no longer need to support, and then removing them. So at least we have a good strategy there.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Mobile tooling seems pretty good&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I’ve had the opportunity to work on some features this year that have involved me interacting with things like App Center and fastlane. The latter in particular is just absolutely fantastic. It really can speed up your workflow and eradicate a lot of manual processes (I promise I don’t work for them on the side). I worked on a ticket that resulted in us using fastlane to automatically manage all of our certificates and provisioning profiles for our iOS apps. And this is just brilliant, it will save us so much manual effort in the future. Love it. Tools like this mean that you can spend less time on the dull stuff and more time actually working on your apps. So therefore, my first impression of the tooling available to the mobile community is very good.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FOqWzcIS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oj7fc1et3n62ztkssmgc.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FOqWzcIS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oj7fc1et3n62ztkssmgc.jpg" alt="Sports car" width="880" height="440"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. Lots of good practices in one software development discipline ring true in others&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I will focus on two things here — communication and delivery. I won’t talk about software design patterns and architecture etc, I think it goes without saying that e.g. the DRY principle is as valid in backend development as it is in mobile.&lt;/p&gt;

&lt;p&gt;Over time, I’ve come to realise that one of the key things in any discipline is communication. It’s essential to make sure that everyone in the team is aligned and that we all have the same expectations, especially regarding how long something is going to take. Because if there is a misalignment, something is not right. And you know what, at some point the sh*t will hit the fan. I think my team is pretty good at this — we are a relatively new group and so we had a few teething issues at first, but we have gotten much better of late and are in a good flow. And that’s somewhat of a relief.&lt;/p&gt;

&lt;p&gt;This year has also reminded me to always think about how to break down features into smaller chunks. This is true of even mobile development, where you might not simply deploy every tiny change to production. But by splitting things into sub-tasks, you may be able to release certain parts of the feature to users while continuing to develop the rest. Therefore, you start to see some value and receive some feedback much earlier. And you can also demonstrate that you’re making progress on something, which is always a useful thing to be able to show.&lt;/p&gt;

&lt;p&gt;It’s interesting because I got pretty good at this in my previous role, but I think when you start something new, you sometimes forget the basics. You’re so focused on fitting in, you’re taking on so much new information, and you just want to get your head down and crack on with things. At the beginning of my time at my new company, there was an instance where I didn’t think about how to split things up and I then got frustrated when something took a long time to deliver. Had I thought about better splitting it up into deliverable chunks in the first place, the frustration wouldn’t have been present. I’m not sure why this happened to me, but it’s a good lesson learnt. I will 100% not be making this mistake again. Always think about how to split things up.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;8.Making sure to get physical exercise is much more important than I thought&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I am 100% sure that I am not alone in dawning upon this realisation in the last two years. When I worked in the office five days a week, I always walked at least an hour a day as part of my commute. Working remotely in this last year (especially during that slog of a second lockdown in Hamburg) has taught me that it’s massively important to continue with that. There was a period where I’d injured my foot after running and so couldn’t walk properly for a couple of weeks (and couldn’t run for a while longer). I got lazy and wasn’t leaving the house as much. And I then became shocked at how much the lack of physical exercise impacted my mental wellbeing. Don’t worry (I’m sure you’re not) — there were no major issues, all is fine, but I couldn’t quite believe it. Therefore, now I absolutely make sure I get my backside off the couch, and take a walk for at least an hour a day. And it works a charm.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--h4l0p237--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tjfyp4g5tbsaxfvddqgp.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--h4l0p237--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tjfyp4g5tbsaxfvddqgp.jpg" alt="Man running" width="880" height="587"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And that’s your lot folks. The top 8 things I’ve learnt from this last year. Congratulations if you made it this far (I like to waffle).&lt;/p&gt;

&lt;p&gt;Until the next time…&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Thinking about career goals</title>
      <dc:creator>Richard Chernanko</dc:creator>
      <pubDate>Wed, 12 Feb 2020 18:34:53 +0000</pubDate>
      <link>https://forem.com/rchernanko/thinking-about-career-goals-22pg</link>
      <guid>https://forem.com/rchernanko/thinking-about-career-goals-22pg</guid>
      <description>&lt;p&gt;It’s come to that point in my software development career where it’s time to start thinking about career goals. &lt;/p&gt;

&lt;p&gt;Being honest, this scares the living daylights out of me. It feels like such a long, daunting task - like I’m at the foot of a mountain, knowing that I must begin climbing, but with literally no idea how. But, hey ho, the time spent figuring this out will ultimately prove beneficial and will aid in my decision-making in times to come.&lt;/p&gt;

&lt;p&gt;So, why now?&lt;/p&gt;

&lt;p&gt;I've put in so much effort over the last few years just to get to this point, and quite frankly I don’t want that going to waste. Cut back to 5 years ago, I ceased on an opportunity to change career and move from a business role (for which I had absolutely no passion) into a software development position, one where I had to teach myself to code through self-study. And since then, I’ve moved discipline once, from testing to backend development, I’ve juggled several different tech stacks, and have gained experience working in different industries and different sized companies. The entire process has been a fantastic experience - the effort put in up to this point has totally been worth it. &lt;/p&gt;

&lt;p&gt;But I’m also very aware that software development is perhaps a younger person’s game, and the phrase 'you don’t see many software developers in their 50s' somewhat rings true. Ok, I’m only in my early 30s, I don’t need a walking stick just yet, and actually of course there are older software developers around - but I think it’s now a wise moment to start thinking about what I want to be doing in 10-15 years time. Having also recently started to listen to 'Soft Skills: The Software Developer’s Life Manual’ on Audible, it’s a good time for me to think about which road to take.&lt;/p&gt;

&lt;p&gt;There are several options of course. Do I want to work towards a senior developer role? Should I consider a people / engineering manager type switch? Should I look to go into consulting or start my own business? What about just giving it all up and working on a farm somewhere? Many possible choices lie ahead.&lt;/p&gt;

&lt;p&gt;And so that’s where I am at the moment. And actually, having written this blog post, the daunting prospect of thinking this stuff through has strangely gone away a little. Ooooo, the power of writing! It’s felt really nice to write some thoughts down, it’s been a while since I wrote any form of blog post. Along with the 1000 other things I want to achieve this year, I’ll be making more of an effort to write to this thing more often. Next one will be a technical blog for sure.&lt;/p&gt;

</description>
      <category>career</category>
      <category>development</category>
    </item>
  </channel>
</rss>
