<?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: Martin Zokov</title>
    <description>The latest articles on Forem by Martin Zokov (@martinzokov).</description>
    <link>https://forem.com/martinzokov</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%2F543723%2F36681b64-4ac5-4ab5-b7c1-5e6dfcfe6ca7.jpg</url>
      <title>Forem: Martin Zokov</title>
      <link>https://forem.com/martinzokov</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/martinzokov"/>
    <language>en</language>
    <item>
      <title>The creative nature of Software Engineering</title>
      <dc:creator>Martin Zokov</dc:creator>
      <pubDate>Thu, 16 Jun 2022 21:35:38 +0000</pubDate>
      <link>https://forem.com/martinzokov/the-creative-nature-of-software-engineering-2pn3</link>
      <guid>https://forem.com/martinzokov/the-creative-nature-of-software-engineering-2pn3</guid>
      <description>&lt;h2&gt;
  
  
  Sticks and duct tape
&lt;/h2&gt;

&lt;p&gt;It feels like a very common opinion that software engineering is a very logical and math-based field. To some extent it is - there are certain underlying rules that govern every programming language and how code is executed inside a CPU. But, I’ve never felt like that’s the full picture. If this was the case, building software would be a precise science almost like physics. Instead, we’re faced with bugs everywhere and systems that feel like a house of cards or some complex contraption made of sticks and duct tape… If you were to ask me for a visual representation of what we call software ‘architecture’ compared to how building architects create buildings, this meme would be perfect: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kRWMHx_h--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/862/1%2ADqYaZeipdu8Rx3NLoRO7AA.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kRWMHx_h--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/862/1%2ADqYaZeipdu8Rx3NLoRO7AA.jpeg" alt="https://miro.medium.com/max/862/1*DqYaZeipdu8Rx3NLoRO7AA.jpeg" width="862" height="629"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Software engineering != math
&lt;/h2&gt;

&lt;p&gt;I think many devs don’t realise how much creativity is involved in writing software. I believe that’s the reason things become so messy sometimes. We try to create a digital model that describes a part of the real world. Take for example a concept like a user who has a bank card. We write classes with properties that describe said concepts and then store them in a database. So far so good, but what happens when you start implementing business logic?&lt;/p&gt;

&lt;p&gt;We literally start creating concepts that don’t exist in the real-world domain. Abstractions like Singleton, microservices, an Outbox or something very specific to the context we’re working in. Those are often not things things that exist in the real-world domain of the product but something completely new. We imagine new concepts and abstractions in order to build those products. Going back to the building architect comparison - someone designing a building would know exactly how much weight they can put on a steel beam. Do you know when someone’s &lt;a href="https://www.mjt.me.uk/posts/falsehoods-programmers-believe-about-addresses/"&gt;user input&lt;/a&gt; will break your code? I don’t, so I would likely create some XyzValidator class to be my bodyguard against &lt;a href="https://xkcd.com/327/"&gt;Little Bobby Tables&lt;/a&gt;…&lt;/p&gt;

&lt;p&gt;I think creativity is an inherent part of being human. Every software engineer is faced with many of these questions daily and dealing with a chaotic combination of limited domain knowledge plus vagueness of the JIRA tickets in your backlog requires nothing short of a creative mind. It takes a lot of imagination to navigate and solve unique problems and guard against as many edge case scenarios as possible. I think creativity is a spectrum but in my opinion software engineers tend to be very creative people and some don’t realise that. I’ve actually met more musicians in tech than any other field like law or psychology (there’s probably some sample bias here due to me working in software though). I’m not one of the people who claim software development is an art because at the end of the day the point isn’t self-expression but some meaningful utility for others. &lt;/p&gt;

&lt;h2&gt;
  
  
  Just an opinion
&lt;/h2&gt;

&lt;p&gt;I don’t really have some profound call to action with this. I just wanted to look at software devs from the point of view of creativity and perhaps encourage you to explore this creativity in other ways as well. Wether that’s painting, music or starting a business (yes, I think business is also a creative endeavour). Same goes for anyone who wants to switch to tech from another field! Let me know what you think. Do you agree/disagree with any of this? Do you do any other creative work outside of programming? Feel free to connect with me on &lt;a href="https://twitter.com/m_zokov"&gt;Twitter here&lt;/a&gt;!&lt;/p&gt;

</description>
      <category>software</category>
      <category>programming</category>
      <category>watercooler</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Becoming disillusioned with career in tech as a software engineer</title>
      <dc:creator>Martin Zokov</dc:creator>
      <pubDate>Fri, 03 Jun 2022 01:20:33 +0000</pubDate>
      <link>https://forem.com/martinzokov/becoming-disillusioned-with-career-in-tech-as-a-software-engineer-4pe6</link>
      <guid>https://forem.com/martinzokov/becoming-disillusioned-with-career-in-tech-as-a-software-engineer-4pe6</guid>
      <description>&lt;p&gt;I graduated from my SWE degree around 6 years ago (almost to the date). The uni I went to wasn’t one of those fancy big names you’d recognise but a rather small one in Wales, UK. It had a fairly decent curriculum and gave me the necessary skills to get a job in London. Lately though, I’ve started questioning what it means for me personally to work as a software engineer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The loop&lt;/strong&gt;&lt;br&gt;
For the past 6 years I’ve been working my way through various companies. In each one I’ve felt like something just isn’t enough. I would reach a point where I’m not learning anymore given the constraints of the company I’m in, look for a new job with newer tech and a bigger salary, rinse and repeat. I feel I’ve been stuck in this loop for a while now. I’ve reached a point where I have a good understanding of some of the most complex types of systems. I’ve worked with monoliths, microservices, various different databases and message brokers and have reached a salary which for a non-lead/management role would be somewhere in the top percentiles for the city I live in. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi80v83987fwueanoc84y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi80v83987fwueanoc84y.png" alt="Image description"&gt;&lt;/a&gt;&lt;br&gt;
Perhaps, I’ve been searching for the feeling of meaning through the work I do. There have been times I’ve felt this but as time goes on it feels like I’ve been lying to myself in those moments. ‘If I work for a company that gives credit to small businesses, this directly benefits the economy and has a net positive impact of the wider society I live in’ is what I would tell myself and it would give me this sense of pleasure for a while. This period always ends though and I feel meaningless over and over again. Why is that? &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Figuring things out&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The moments that I’ve felt amazing about what I do were always the ones where I would try to create something new - hook up to an interesting new API, a proof of concept for an idea that sounds fun to me or (more recently) making music. It seems to me that the common denominator between these was always the creative aspect of building something which doesn’t exist. Literally something which has not existed that I’ve been able to create. How amazing is that? This is what I love about software engineering - you create something from nothing! One might argue that that’s exactly what you get even with a regular job, but at the end of the day, unless you’re in a really early stage startup, there will be someone giving you a list of requirements that you just need to implement. Of course there’s nothing wrong with that but for whatever reason, I no longer find it exciting… At one point I was obsessed with the idea of getting into one of the FAANG companies. That desire seems to have faded as well.&lt;/p&gt;

&lt;p&gt;However, I’ve always been drawn to that act of creation which feels like art. I think all humans are intrinsically creative creatures. As Yuval Harari describes in his book Sapiens, imagination is one of the key drivers of humanity’s progress. We can literally conjure an image of what tomorrow or the day after will look like and make this a reality. This is how creativity and art work! Many people talk about potential joblessness as more things in the world are automated by robots and  AI, but I think humans are creative enough to always think of ways to spend their time and make a living out of that...&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's next?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So now, after I’ve realized that I dread this endless while loop of the 9 to 6 grind every day working for someone, I finally have the clarity to say I want to pursue something that is both creative and can generate revenue. I don’t yet have the confidence to build a game-changing product like Amazon or Tesla like all the Silicon Valley dudes aim for. I think there’s an alternative way though - a portfolio of smaller indie products that I’d be happy to work on seems like a good alternative right now. I’m sure it’s not easy to achieve that and I won’t be quitting my job soon. For the time being I plan to try build side projects and grow them. Have you ever had similar thoughts and experience? Or perhaps you’ve already gone through this type of transition? I’d be happy to connect on &lt;a href="https://twitter.com/m_zokov" rel="noopener noreferrer"&gt;Twitter here&lt;/a&gt; and chat about that!&lt;/p&gt;

</description>
      <category>software</category>
      <category>career</category>
      <category>watercooler</category>
    </item>
  </channel>
</rss>
