<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Jure Čuhalev</title>
	<atom:link href="https://www.jurecuhalev.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.jurecuhalev.com/blog</link>
	<description>Improve your people skills, freelancing, and sourdough</description>
	<lastBuildDate>Sat, 02 Mar 2024 14:48:10 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://www.jurecuhalev.com/blog/wp-content/uploads/2021/08/cropped-logo-32x32.png</url>
	<title>Jure Čuhalev</title>
	<link>https://www.jurecuhalev.com/blog</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">4528593</site>	<item>
		<title>Grokking Simplicity &#8211; Book Review</title>
		<link>https://www.jurecuhalev.com/blog/grokking-simplicity-book-review/</link>
		
		<dc:creator><![CDATA[Jure]]></dc:creator>
		<pubDate>Sat, 02 Mar 2024 14:48:08 +0000</pubDate>
				<category><![CDATA[Book reviews]]></category>
		<guid isPermaLink="false">https://www.jurecuhalev.com/blog/?p=2755</guid>

					<description><![CDATA[Grokking Simplicity is an introductory book that will take you to the world of functional programming. It uses basic JavaScript to explain filter(), map(), and reduce() in simple and logical steps. As an experienced engineer, I read the book hoping it would allow me to read F# code better. What I got from it instead [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Grokking Simplicity is an introductory book that will take you to the world of functional programming. It uses basic JavaScript to explain filter(), map(), and reduce() in simple and logical steps.</p>



<p class="wp-block-paragraph">As an experienced engineer, I read the book hoping it would allow me to read F# code better. What I got from it instead was a better intuition on how to write a better and cleaner code. The book teaches how to refactor imperative code into functional code that uses filter/map/reduce.</p>



<p class="wp-block-paragraph">If you&#8217;re new to functional programming and callbacks, this book will give you the tools and ideas to evaluate your code better.</p>



<p class="wp-block-paragraph">If you&#8217;re an experienced developer &#8211; it will give you vocabulary and names to concepts learned through experience. You&#8217;ll be able to better mentor your peers and write better feedback in code reviews.</p>



<p class="wp-block-paragraph">The writing style is very casual &#8211; building on relatable real-world examples. It avoids computer science terminology &#8211; making it approachable no matter the experience.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2755</post-id>	</item>
		<item>
		<title>Learning F# &#8211; Part 1</title>
		<link>https://www.jurecuhalev.com/blog/learning-f-part-1/</link>
		
		<dc:creator><![CDATA[Jure]]></dc:creator>
		<pubDate>Mon, 19 Feb 2024 18:17:40 +0000</pubDate>
				<category><![CDATA[ideas]]></category>
		<guid isPermaLink="false">https://www.jurecuhalev.com/blog/?p=2749</guid>

					<description><![CDATA[About 2 months ago Peter Keše introduced me to the world of F# via a crash course in the language and some of its benefits. It got me interested and here are some of my notes and points of frustration at this point. Good things JetBrains Rider is great IDE and since I already have [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">About 2 months ago Peter Keše introduced me to the world of F# via a crash course in the language and some of its benefits. It got me interested and here are some of my notes and points of frustration at this point.</p>



<p class="wp-block-paragraph"><strong>Good things</strong></p>



<p class="wp-block-paragraph"><a href="https://www.jetbrains.com/rider/">JetBrains Rider</a> is great IDE and since I already have it as part of license I decided to go with it.</p>



<p class="wp-block-paragraph">GitHub CoPilot and CoPilot chat sometime give useful suggestions. They also to tend to hallucinate a lot. Since I&#8217;m mostly in learning phase I&#8217;m turning off auto-suggestions to force myself to think.</p>



<p class="wp-block-paragraph">F# Discord community is amazing. The amount of discussions and how quickly I could get answers is amazing. It&#8217;s also full of people asking very detailed and expert question which makes it poor choice for passive learning at my beginner stage.</p>



<p class="wp-block-paragraph"><strong>Friction points and mixed successes</strong></p>



<p class="wp-block-paragraph">Online teaching of F# isn&#8217;t really beginner friendly. I watched through the F# Community promoted tutorial &#8220;<a href="https://www.youtube.com/playlist?list=PLdo4fOcmZ0oUFghYOp89baYFBTGxUkC7Z&quot;">F# for Beginners</a>&#8221; and it mostly a tech demo and not so much a ramp up to be successful with the language.</p>



<p class="wp-block-paragraph">One of the side-quests I made is that to read <a href="https://www.jurecuhalev.com/blog/book-review-of-domain-modeling-made-functional-by-scott-wlaschin/" data-type="post" data-id="2746">Domain Modeling Made Functional</a> as a way to learn more F#. I did learn more about architecture but I still struggle with writing code. I don&#8217;t mind as it will help me create better Python and TypeScript apps.</p>



<p class="wp-block-paragraph">Overall I&#8217;m having quite a bit of problems with fully understanding difference between collection types and how to deal with strings and characters. I&#8217;m looking for a better resource about it to grok it better.</p>



<p class="wp-block-paragraph">I&#8217;m enjoying <a href="https://exercism.org/tracks/fsharp">Exercism platform</a> to practice writing smaller apps. While lacks good intro to language itself it makes it up with nice problems that come with tests. I really enjoy seeing different community solutions.</p>



<p class="wp-block-paragraph">Standard library is highly confusing. There are <code>concat</code> functions &#8211; <code>System.String.Concat</code> and <code>String.concat</code> . I&#8217;m still looking for a good tutorial on how to navigate things like this.</p>



<p class="wp-block-paragraph"><strong>Unexpected successes</strong></p>



<p class="wp-block-paragraph">Reading Grokking Simplicity as part of learning process helped me gain new vocabulary for concepts and terms that I learning through teamwork before.</p>



<p class="wp-block-paragraph">Learning much more about Microsoft&#8217;s .NET ecosystem and different UI toolkits that exist. I&#8217;m now more aware disconnected different technology bubbles are.</p>



<p class="wp-block-paragraph"><strong>Next steps</strong></p>



<p class="wp-block-paragraph">At the moment I&#8217;m working through Grokking Functional Programming. I think it won&#8217;t help me with writing more F# but should provide useful knowledge for later.</p>



<p class="wp-block-paragraph">Do more Exercism exercises.</p>



<p class="wp-block-paragraph">Read Essential F#.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2749</post-id>	</item>
		<item>
		<title>Book review of Domain Modeling Made Functional by Scott Wlaschin</title>
		<link>https://www.jurecuhalev.com/blog/book-review-of-domain-modeling-made-functional-by-scott-wlaschin/</link>
		
		<dc:creator><![CDATA[Jure]]></dc:creator>
		<pubDate>Wed, 14 Feb 2024 18:56:31 +0000</pubDate>
				<category><![CDATA[Book reviews]]></category>
		<guid isPermaLink="false">https://www.jurecuhalev.com/blog/?p=2746</guid>

					<description><![CDATA[I found the book via author&#8217;s blog F# for Fun and Profit where it pitches the book as a more structured version of the blog. It turns out that it&#8217;s more about general principles of Domain Driven Design than F#. The book does&#160;a great job of teaching Domain-Driven Design&#160;and uses F# as a language for the example [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">I found the book via author&#8217;s blog <a href="https://fsharpforfunandprofit.com/">F# for Fun and Profit</a> where it pitches the book as a more structured version of the blog. It turns out that it&#8217;s more about general principles of Domain Driven Design than F#.</p>



<p class="wp-block-paragraph">The book does&nbsp;<strong>a great job of teaching Domain-Driven Design</strong>&nbsp;and uses F# as a language for the example code. Author starts slow with world building and how it&#8217;s about business needs before diving into any technical code. It keeps circling back to business needs with almost every line of code written and with this approach it nicely presents how developer&#8217;s job is not to write code but to solve business problems.</p>



<p class="wp-block-paragraph">F# makes the whole book more interesting as it forces you stop thinking about your everyday language and makes you also consider some new ideas. At the same time, all the ideas are easily implementable in modern languages like Python or TypeScript.</p>



<p class="wp-block-paragraph">Nitpick about the book I have is that it glosses a bit too much over the code implementation while going into details of specific revisions of F# language.</p>



<p class="wp-block-paragraph">Who should read this book? Developers that want to increase their value to their employer. It would also be great group read for teams that are trying to refactor legacy code. This books goes on my list of must-read recommendations.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2746</post-id>	</item>
		<item>
		<title>Jose Antonio Pio Gil on High-Performing Engineering Teams</title>
		<link>https://www.jurecuhalev.com/blog/jose-antonio-pio-gil/</link>
		
		<dc:creator><![CDATA[Jure]]></dc:creator>
		<pubDate>Tue, 25 Jan 2022 08:24:50 +0000</pubDate>
				<category><![CDATA[Meaningful work]]></category>
		<guid isPermaLink="false">https://www.jurecuhalev.com/blog/?p=2696</guid>

					<description><![CDATA[In Meaningful work interviews I talk to people about their area of work and expertise to better understand what they do and why it matters to them. Jose Antonio Pio Gil is Engineering Manager and Cloud Architect and Marley Spoon. We discuss the role of Engineering Manager and Cloud Architect and his approach to leading [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="has-light-brown-background-color has-background wp-block-paragraph">In Meaningful work interviews I talk to people about their area of work and expertise to better understand what they do and why it matters to them.</p>



<p class="wp-block-paragraph"><a href="https://www.linkedin.com/in/jose-antonio-pio-gil-7137912/">Jose Antonio Pio Gil</a> is Engineering Manager and Cloud Architect and <a href="https://marleyspoon.com/">Marley Spoon</a>. We discuss the role of Engineering Manager and Cloud Architect and his approach to leading high-performing teams.</p>



<p class="wp-block-paragraph"><strong>How do you see your role?</strong></p>



<p class="wp-block-paragraph">I&#8217;m responsible for my team of engineers and the cloud architecture of our system.</p>



<p class="wp-block-paragraph">In terms of architecture, I try to create systems that are beneficial to engineers in the long run. Most engineers try to solve their tickets and forget that they have to maintain the system the following year. I think about maintenance, security, and the reliability of that system in the long run. Not only because it&#8217;s expensive for the company, but also because it burns the engineers down.</p>



<p class="wp-block-paragraph">A large part of my job is helping engineers avoid shooting themselves in the foot. They shouldn&#8217;t create a maintenance burden because they have to finish something today. Business often overlooks this technical debt. It will cost real money to the company when engineers get tired of maintaining tech debt and switch companies. I&#8217;m trying to prevent this from happening in the first place.</p>



<p class="wp-block-paragraph"><strong>What does an Engineering Manager do compared to Senior or Staff Engineers?</strong></p>



<p class="wp-block-paragraph">You get responsibility for a team. You need to build it, take care of it, and account for ups and downs. There&#8217;s also a more bureaucratic aspect of taking care of their contracts and hiring.&nbsp;</p>



<p class="wp-block-paragraph">You&#8217;re responsible for delivering results, taking into account their education and training, and ensuring that your team lives the company&#8217;s culture. Sometimes you also need to mediate and help with conflict resolution between members. You have to see the human side of the work rather than the technological. During many individual conversations, you figure out what each engineer needs for their job. You try to unblock their work.</p>



<p class="wp-block-paragraph">Our Staff Engineers handle the technical side of what we do. As an Engineering Manager, I don&#8217;t implement engineering solutions.</p>



<p class="wp-block-paragraph"><strong>How does the role of Architect compare to what Senior or Staff Engineers do in your company?</strong></p>



<p class="wp-block-paragraph">As an Architect, I take care of the overall architecture and coordinate the work between several teams on our Tribe. There are about 60 engineers across all of our departments. A large part of what I do is negotiate <a href="https://cloud.google.com/appengine/docs/standard/java/designing-microservice-api">contracts between different microservices</a> that different teams maintain. Once agreements are in place, Senior and Staff Engineers implement software systems.</p>



<p class="wp-block-paragraph">We need so much coordination because we&#8217;re moving from a monolith to a microservice infrastructure. We keep redefining ownership of different parts of systems and how we will transition it going forward.</p>



<p class="wp-block-paragraph"><strong>How do you organize your team?</strong></p>



<p class="wp-block-paragraph">I assume <a href="https://herdingcats.typepad.com/my_weblog/2017/09/principle-based-management.html">principles</a>, and I don&#8217;t control what they do. I set clear expectations about what I want them to deliver this quarter and where we&#8217;re going this year.</p>



<p class="wp-block-paragraph">The way I see it is that it&#8217;s a contract between you and me and that terms have to be clearly defined. If not, you won&#8217;t know what to do. One of the things that I need to account for is how I tell my team if they&#8217;re doing a great job or failing. There needs to be clarity.</p>



<p class="wp-block-paragraph">The other thing is that I set clear boundaries on what I don&#8217;t do. I don&#8217;t track time, care how they organize their day, or build a sprint. I care that they finish each sprint. Whatever is in this sprint, they decided how to put it together with the product manager and me. Then during a daily meeting, I want to know the status and how to unblock everyone for the next day.</p>



<p class="wp-block-paragraph">When I do a retrospective, I follow the principle of self-organized teamwork. I keep drilling down to the core reason if tasks are not done. If the excuse is that another person didn&#8217;t finish the work, I want to understand why team members didn&#8217;t support them in completing the work.</p>



<p class="wp-block-paragraph">Self-organization means that I don&#8217;t have to tell them what to do. I focus on specifying the expectations. They have to provide the process. Why? Because all my team members are seniors. If you&#8217;re a senior, I&#8217;m not expecting to tell you how to do your job.</p>



<p class="wp-block-paragraph">If you&#8217;re a junior or a professional in the middle, I will help you do your job and find strategies, build software, etc. But if you&#8217;re a senior, we talk about the output, not the process. I&#8217;m assuming you have enough experience in your career to know how to do it. As an experienced professional, I trust you can deliver on these things.</p>



<p class="wp-block-paragraph"><strong>Why focus on results?</strong></p>



<p class="wp-block-paragraph">If I care about the process, I need to care about coordination. So I give up control and coordination and care about the result. I&#8217;m so focused on results with such a highly skilled team because I work on core infrastructure for our business. I can&#8217;t afford to mix juniors with more experienced developers.</p>



<p class="wp-block-paragraph">Since our downtime means a serious loss of revenue, we have a higher bar for the quality of our solutions. We need to make sure that every incremental change, each deployment is also a final solution. We need to make sure that If we stop working on this subsystem today and leave it as it is, it will continue for two years.</p>



<p class="wp-block-paragraph"><strong>How do you ensure the quality of your team&#8217;s changes to the system?</strong></p>



<p class="wp-block-paragraph">I&#8217;m very clear about my expectations, and I talk with them a lot. For every change, we discuss how it needs to be tested and make sure that it&#8217;s clear what will be the impact on the business. How will our changes impact customer care, accounting, or marketing? We need to be sure that we understand all the aspects of our interventions.&nbsp;</p>



<p class="wp-block-paragraph">If we make a mistake, this might mean that we need to send out 100,000 emails to our customers apologizing for the error. We need to understand the impact of our work and coordinate with other teams to prevent such events. We often work with customer care to ensure they&#8217;re on board with the number of potential support issues they&#8217;ll need to handle.</p>



<p class="wp-block-paragraph">To minimize the issues, I make sure that my engineers have clear boundaries of responsibility. Clear boundaries allow us to discuss the potential impact on other systems when making changes. We&#8217;re not conservative with our changes. We need to make a comprehensive plan of testing the changes as part of the implementation plan.</p>



<p class="wp-block-paragraph"><strong>What&#8217;s your big picture goal?</strong></p>



<p class="wp-block-paragraph">Our software is there to support business. It needs to make more money than it costs to write and maintain it. There&#8217;s no academic beauty to real-world engineering.</p>



<p class="wp-block-paragraph">The only thing that executives care about is if our software makes their lives easier and how much money it makes. My engineer manager role is to explain this to new team members. You are only as valuable if you can produce value for the company. As an engineer, it means that you already are beyond dogmas and own your craftmanship. You are already a senior, and you already had training. Now you need to generate value.</p>



<p class="wp-block-paragraph"><strong>What are some resources that you recommend to people?</strong></p>



<p class="wp-block-paragraph"><a href="https://www.goodreads.com/book/show/33517721-the-culture-code">The Culture Code: The Secrets of Highly Successful Groups</a></p>



<p class="wp-block-paragraph"><a href="https://www.goodreads.com/book/show/40109367-dare-to-lead">Dare to Lead: Brave Work. Tough Conversations. Whole Hearts.</a></p>



<p class="wp-block-paragraph">I suggest that people enroll in <a href="https://www.cnvc.org">Nonviolent Communication training</a> to improve their communication skills.</p>



<div class="wp-block-group has-yellow-background-color has-background"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
<p class="wp-block-paragraph"><em><strong>What I learned from talking with Jose</strong></em></p>



<p class="wp-block-paragraph">The clearer the expectations and commitments everyone has the easier it is to fulfill them.</p>



<p class="wp-block-paragraph">Empathy and just taking time to listen to each other is one of the building blocks.</p>



<p class="wp-block-paragraph">There&#8217;s a whole class of leadership books that I can explore further.</p>
</div></div>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2696</post-id>	</item>
		<item>
		<title>Lessons from Akimbo&#8217;s The Copy Workshop</title>
		<link>https://www.jurecuhalev.com/blog/lessons-from-akimbos-the-copy-workshop/</link>
		
		<dc:creator><![CDATA[Jure]]></dc:creator>
		<pubDate>Mon, 10 Jan 2022 15:31:43 +0000</pubDate>
				<category><![CDATA[ideas]]></category>
		<guid isPermaLink="false">https://www.jurecuhalev.com/blog/?p=2685</guid>

					<description><![CDATA[The Copy Workshop is a 2.5-month online async workshop. The main objective (as I perceived it) is to teach you to write better text for a specific audience. That could be an email newsletter, blog post, email to your boss, or text message to your spouse. I expected it would be about specific writing and [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">The Copy Workshop is a 2.5-month online async workshop. The main objective (as I perceived it) is to teach you to write better text for a specific audience. That could be an email newsletter, blog post, email to your boss, or text message to your spouse.</p>



<p class="wp-block-paragraph">I expected it would be about specific writing and the shape of words. It turns out that words are highly contextual and that before you write, you need to consider your audience. The Copy Workshop is an empathy and marketing seminar that helps you internalize this. There&#8217;s almost no talk about specific language rules.</p>



<h2 class="wp-block-heading"><strong>Three powerful things that I learned</strong></h2>



<p class="wp-block-paragraph"><strong>Consider for who you write and ignore silent judges.</strong>&nbsp;If I know my audience likes a certain text style, I shouldn&#8217;t try to write it for my high school English teacher. I should also ignore other experts in the room if they&#8217;re not my audience.</p>



<p class="wp-block-paragraph"><strong>With every text &#8211; ask who it is for?</strong>&nbsp;While this can be applied to my writing, it also helps me evaluate texts from other people. It provides an often needed perspective.</p>



<p class="wp-block-paragraph"><strong>Copy isn&#8217;t good or bad; it&#8217;s effective or ineffective</strong>. Achieve goals. Move on. Create more, and don&#8217;t worry about the artistic value of your text.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2685</post-id>	</item>
		<item>
		<title>Naomi Spirit explains how to make a low-carbon website</title>
		<link>https://www.jurecuhalev.com/blog/naomi-spirit/</link>
		
		<dc:creator><![CDATA[Jure]]></dc:creator>
		<pubDate>Wed, 15 Dec 2021 09:02:07 +0000</pubDate>
				<category><![CDATA[Meaningful work]]></category>
		<guid isPermaLink="false">https://www.jurecuhalev.com/blog/?p=2681</guid>

					<description><![CDATA[In Meaningful work interviews I talk to people about their area of work and expertise to better understand what they do and why it matters to them. Naomi Spirit is a founder of a small digital agency From This Day. They focus on creating websites with a low environmental impact. We discussed how to develop [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="has-light-brown-background-color has-background wp-block-paragraph">In Meaningful work interviews I talk to people about their area of work and expertise to better understand what they do and why it matters to them.</p>



<p class="wp-block-paragraph"><a href="https://www.linkedin.com/in/naomi-spirit/">Naomi Spirit</a> is a founder of a small digital agency <a href="https://www.fromthisday.digital/">From This Day</a>. They focus on creating websites with a low environmental impact. We discussed how to develop a low carbon website in terms of technology choices and user experience (UX).</p>



<p class="wp-block-paragraph"><strong>How did you get started with the idea of creating an environment-focused digital agency?</strong></p>



<p class="wp-block-paragraph">We were looking to orientate towards meaningful work, to help people doing charity or ethical projects. When we&#8217;re doing work for people doing good things themselves, it&#8217;s almost like you&#8217;re doing the good work yourself. With our support, they&#8217;re making even more impact with their work.</p>



<p class="wp-block-paragraph">Around 2017 when the IPCC Climate Report came out, I just felt so motivated that I had to do something to help the environment. I decided to start a blog to promote ways we could all be greener. So I used my development skills to create&nbsp; <a href="https://www.littlegreenways.co.uk/">Little Green Ways</a>. It has achieved a good reach throughout the years. We even started doing a bit of activism from it, including a petition about microplastics which gained quite a bit of traction and got discussed in a parliament.</p>



<p class="wp-block-paragraph">I reached a point where I was deciding between moving to environmental work full time and not being a web developer anymore. Around that time, I became aware of the impact of our digital lives on the environment and the amount of co2 that we produce. I realised I could try and use my technical skills for good.&nbsp;</p>



<p class="wp-block-paragraph">The Internet alone produces more carbon than the UK and I realised that maybe my specialist niche could help with that. While websites are a small part of the whole Internet, it&#8217;s still an area where I think I can do my bit. I can help educate other people to understand it better, create better websites that pollute less, and develop this as a specialist skill.</p>



<p class="wp-block-paragraph">That&#8217;s how we shifted toward building super low carbon websites. Our new websites create about half a gram of carbon per page load. In contrast, we were looking at anywhere between four and 10 grams of carbon potential before. We&#8217;ve reduced the effect of any new site that we&#8217;re building. We have used our skills to ensure that you can still have a beautiful site even if it is low carbon, that&#8217;s where artistry comes in for example &#8211;&nbsp; <a href="http://www.arranecosavvy.org.uk">www.arranecosavvy.org.uk</a> &#8211; which still looks great even though it’s creating much less carbon. Restriction can actually improve design as you have to think outside the box.</p>



<p class="wp-block-paragraph"><strong>What&#8217;s a low-carb website, and how do you think about the whole process?</strong></p>



<p class="wp-block-paragraph">Websites are usually served from servers that are not particularly environmentally friendly. There&#8217;s also a lot of infrastructure for information to get through to the device requesting that information from the server. Your end device also uses power to display the information. So you need to break this whole process down into many different areas to see where you can improve things.</p>



<p class="wp-block-paragraph">The first thing to do is to make sure you have green hosting. We use <a href="http://my.kualo.com/uk/go/01089">Kualo</a> and find them fantastic. They consider themselves a carbon-positive company. That is based on carbon offsetting. We realize that&#8217;s not the answer for everything, and we still need to reduce what we&#8217;re using too.</p>



<p class="wp-block-paragraph">In terms of the website, it comes down to optimizing it to be as slick as possible. Use as few images as possible, reuse them, and use SVGs where possible. Compress the assets and build the theme light. Try not to use fancy fonts, keeping it plain where possible.</p>



<p class="wp-block-paragraph">Another thing to consider is also your content structure. If you have a good User Experience, there&#8217;s less need to click around the site, which downloads extra assets, and increases server usage. It&#8217;s also worth considering a good archive policy and only keeping content if it will add value in the future to your actual website or SEO.</p>



<p class="wp-block-paragraph">If you design a website with a dark design, it draws less power on the user&#8217;s device. So really, it&#8217;s just about being considerate about everything you&#8217;re doing. Doing things of value and just keeping everything as light as possible.</p>



<p class="wp-block-paragraph"><strong>How can I think about my carbon footprint in the Cloud?</strong></p>



<p class="wp-block-paragraph">As an example, sharing your video on a Zoom call is carbon-heavy. If you&#8217;ve got a zoom call with 100 people sitting there all with video on it is creating a lot of carbon. There has to be a bit of awareness around how we work digitally with each other. I think the same with basically any green stuff &#8211; we can try and do things more sustainably. But the real green thing is to reduce what we&#8217;re doing, switch off a little bit, use less of everything.</p>



<p class="wp-block-paragraph">There&#8217;s a great book by <a href="https://gerrymcgovern.com/world-wide-waste/">Gerry McGovern &#8211; World Wide Waste</a> and <a href="https://www.youtube.com/watch?v=7T_ns3Pmghg">a video talk</a> that details lots of detail about how much carbon our digital lives uses. For example, a Kindle becomes more environmentally friendly than a paper books only after reading around 150 books.</p>



<p class="wp-block-paragraph"><strong>What are some valuable resources and practices that you can recommend?</strong></p>



<p class="wp-block-paragraph"><a href="https://www.websitecarbon.com/">Website Carbon</a> calculates how much carbon your website is using.</p>



<p class="wp-block-paragraph">We are planting trees to offset the carbon usage of our projects and lifestyles. I can recommend <a href="https://treesforlife.org.uk/">Trees for Life</a> and <a href="https://ecologi.com/">Ecologi</a>.</p>



<p class="wp-block-paragraph">Join <a href="https://www.onepercentfortheplanet.org/">1% for the Planet Impact Pledge</a> to support environmental initiatives.</p>



<div class="wp-block-group has-yellow-background-color has-background"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
<p class="wp-block-paragraph"><em><strong>What I learned from talking with Naomi</strong></em></p>



<p class="wp-block-paragraph">There are actual tests and metrics that I can use to evaluate the CO2 usage of web products that I work on.</p>



<p class="wp-block-paragraph">Digital is still using energy, even if I don&#8217;t see it.</p>



<p class="wp-block-paragraph">It&#8217;s a topic that not enough people around me are talking about yet. Something to look more into.</p>
</div></div>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2681</post-id>	</item>
		<item>
		<title>Jernej Virag explains how to become a Senior Developer</title>
		<link>https://www.jurecuhalev.com/blog/jernej-virag/</link>
					<comments>https://www.jurecuhalev.com/blog/jernej-virag/#comments</comments>
		
		<dc:creator><![CDATA[Jure]]></dc:creator>
		<pubDate>Tue, 23 Nov 2021 10:33:08 +0000</pubDate>
				<category><![CDATA[ideas]]></category>
		<guid isPermaLink="false">https://www.jurecuhalev.com/blog/?p=2675</guid>

					<description><![CDATA[In Meaningful work interviews I talk to people about their area of work and expertise to better understand what they do and why it matters to them. Jernej Virag (LinkedIn) is a Technical Lead / Manager at Google. We discussed how mid-level developers can become Senior developers and how to ensure that you can deliver [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="has-light-brown-background-color has-background wp-block-paragraph">In Meaningful work interviews I talk to people about their area of work and expertise to better understand what they do and why it matters to them.</p>



<p class="wp-block-paragraph"><a href="https://virag.si/">Jernej Virag</a> (<a href="https://www.linkedin.com/in/jernejvirag/">LinkedIn</a>) is a Technical Lead / Manager at Google. We discussed how mid-level developers can become Senior developers and how to ensure that you can deliver what you promised as a technical lead.</p>



<p class="wp-block-paragraph"><strong>How do others introduce you?</strong></p>



<p class="wp-block-paragraph">They usually introduce me by explaining how my name is pronounced <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> My current role is what they call a TLM &#8211; Technical Lead / Manager. It’s an informal role that was created because Google tends to have a lack of engineering managers on the engineering track and engineers tend to now also take up a mantle of managing smaller teams.</p>



<p class="wp-block-paragraph">I’m currently one of the technical leads on the Android Google Assistant project. I&#8217;m responsible for the core architecture of the Androids, Phone Assistant, together with about ten other senior engineers and architects. We form a kind of council, do design reviews, work on basic architecture, support our teams and ensure that our product works on your Android phone.</p>



<p class="wp-block-paragraph"><strong>What kind of seniority levels would you see in a team?</strong></p>



<p class="wp-block-paragraph">The usual team size at Google right now is around 10 to 15 people. About three or four are Senior Engineers, one or two Staff or higher. The rest are about half mid-level Engineers and half Junior engineers. The distribution between teams varies, but it is rare to see a team composed of mostly senior engineers.</p>



<p class="wp-block-paragraph"><strong>How would you define a Senior Engineer?</strong></p>



<p class="wp-block-paragraph">At Google, we think about seniority in terms of responsibility. You are an <em>individual contributor</em> when you get a task that you work on yourself. It could be a big task like owning a whole piece of User Interface or a library.</p>



<p class="wp-block-paragraph">The requirement for the Senior Engineer role is to be a go-to person for something. You need to be a person that other engineers ask for advice and to make technical decisions. To be successful at this, you need to think in terms of “Why are we doing this?” and also be able to clearly communicate the reasoning behind decisions to others in your team. You also need the authority and technical knowledge for people to trust you. And that trust is critical &#8211; most senior engineers aren’t managers of the teams they lead, so people won’t listen to them if they don’t have enough trust in the team.</p>



<p class="wp-block-paragraph">You need to prove three things to get to the Senior engineering level. What I just talked about is <em>Leadership</em> &#8211; gaining trust and being able to influence other people to follow your designs.</p>



<p class="wp-block-paragraph">Another aspect is <em>Impact.</em> To demonstrate impact, you need to show that your work is useful and helps the overall company bottom line. It’s a measure of how useful your work is to the company and others. <em>The company needs to understand why it&#8217;s paying you.</em> And a senior engineer needs to demonstrate that their work impacts more than just their team in a measurable way. This has unfortunate side effects of the infamous launch-centric promotion progress process. It&#8217;s easier to measure the impact of newly launched features than justify and explain future usefulness of cleaning technical debt or improving infrastructure.</p>



<p class="wp-block-paragraph">The third one is <em>Technical Complexity</em>, where you need to show that your work is sufficiently complex to be worth the senior engineer title. This means that your work is more than just putting some buttons on the screen or running simple CRON batch jobs.</p>



<p class="wp-block-paragraph">From a practical perspective, to get promoted, your manager needs to give you a chance to work on a project where you’ll be able to clearly demonstrate those three aspects. After that, it’s all on you.</p>



<p class="wp-block-paragraph"><strong>What&#8217;s at the core of being a Senior Engineer?</strong></p>



<p class="wp-block-paragraph">It&#8217;s about always asking one question &#8211; <em>why?</em><strong><em> </em></strong>Why are we doing what we&#8217;re doing? Does this product, technology, approach, business strategy, architecture, library choice, language choice or any other decision make sense?</p>



<p class="wp-block-paragraph">If you keep asking yourself <em>why</em> and writing down the pros and cons, you will usually end up with good decisions, especially if you give it to other people to scrutinize and to contribute their ideas. Then you iterate on feedback with fresh eyes until you’re able to make an informed decision.<br />The main development I see with junior and mid-level engineers is that they&#8217;re <a href="https://en.wikipedia.org/wiki/Cargo_cult_programming#Cargo_cult_software_engineering">cargo culting</a> and not thinking their solution through to understand what they&#8217;re trying to accomplish. They’ll decide on a technology and architecture based on an emotional hunch, “easiness” of implementation and their limited skillset.</p>



<p class="wp-block-paragraph">Growing to senior engineer is where you go from <em>I&#8217;m taking Docker because everyone is using it</em> to <em>I&#8217;m taking Docker because of these upsides which outweigh these downsides</em>. When you can adapt to this mindset, everything else follows.<em>&nbsp;</em></p>



<p class="wp-block-paragraph">They say “a good engineer has to be lazy”. But a good engineer needs to be lazy in the right way. There&#8217;s <em>workplace laziness</em> where you&#8217;re always trying to find ways to minimize the amount of work to reach your goals. If you&#8217;ve saved three months of work, your team will get better results than if you&#8217;d worked for three months. That’s the good kind of laziness.</p>



<p class="wp-block-paragraph">But what&#8217;s not acceptable at a Senior level (or any other level really) is to be <em>intellectually lazy</em> &#8211; where you decided because it <em>emotionally</em> <em>felt</em> like the right thing, not because you&#8217;ve spent time thinking it through.</p>



<p class="wp-block-paragraph">My favorite example of this is when you&#8217;re building a new product, and you know that you will need to internationalize (i18n) at some point. What I see junior engineers do is just ignore the requirement “<em>because we don’t need to think about it yet</em>”. Then one year later, you find out that your libraries don&#8217;t support i18n. Now their team is losing to their competitors because they need to rewrite large parts of your technology stack instead of adding user value.&nbsp;</p>



<p class="wp-block-paragraph">Instead, they should think about how to be prepared for i18n in the planning phase. Ensure that when they pick libraries, they support i18n and architect the backend with this in mind. Add i18n as an item to the checklist when evaluating different solutions. It doesn’t mean they should actually add the i18n support, but they should <em>think</em> about it. Don&#8217;t do “<em>manual</em>” work but still do “<em>thinking</em>” work.&nbsp; And this is a tough mindset to have, and I even see our teams struggling with it. Think first and <em>then</em> build.</p>



<p class="wp-block-paragraph"><strong>How do you build this culture of asking why?</strong></p>



<p class="wp-block-paragraph">Trust, I think, is the only answer here, and that&#8217;s why it&#8217;s so hard. When it comes to trust, business needs to trust engineers, and engineers need to trust business, UX, and everyone else.</p>



<p class="wp-block-paragraph">It&#8217;s really, really hard to assemble good teams. This is where big corporations have the most significant problems. When you get a direction from high-level leadership it propagates down the hierarchy. At every level, people are trusted to drive the initiative forward and document their thinking. The issue is if they have the trust of their peers.</p>



<p class="wp-block-paragraph">One of the significant improvements we made in our teams was to have regular design review sessions with senior engineers across our organizations. Engineers come to show their design and then we talk about it. Depending on the tone of the conversation, you either gain or lose trust. If you’re a senior person and start your feedback with &#8220;Hey, why are you building your feature like this? This is stupid;<em> how could you do something like that?</em>&#8221; &#8211; it will result in people not coming to you and asking for yout opinion. You lose trust and those engineers aren’t going to learn from you. We both know developers that behave like this. Behave like programming is some kind of ego competition where you need to win; behave like they always know better and they need to constantly prove it. There&#8217;s also a different way of discussing: &#8220;Hey, you kind of forgot this, this and this. We used your proposed design already in product X and there we hit this issue, there&#8217;s the post mortem document for a production outage.&#8221;&nbsp;</p>



<p class="wp-block-paragraph">Just by changing the tone and getting your ego out of the way, people are more likely to listen to you and more likely to come to you and say,&#8221; I don&#8217;t know this. This doesn&#8217;t look great to me, but it&#8217;s the best way I know how to implement this. Can you help?&#8221;.</p>



<p class="wp-block-paragraph">The above mindset continues into a culture of <a href="https://sre.google/sre-book/postmortem-culture/">blameless post mortem</a>. If you actually reach that point, you have people who can openly discuss everything they did wrong. The end result isn&#8217;t people inflating their egos by tearing down all the things you did wrong. It&#8217;s a conversation in a different tone: &#8220;These six things we did are the cause of a 16 million user outage. We need to work together on this to fix it across four teams.&#8221;</p>



<p class="wp-block-paragraph">It&#8217;s tough because as soon as teams grow, it&#8217;s so easy to lose the personal connection with the people on the other side. Especially when working remotely, where the other person is just a face (or even worse, an avatar) on the other side of a video call. You stop seeing them as your allies but as people slowing down your path to project launch product launch, causing you to do extra work during weekends.</p>



<p class="wp-block-paragraph"><strong>Can you introduce the practice of asking why from the bottom-up, or does it need to originate in management?</strong></p>



<p class="wp-block-paragraph">I think a good engineer can start this practice as long as they&#8217;re the communication firewall between their team and the outside. A single team manager can trash trust, basically, within weeks, if they do it wrong.</p>



<p class="wp-block-paragraph">I think you can do it in a small team where you can cultivate trust. There needs to be a clear communication firewall where the lead needs to step in and protect the team from outside influences.&nbsp;</p>



<p class="wp-block-paragraph">At this point, it becomes a question of larger organizations&#8217; style. Google is not a top-down organization, so it&#8217;s up to teams to decide how they want to work. In a more top-down organization, your team practices can help propagate these ideas to management.</p>



<p class="wp-block-paragraph"><strong>How can a junior developer become better at the practice of asking why and related skills?</strong></p>



<p class="wp-block-paragraph">Just… ask yourself “Why?” in the context of the tools you are using. Think about why you chose Python? Why did you choose your library? More importantly, read other peoples code and think about what decisions they made. In my field, level up by having Android engineers go and look at Android source. For some reason, that&#8217;s a very scary proposition for most people, although it&#8217;s all there &#8211; a single click away.</p>



<p class="wp-block-paragraph">When you find something broken, you can ask yourself &#8211; &#8220;why is this built like this?&#8221; or you can go to the original code author and ask them, &#8220;why was this built this way?&#8221; Most of the time, you&#8217;ll learn something new. If you&#8217;re lucky, it&#8217;s not going to be just the technical part but also the organizational part. The latter is important as well. You&#8217;ll hear stories of how the organization approaches different risks, past failures, and how they try to mitigate that. You&#8217;ve now learned important things about the culture, and you can prepare your projects better.&nbsp;</p>



<p class="wp-block-paragraph">Sooner or later, you&#8217;re also going to be the person that knows how to build things as well. The more knowledge you have, the more you need to learn how to communicate it. The reality is that most of this needs to be written, so you need to practice and develop this skill. It also tends to be in a format of answering different whys &#8211; why did we choose these things and the other options we considered. Practice writing and explaining your whys. As you get better at it, you start using this skill automatically in your emails. You explain things better, and that leads to increased trust.&nbsp;</p>



<p class="wp-block-paragraph"><strong>What should someone who is currently working in a small company and can see themselves not growing as an engineer anymore, do?&nbsp;</strong></p>



<p class="wp-block-paragraph">The easiest way is to go work in a team where you&#8217;re not the smartest person in the room. It&#8217;s tough to grow if you&#8217;re not challenged. It gets even harder if you&#8217;re on a team that doesn&#8217;t need to change because you&#8217;re wholly dependent on outside sources. The Internet is full of blog posts written by people with two years of experience who never lived with their decisions. The sad part is, to become an excellent senior engineer, you need to live with your decisions for the next few years. It also helps to join a team where you need to live with someone else&#8217;s decisions from five years ago and see all the ways that they can break.</p>



<p class="wp-block-paragraph">You can always write code and deploy it, and it will work for the first year. And then the second year, probably as well. And the third year, your startup will fail because it can&#8217;t change your codebase to follow the market. You need to have these kinds of experiences to grow as an engineer.</p>



<p class="wp-block-paragraph">If your team doesn&#8217;t challenge you to grow, read books, watch lectures, follow blogs. Conferences are starting to be a thing again and they’re full of talks where people explain what they learned. Find people on the web that are smarter than you and can tell you what you&#8217;re doing wrong. Read other peoples code and look at the massive open source library of software as an inspiration.</p>



<p class="wp-block-paragraph"><strong>How do you know that the engineering team you&#8217;re planning to join will challenge you to grow?</strong></p>



<p class="wp-block-paragraph">My tactic is to go and talk with the prospective future team members. Longer lunch works well, or even a virtual meet the team. You can quickly see, within an hour, if new team members are actually interested in growing, if you can have a good technical debate with them, and how they approach working on their project. I&#8217;m also checking if they can answer the &#8220;whys.&#8221; My favorite questions are usually around the things that went wrong and what they learned from that.</p>



<p class="wp-block-paragraph">It&#8217;s also not the end of the world if you join a more junior team. You can use this opportunity to level yourself up in leadership skills and create a framework that will level up the other people on the team. It will be challenging because you don&#8217;t know what you don&#8217;t know and what you&#8217;re doing wrong. You will need to get into a feedback loop of improving yourself and the team. You will spend a lot of time practicing your explanation skills to explain things to other people to make them better. You&#8217;re not going to grow fast as an engineer, but you&#8217;ll still grow.</p>



<p class="wp-block-paragraph"><strong>As a team lead &#8211; what kind of things are you saying no to?</strong></p>



<p class="wp-block-paragraph">One of the significant mindset shifts that I had to do when I came to the team lead position was protecting my team&#8217;s time. At this level, you start saying no to everything that doesn&#8217;t fit your team&#8217;s direction or vision. You don&#8217;t want to take unplanned maintenance of a project you are not responsible for. Your team will not get rewarded, grow, and you&#8217;ll look bad because you won&#8217;t deliver on your core responsibilities.</p>



<p class="wp-block-paragraph">In a startup or a small company, that means not doing projects and features that are not valuable—not doing rewrites into a new library stack or adding features that only a handful of users want. These kinds of things won&#8217;t bring in more money, and they&#8217;ll eat away your time.</p>



<p class="wp-block-paragraph">When I get a request from my team, I ask for a meeting, and we start talking about how it makes sense for my team. What&#8217;s the core part of it that will make sense in terms of metrics, goals, and promotions for my team and a good product.</p>



<p class="wp-block-paragraph">I first need to understand the scope of what the other team wants us to do. This makes it easier for me to go to Leadership and request additional resources and changes to <a href="https://en.wikipedia.org/wiki/OKR">OKRs</a>. I want to make sure we don&#8217;t work on unrelated things.</p>



<p class="wp-block-paragraph"><strong>What are some books or resources that you recommend to people on your team?</strong></p>



<p class="wp-block-paragraph">Well, I need to start with our own books which explain lessons learned on how to approach good software engineering:</p>



<p class="wp-block-paragraph"><a href="https://www.oreilly.com/library/view/software-engineering-at/9781492082781/">Software Engineering at Google &#8211; Lessons Learned</a> &#8211; <em>Describes lessons learned from the software engineering process at Google.</em></p>



<p class="wp-block-paragraph"><a href="https://sre.google/books/">Google SRE Books</a> &#8211;<em> Books describing the processes Googles SRE use to make sure that services run stabily and meet the quality bar.</em></p>



<p class="wp-block-paragraph"><a href="http://aosabook.org/en/index.html">The Architecture of Open Source Applications</a><em> &#8211; A series of books talking about how popular open source software actually works under the hood. Useful for bite-sized reading.</em></p>



<p class="wp-block-paragraph"><a href="https://www.oreilly.com/library/view/the-managers-path/9781491973882/">The Manager&#8217;s Path</a> &#8211; <em>Essential pre-reading for anytone thinking about switching to the Engineering Manager career and what that entails.</em></p>



<p class="wp-block-paragraph"><a href="https://www.amazon.com/Spring-Technical-Writing-Engineers-Scientists/dp/0131498630">Spring Into Technical Writing for Engineers and Scientists</a> &#8211; <em>A great beginners book for technical writing.</em></p>



<p class="wp-block-paragraph"><a href="https://www.oreilly.com/library/view/working-effectively-with/0131177052/">Working Effectively with Legacy Code</a> &#8211; <em>Sorry engineers, legacy code is the default state of things in software and you’ll need to handle it well.</em></p>



<p class="wp-block-paragraph">Great Conference Talks:</p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=3LtQWxhqjqI">Architecture: The Stuff That&#8217;s Hard to Change &#8211; Dylan Beattie</a> &#8211; <em>How to approach and architect good systems.</em></p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=BSaAMQVq01E&amp;">Expecting Professionalism &#8211; Robert C. Martin</a> &#8211; <em>A good summary on how a professional team should approach solving problems. No, it’s not Clean Code related, put away pitchforks please.</em></p>



<p class="wp-block-paragraph"><a href="https://www.infoq.com/presentations/Simple-Made-Easy/">Simple Made Easy</a> &#8211; <em>Creating simple things is impossibly hard and this talk makes it a bit… easier.</em></p>



<div class="wp-block-group has-yellow-background-color has-background"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
<p class="wp-block-paragraph"><em><strong>What I learned from talking with Jernej</strong></em></p>



<p class="wp-block-paragraph">A difference between a developer and a Senior developer is in a mindset. You need to go beyond a narrow role and have empathy for the other side.</p>



<p class="wp-block-paragraph">At a particular stage, you can&#8217;t self-learn anymore. You need to gain experience from real-world projects that are challenging you.</p>



<p class="wp-block-paragraph">There are plenty of very experienced engineerings around me. It&#8217;s up to me to go and ask them for advice and help.</p>
</div></div>
]]></content:encoded>
					
					<wfw:commentRss>https://www.jurecuhalev.com/blog/jernej-virag/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2675</post-id>	</item>
		<item>
		<title>Rok Breulj shares what it&#8217;s like to run a game studio</title>
		<link>https://www.jurecuhalev.com/blog/rok-breulj/</link>
		
		<dc:creator><![CDATA[Jure]]></dc:creator>
		<pubDate>Tue, 05 Oct 2021 07:54:09 +0000</pubDate>
				<category><![CDATA[Meaningful work]]></category>
		<guid isPermaLink="false">https://www.jurecuhalev.com/blog/?p=2653</guid>

					<description><![CDATA[In Meaningful work interviews I talk to people about their area of work and expertise to better understand what they do and why it matters to them. Rok Breulj is the founder of Proxy Studios, a small indie game studio that makes PC games. Their biggest title to date is Warhammer 40,000: Gladius &#8211; Relics [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="has-light-brown-background-color has-background wp-block-paragraph">In Meaningful work interviews I talk to people about their area of work and expertise to better understand what they do and why it matters to them.</p>



<p class="wp-block-paragraph"><a href="https://www.linkedin.com/in/rokb/">Rok Breulj</a> is the founder of <a href="https://www.proxy-studios.com/">Proxy Studios</a>, a small indie game studio that makes PC games. Their biggest title to date is <a href="https://store.steampowered.com/app/489630/Warhammer_40000_Gladius__Relics_of_War/">Warhammer 40,000: Gladius &#8211; Relics of War</a>. He shared how to get into game development, what it takes to get a big IP license such as Warhammer 40k, and the skills required to complete a video game.</p>



<p class="wp-block-paragraph"><strong>How do you describe what you do?</strong></p>



<p class="wp-block-paragraph">Our writer once described me as a <em>quirky coder</em>. That description is not without merit. Besides coding, I manage team, marketing, and PR communications. I talk to players and make both low-level and high-level decisions. I’ve implemented a lot of our UI and UX, our platform-support systems, production pipelines and the multiplayer backend, but lately I’ve been focusing on project management and marketing.</p>



<p class="wp-block-paragraph"><strong>What&#8217;s the size of your team?</strong></p>



<p class="wp-block-paragraph">We are four core team members from Slovenia, Germany, Sweden, and the UK. We work with several external contractors that help us with different aspects of our projects. We&#8217;ve been working remotely from the very beginning of our company.</p>



<p class="wp-block-paragraph"><strong>How do you organize your workday? How do you balance between meetings and work time?</strong></p>



<p class="wp-block-paragraph">It depends on what phase the project is. In the beginning, we&#8217;ll have more meetings around game design and project structure. That can be pretty stressful&#8211;getting everyone on the same page and agreeing on things. But once you get a budget and momentum going, it gets easier. We only have one standing weekly meeting, and the rest we schedule as needed. A review of contractors&#8217; illustrations would prompt such a meeting.</p>



<p class="wp-block-paragraph">I start my day with sports and transition to working at 9-10 am and continue until about 2 pm. These are my most productive hours, and it&#8217;s when I code and do similar focused work. Sometimes we do pair programming as it&#8217;s very beneficial in the early stages of the project when you&#8217;re creating the foundational systems and architecture of the system. Later in the day, I do less intense things like email, checking player feedback, or research.</p>



<p class="wp-block-paragraph"><strong>How did you get started on this path of having a game studio?</strong></p>



<p class="wp-block-paragraph">In high school, I played thousands of hours of Guild Wars, an MMORPG. There I met my current business partner. We ran our guild, and we were in first place for a year.</p>



<p class="wp-block-paragraph">My cofounder was already studying Computer Science and wanted to make computer games. I got interested in making games too, and I started learning C++ in the summer before my first year of Computer Science studies. He helped me review my code and gave me pointers where I could do better. I was also looking at his code, and we continued our collaboration from there.</p>



<p class="wp-block-paragraph">Eventually, we made an independent student game that ultimately failed. We did learn a lot from it and got an honorable mention at <a href="https://igf.com/">IGF</a> (Independent Games Festival).</p>



<p class="wp-block-paragraph">This recognition got us in touch with a UK publisher, and my partner got a job working for them. Later on, the publisher asked us if we wanted to do our own project and if we had any ideas. We got a bit of funding to make <a href="https://store.steampowered.com/app/287580/Pandora_First_Contact/?curator_clanid=32939990">Pandora: First Contact</a>. It was successful for that time and the fact that we were still finishing our studies. Eventually, the same publisher asked us if we wanted to do anything with the Warhammer license, and we pitched a project, got accepted, and created <a href="https://store.steampowered.com/app/489630/Warhammer_40000_Gladius__Relics_of_War/">Warhammer 40,000: Gladius &#8211; Relics of War</a>. This time we were very successful.</p>



<p class="wp-block-paragraph"><strong>What&#8217;s your advice for people that want to get into the business of making games?</strong></p>



<p class="wp-block-paragraph">Make as many projects and little games as you can. Just make anything. Don&#8217;t focus too much on networking. It&#8217;s mostly a waste of time. The publishers are looking for a portfolio and understanding of what you&#8217;ve done. You&#8217;re going to impress them with that and not by talking and being nice to them.</p>



<p class="wp-block-paragraph">These can be little projects with a specific focus, such as trying a unique game design or diligently working on a mod for an existing game. You need to have something playable. Learn a bit of everything in the beginning, especially if you want to start a studio. You&#8217;re going to need to know how the whole game comes together and everything that&#8217;s involved. It takes the skills of coordinating with other people, managing the art and code, and the process of game design. You&#8217;ll get opportunities to impress some of your peers at first. Afterward, you&#8217;ll be able to impress some people with money, which will open up new opportunities for you.</p>



<p class="wp-block-paragraph"><strong>We hear of these big teams of people making games. How does a single person even begin to approach something so complex?</strong></p>



<p class="wp-block-paragraph">There are two possible directions. You can make a fancy version with a small scope. You could take Unreal Engine, which is free, and complete a small fleshed-out project. For example, if you make a combat simulation of some sort, it can just be one level, or it can just be two characters fighting. If you do that well and pay attention to detail, you can impress a lot of people.</p>



<p class="wp-block-paragraph">The other direction could be a more straightforward game, and the graphics could be elementary 3D shapes. Create a whole game and show that you understand everything that&#8217;s involved.</p>



<p class="wp-block-paragraph">If either direction turns out to be a success, you can expand and iterate on it.</p>



<p class="wp-block-paragraph"><strong>How long does it take you to release a new project?</strong></p>



<p class="wp-block-paragraph">Warhammer 40,000: Gladius took three years to make. But then we&#8217;ve also been releasing additional content for it, which has been another three years.</p>



<p class="wp-block-paragraph"><strong>How do you keep focus for three years?</strong></p>



<p class="wp-block-paragraph">It&#8217;s a challenge. I think you have to keep it interesting for yourself. Wearing multiple hats works very well for me. One day I&#8217;m doing game design, deciding which functions or units will be in the game. On another day, I&#8217;m implementing the integration with Steam. I might also be thinking or working on PR and marketing. There&#8217;s always something to do.</p>



<p class="wp-block-paragraph">It&#8217;s also not as bad as it sounds because as there are natural phases to the project. In the beginning, it&#8217;s design and more deep thought oriented. You&#8217;re trying to make good decisions and working on prototypes. Later on, you&#8217;re deep in the production cycle. You&#8217;re integrating assets, managing people, and dealing with all the challenges that crop up.</p>



<p class="wp-block-paragraph">It might be more challenging if you&#8217;re doing it alone. If you have good teammates that are into different aspects of it, you’ll motivate each other.&nbsp;</p>



<p class="wp-block-paragraph"><strong>Anything else that you&#8217;d like for people to understand about making games for a living?</strong></p>



<p class="wp-block-paragraph">If you’re starting your own company, you need to have business and marketing skills. You need to build things that people will want to play. You need to understand what&#8217;s financially viable and is at the same time interesting enough so that you&#8217;ll be able to finish it.</p>



<p class="wp-block-paragraph">Understanding games is also a skill you need to develop. Just like filmmakers watch films and think about them, you should do the same with games. Think about what makes a particular game stand out, what its competitors are, and what else you can learn from it.</p>



<p class="wp-block-paragraph">Our first project only had a multiplayer mode, plus it was a hardcore strategy game. It didn&#8217;t have enough players, so it never took off.</p>



<p class="wp-block-paragraph"><strong>What did you learn about marketing indie games?</strong></p>



<p class="wp-block-paragraph">You should be smart with how you allocate your resources. As an indie you usually can&#8217;t just spend $100,000s on advertising,&nbsp; elaborate promotional videos or gold sponsorships.</p>



<p class="wp-block-paragraph">One thing that you can do is to leverage Steam’s algorithms so that they&#8217;ll promote your game for you. There&#8217;s a concept called “wishlist velocity” that affects how much visibility you get on Steam. So you can take part in events that integrate into Steam, and you can buy placement on their events list. It will make more people aware of your game, and they&#8217;ll wishlist it. Great marketing also has an effect — awesome screenshots and understanding how people navigate the Steam store.</p>



<p class="wp-block-paragraph">The best resource on this topic is <a href="https://newsletter.gamediscover.co/">The GameDiscoverCo newsletter</a>.</p>



<p class="wp-block-paragraph"><strong>Do you have any resources or general recommendations?</strong></p>



<p class="wp-block-paragraph">Books on <a href="https://www.amazon.com/Scott-Meyers/e/B004BBEYYW">Effective C++ by Scott Meyers</a> help with essential guidelines for how to write good C++. It&#8217;s such a big language, and it&#8217;s easy to get it wrong. In general, be a perfectionist when you start to code and fade out the overthinking later.</p>



<p class="wp-block-paragraph"><a href="https://nav.al/">Naval Ravikant</a> is full of endless wisdoms on life&#8211;especially the topics of wealth and happiness. He vocalizes some of the lessons I’ve learned through experience. Have a look at the <a href="https://www.navalmanack.com/">Almanack of Naval Ravikant</a>. My favorite lesson is to relentlessly value my time. Make sure that what I do is in the direction of what I want.</p>



<div class="wp-block-group has-yellow-background-color has-background"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
<p class="wp-block-paragraph"><em><strong>What I learned from talking with Rok</strong></em></p>



<p class="wp-block-paragraph">Game design is business, art, and skill. You need to be open to multidisciplinary work to make it happen in practice.</p>



<p class="wp-block-paragraph">Building in public and releasing your work to the public leads to better and more opportunities.</p>



<p class="wp-block-paragraph">Communication is what makes teams work. You can&#8217;t work alone and expect good results. You also need to study and learn all the time as the world and markets keep changing.</p>
</div></div>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2653</post-id>	</item>
		<item>
		<title>Simon Belak explains what tech job interviewers are really looking for</title>
		<link>https://www.jurecuhalev.com/blog/simon-belak/</link>
		
		<dc:creator><![CDATA[Jure]]></dc:creator>
		<pubDate>Tue, 28 Sep 2021 08:06:47 +0000</pubDate>
				<category><![CDATA[Meaningful work]]></category>
		<guid isPermaLink="false">https://www.jurecuhalev.com/blog/?p=2639</guid>

					<description><![CDATA[In Meaningful work interviews I talk to people about their area of work and expertise to better understand what they do and why it matters to them. How do others introduce you? I think the last description of me was that I am the resident mad scientist. While I was still at Metabase, my time [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="has-light-brown-background-color has-background wp-block-paragraph">In Meaningful work interviews I talk to people about their area of work and expertise to better understand what they do and why it matters to them.</p>



<p class="wp-block-paragraph"><strong>How do others introduce you?</strong></p>



<p class="wp-block-paragraph">I think the last description of me was that I am the resident mad scientist. While I was still at <a href="https://www.metabase.com/">Metabase</a>, my time was split between data science and supporting engineering work. Trying to apply various machine learning approaches or heuristics to the products and experimenting on blue skies projects. My work revolves around using and making sense of data.</p>



<p class="wp-block-paragraph"><strong>What are some misconceptions that people have around data?</strong></p>



<p class="wp-block-paragraph">One of my pet peeves is Big Data and the idea that the sheer quantity of data will ensure that you can get something relevant out of it. This might be the case when you really have a lot of data. To get there, you need a different approach.&nbsp;</p>



<p class="wp-block-paragraph">I often see people starting out and trying to apply some sort of machine learning or similar statistical approaches where they are hoping that throwing enough data at the problem will solve it. Still, they don&#8217;t actually have the quantity of data required.&nbsp;</p>



<p class="wp-block-paragraph">What I try to do is be smarter with both heuristics. Sometimes it&#8217;s better to have less data if that means you can understand it more clearly.</p>



<div class="wp-block-group has-off-white-background-color has-background"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
<p class="wp-block-paragraph"><strong>Example:</strong></p>



<p class="wp-block-paragraph">You want to analyze data, and your company is relatively at the beginning. Because of this, you don&#8217;t really know what kind of customers you have, but you almost certainly have a mix of different types of customers with different needs (customer segments). Those customers will behave differently in terms of how they use your product or how they behave during the purchase journey.&nbsp;</p>



<p class="wp-block-paragraph">If you add your data together and look at it, you will have quite a high level of noise because of those differences between the segments. It makes more sense to focus on one single segment and analyze that 1/5th of the data set. This way, data is much clearer. If you detect a pattern, it&#8217;s more likely to represent something meaningful for you rather than just being noise.</p>
</div></div>



<p class="wp-block-paragraph">When analyzing large sets of data in a growing company, the thing to watch out for is that you don&#8217;t capture the different balances between the segments. As your company grows, the composition of your segments is going to change. This might mislead you to see trends while it&#8217;s just your early adopters being replaced by the early majority. If you instead focus on just one well-defined group, you can better see what&#8217;s going on.</p>



<p class="wp-block-paragraph">Consider where the data comes from and the causes that generate the effects you are observing? Try to tailor the hypothesis about the processes you are observing through the data. This will make it easier to trace the problems through the system instead of focusing on the data layer.</p>



<p class="wp-block-paragraph">This is also a way for people who try to break into data science or analytics to have the edge over their competition. It&#8217;s an advantage to have a good sense of the broader business context, the fundamental business metrics, marketing funnels, basics of UX, product development cycle, and understand the basic needs of users. This allows you to translate your analytics or data science problems into these business contexts. That makes you a better analyst than just being slightly more sophisticated with your statistical approaches.</p>



<p class="wp-block-paragraph"><strong>What are some resources for people that want to learn more about this way of thinking about data?</strong></p>



<p class="wp-block-paragraph">This is my basic analytics knowledge stack:</p>



<ul class="wp-block-list"><li><a href="https://www.goodreads.com/book/show/444653.How_to_Measure_Anything">How to measure anything by Douglas W. Hubbard</a> as a foundational work</li><li><a href="https://leananalyticsbook.com/">A.Croll &amp; B. Yoskovitz: Lean Analytics</a></li><li><a href="http://www.unofficialgoogledatascience.com/2016/10/practical-advice-for-analysis-of-large.html">Practical advice for analysis of large, complex data sets</a></li><li><a href="http://www.forentrepreneurs.com/saas-metrics-2/">SaaS Metrics 2.0 – A Guide to Measuring and Improving what Matters</a></li><li><a href="http://andrewchen.co/how-to-actually-calculate-cac/">How To (Actually) Calculate CAC</a></li><li><a href="https://conversionxl.com/5-things-youre-measuring-incorrectly-digital-analytics">5 Things You’re Measuring Incorrectly With Digital Analytics</a></li><li><a href="https://towardsdatascience.com/5-things-ive-learned-from-building-analytics-stacks-at-j-p-morgan-and-fivetran-b9235ef0710b">5 things I’ve learned from building analytics stacks at J.P. Morgan and Fivetran</a></li><li><a href="https://erikbern.com/2021/07/07/the-data-team-a-short-story.html">Building a data team at a mid-stage startup: a short story</a></li></ul>



<p class="wp-block-paragraph"><strong>What&#8217;s the story behind your offering of mock engineering job interviews to the local developer community?</strong></p>



<p class="wp-block-paragraph">I got the idea from being part of the <a href="https://www.sharpestminds.com/">SharpestMinds</a> community &#8211; a startup that pairs people who want to break into data science with mentors from the industry. They practice doing mock interviews, and I&#8217;ve seen the value of this exercise to gain more experience.</p>



<p class="wp-block-paragraph">I&#8217;ve also noticed that I&#8217;m one of the few people who don&#8217;t see hiring interviews as an absolute burden. I generally try to think about problems through processes, and the hiring process naturally allows for improvements. I&#8217;ve also had a lot of experience being on the other side &#8211; interviewing for different jobs. This allowed me to reflect on my interviewer style and start noticing patterns where candidates are weak.</p>



<p class="wp-block-paragraph">Offering this to the local community seemed like a relatively high leverage way to give back to the community. So far, I&#8217;ve done 22 mock interviews: 18 developers (8 juniors, 7 mid, 3 senior) and 4 for marketing positions.</p>



<p class="wp-block-paragraph"><strong>What patterns did you notice in your mock interviews?</strong></p>



<p class="wp-block-paragraph">The first significant pattern is that <em>people don&#8217;t explain enough the intermediate steps or show how they think</em>. Sometimes it&#8217;s okay, or I assume that you&#8217;re thinking the right thing. But you&#8217;re also not helping me understand how you think and how you solve problems. And this is one of the most important things that I need to understand.&nbsp;</p>



<p class="wp-block-paragraph"><strong>The goal of the interviewer</strong></p>



<p class="wp-block-paragraph">When I&#8217;m interviewing, I&#8217;m trying to answer three questions:</p>



<p class="wp-block-paragraph"><strong>1. </strong>How&#8217;s it going to be to work with this person? I want to understand if I will enjoy working with you. If I don&#8217;t get that sense, I&#8217;m going to reject you as a candidate.</p>



<p class="wp-block-paragraph"><strong>2. </strong>I&#8217;m trying to understand how high is your ceiling? What&#8217;s their potential? Most of the time, I don&#8217;t really care much about where you&#8217;re currently at as long as you fulfill the basic needs of the business. The process of finding someone, especially if we talk about developer jobs, is so long and so costly that it makes sense that you will invest in those people anyway. I&#8217;m trying to understand how far we can take these candidates with the mentoring.</p>



<p class="wp-block-paragraph">3. What was their most significant project or task so far? What is the biggest responsibility I could entrust them with on my team? I find this a much better question to discuss instead of talking about seniority.</p>



<p class="wp-block-paragraph">I notice that seniority tends to be subjective, and you also have these horrible proxies like 7 years of experience. It&#8217;s complete rubbish for what we&#8217;re trying to figure out. For me, it fundamentally boils down to this question &#8211; what would I be comfortable to entrust them with? This also tells me where they would slide into the organization, and it would also allow me to have a rough sketch of their career path. This will enable you to clearly communicate all of this to the candidate.</p>



<p class="wp-block-paragraph">The second bad pattern is that <em>candidates respond to the questions as one-way communication</em>. We want you to engage with us in a discussion. We&#8217;ll sometimes give you intentionally underspecified tasks because we want to see how you act in a situation where you don&#8217;t have all the information at hand. If you try to directly solve it, you&#8217;ve already failed. When I give design tasks, I make sure they lack detail and concreteness, and I want to see where the candidate takes them.</p>



<p class="wp-block-paragraph">There are more structural reasons why you should be asking your interviewer questions. By asking questions, you essentially take charge of the process and demonstrate how you would autonomously solve problems. If you just answer the questions, I don&#8217;t get a sense of organizing your thinking around different sections of the problem. The other reason is that interactive sessions are way more memorable and more fun for the interviewer. It also allows you to shift the interview into a shared problem-solving session and forces the interviewer to commit to trade-offs. Engaging the interviewer in the process will force them to pay attention to what you are doing. You can also show that you understand the connection to business and real-world needs when designing the IT system. We can also then talk about the needs of stakeholders and what kind of outputs you would provide for them. All of this will leave your interviewer with a better feeling of you as a candidate compared to a session where you would directly answer questions.</p>



<p class="wp-block-paragraph"><strong>Where do whiteboard coding challenges fit into all of this?</strong></p>



<p class="wp-block-paragraph">I think whiteboard coding challenges are a poor use of time and inefficient. They suck both for the candidate and the interviewer. When I do the interviewing, I try to sidestep that. What I will do is I will have one or two questions, which are designed questions, but I want the candidate to walk me through their process of thinking and how they approach something.</p>



<div class="wp-block-group has-off-white-background-color has-background"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
<p class="wp-block-paragraph"><strong>Example problem</strong></p>



<p class="wp-block-paragraph">How would you design, at a web scale, a web crawler?</p>
</div></div>



<p class="wp-block-paragraph">This question allows you to ask for further definition of the web scale. How often does it need to crawl, and what kind of data is it crawling? What&#8217;s the business case for this web crawler? It also allows us to discuss what kind of resources we have available and the trade-offs.</p>



<p class="wp-block-paragraph">The same is often true even with algorithmic questions. These tasks are always embedded into a larger business context, and they often don&#8217;t have clean solutions. So you&#8217;ll need to be making trade-offs and thinking about how it&#8217;s going to be plugged into a broader architecture.</p>



<p class="wp-block-paragraph">A similar example is to ask a candidate to design a data processing pipeline: <em>we have real-time data coming in, and we want to do something with it</em>. At this point, you can start by designing some sort of streaming pipeline, or you can start by asking business questions. By asking business questions, you might learn that we don&#8217;t need to access the data often enough, and you might be better off with an hourly batch process. This won&#8217;t demonstrate your knowledge of data processing. Still, it will show an extensive understanding of your role in the company. Also, the interviewer can always ask additional technical questions if they really want to know if you understand how to build a stream processing pipeline.</p>



<p class="wp-block-paragraph">The more senior you become, the more it will be about solving business processes and less about the specific technical implementation.</p>



<p class="wp-block-paragraph"><strong>How would your interview differ between a junior and a more experienced candidate?</strong></p>



<p class="wp-block-paragraph">I would still expect that junior candidates would have at least a rough handle on the trade-offs. Obviously in less detail than someone with more experience. I would raise the bar much more for more senior candidates and expect more detailed reasoning around inflection points. I&#8217;m also trying to see if you understand a broader context of what we&#8217;re doing. So if you&#8217;re interviewing at a product-focused web company, I would expect things beyond your role. What are some fundamental elements of UX, how product management works, what metrics this type of company would look at and why? This allows me to talk to you about things beyond just basic web frameworks and databases.</p>



<p class="wp-block-paragraph">I&#8217;ve noticed in candidates at all seniority levels that people don&#8217;t really apply their knowledge. An example of that would be HTTP protocol which we all think that we know. Still, when candidates start talking about using it in practice, they tend to forget things like the payload limitations of the GET request. They must show that they have a deeper understanding of such details.</p>



<div class="wp-block-group has-off-white-background-color has-background"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
<p class="wp-block-paragraph"><strong>Example question</strong></p>



<p class="wp-block-paragraph">How would you design an URL shortener? What are some trade-offs and constraints that you&#8217;d need to think about and when?</p>
</div></div>



<p class="wp-block-paragraph"><strong>Is there anything else that candidates should understand about interviewers&#8217; questions?</strong></p>



<p class="wp-block-paragraph">Fundamentally a big problem when interviewing is how to disentangle skill and knowledge. An interview is inherently conducted in the medium of knowledge and not on a skill level. But as an interviewer, I want to know more about your skill than your knowledge. So when I ask a question, it is really a proxy to understand your skill.</p>



<p class="wp-block-paragraph">If you answer my question in a school-like form of a definition, it doesn&#8217;t help me understand how you think and solve problems. Instead, try to talk about trade-offs and weave in your previous work experience. It shows how you structure your answers and how you prioritize the issues. Think of an inverted pyramid from journalism where the first sentence is the most important and tells most of the story. Then the rest follows with the least important information at the end.</p>



<p class="wp-block-paragraph">Once you get a complex question, you can also take a few minutes and sketch out roughly the outline of the answer. It will help you keep a better structure, and it&#8217;s less likely that you&#8217;ll forget essential insights. If the interviewer refuses to allow you this, seriously consider if you want to work there. It shows a complete lack of humanness and introspection on how to conduct an interview.</p>



<p class="wp-block-paragraph">Overall I find that job ads are very bad at describing the needs of the company. It&#8217;s better to just apply even if you don&#8217;t match the description. This is especially a problem for women who tend to see all requirements as hard requirements. What&#8217;s more likely is that once you get an interview, the company will try to figure out if you can learn to do the role and be trained fast enough to do the job required.</p>



<p class="wp-block-paragraph"><strong>How can we improve our thinking patterns?</strong></p>



<p class="wp-block-paragraph">When you are a junior, one of the most critical skills almost nobody teaches us is how to ask good questions. <em>What&#8217;s important is to learn how to make this transition between unknown unknowns to known unknowns, where you can start asking questions.</em></p>



<p class="wp-block-paragraph">There is value in going in multiple directions in your learning and getting to know different concepts. For instance, you can always decide to read on the <a href="https://en.wikipedia.org/wiki/Conversion_funnel">Annual Recurring Revenue Funnel</a> framework basics. It&#8217;s a straightforward concept. You can read about it in two hours and then mentally file it for later. Later, when you approach a new problem, you have all these frameworks stored, and you can start thinking about how I would translate this problem to one of the stored frameworks. This allows you to ask better-defined questions, and there&#8217;s probably a community around those frameworks that can help you. There&#8217;s an extra benefit that if you&#8217;re stuck in a job without mentorship, these avenues can provide you with a community that helps you level up. Still, you do need to ask good questions. Otherwise, you&#8217;re not going to get good-quality answers.</p>



<p class="wp-block-paragraph">One thing I&#8217;m exploring at the moment is how to better approach <em>problem decomposition</em>. It&#8217;s turning out to be an immensely high leverage skill because that gives you a framework to ask questions, even when you don&#8217;t have a concrete framework to map the question to. Also if you can write about it well, or if you can teach someone then you probably understand the problem. </p>



<p class="wp-block-paragraph">This is tied closely to thinking in meta terms about how I work, the friction points of my tools, and how I even approach solving a specific problem. If I&#8217;m mentoring on the job, one of the main things we will be talking about in our 1-to-1 is this priceless kind of meta-work aspect. It&#8217;s also a helpful topic if you&#8217;re leading a team and talking to them about meta work. There will be friction points pop-up and things where everyone thinks that they&#8217;re losing time and resources. Thinking about these issues on a meta-level helps the team improve their work.</p>



<p class="wp-block-paragraph"><strong>How would you onboard a new junior engineer into a company?</strong></p>



<p class="wp-block-paragraph">No matter the seniority, I think we just need to make onboarding more efficient. Each new employee should have two mentors. One is your long-term mentor, and you report to them throughout your career in their department. They should care about your skill development and how to become a better developer and human. And then, I would also advise having a second mentor who helps with onboarding in the first few months. They&#8217;ll help transfer the institutional knowledge, and you can be more relaxed with them as you don&#8217;t have to worry about looking dumb in front of them.</p>



<p class="wp-block-paragraph">Have important parts written down. Create a <em>Tao of Engineering</em>, the principles and beliefs we have as an engineering organization, and how we do things. This document is also going to address how to approach trade-offs and what we value. Examples of values could be UX, reducing friction, or having a very stable application. Things will fail at some point, and it&#8217;s easier to look at them from a systems point of view and fix the process instead of assigning blame. When you have clashes with the team, you can blame the Tao for not providing sound guidance and focus on improving the document.</p>



<p class="wp-block-paragraph"><strong>What&#8217;s your advice for companies going remote?</strong></p>



<p class="wp-block-paragraph">My very strongly held belief is that if you think that remote doesn&#8217;t work for you, it indicates a bigger problem. Same if you&#8217;ve seen a massive drop in productivity after moving to remote work. It&#8217;s not an issue of being remote, but rather that some other processes are broken. In-person communication managed to smooth over them enough that they weren&#8217;t as acute as they were when moving fully remote.</p>



<p class="wp-block-paragraph"><strong>What&#8217;s your advice on mentorship?</strong></p>



<p class="wp-block-paragraph">Seek out mentors if you don&#8217;t have one assigned to you. If you are in an organization where you can enact that, make sure you have a practice of mentoring. This should be deliberate practice, also from the mentor&#8217;s perspective, not just something that you do. It must be something that you care about, invest the effort, and make yourself a better mentor.&nbsp;</p>



<p class="wp-block-paragraph">In general, everyone in the organization should have someone they see as their mentor and kind of helps them with the guidance of their work. Mentorship for me means meeting at least once every two weeks, and it&#8217;s not like a quarterly performance review. It has to be a regular activity, almost kind of like a ritual.</p>



<p class="wp-block-paragraph">If your organization is not offering that &#8211; seek out mentors. If you ask 10 people you look up to, one of those will probably say yes. It&#8217;s also a perk that companies can offer if they don&#8217;t have a mentorship program yet. Use some of the funds to bring in external mentors and spread the knowledge around.</p>



<p class="wp-block-paragraph">Something like coffee or free food is worth basically nothing to a developer. Having an established mentorship practice will make a massive difference. As a developer, you&#8217;re going to use this job as a stepping stone to the next one, and you want it to provide you with this kind of value. It&#8217;s going to make you better at your job and also increase your future earnings.</p>



<p class="wp-block-paragraph"><strong>What are some resources that you recommend for leveling up?</strong></p>



<ul class="wp-block-list"><li><a href="http://worrydream.com/">Bret Victor</a></li><li><a href="https://www.goodreads.com/book/show/24113.G_del_Escher_Bach">Gödel, Escher, Bach: an Eternal Golden Braid by Douglas Hofstadter</a></li><li><a href="http://www.vpri.org/writings.php">Alan Kay</a></li><li><a href="https://www.goodreads.com/en/book/show/9561867">S. Fish: How to Write a Sentence: And How to Read One&nbsp;</a></li><li><a href="http://catb.org/~esr/faqs/smart-questions.html">How To Ask Questions The Smart WayHow To Ask Questions The Smart Way</a></li><li><a href="https://codahale.com/">Coda Hale</a></li></ul>



<p class="wp-block-paragraph"><strong>Developer oriented</strong></p>



<ul class="wp-block-list"><li><a href="https://leanpub.com/elementsofclojure">Elements of Clojure</a> &#8211; Despite the title it goes way beyond Clojure, even way beyond programming</li><li><a href="https://www.manning.com/books/grokking-simplicity">Grokking Simplicity</a></li><li><a href="https://mitpress.mit.edu/sites/default/files/sicp/index.html">Companion site to the influential computer-science text Structure and Interpretation of Computer Programs</a></li></ul>



<p class="wp-block-paragraph">Explore things outside of your direct domain of work and think about how you could integrate this knowledge with the rest of what you know.</p>



<div class="wp-block-group has-yellow-background-color has-background"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
<p class="wp-block-paragraph"><em><strong>What I learned from talking with Simon</strong></em></p>



<p class="wp-block-paragraph">Thinking about how we think and how we communicate is valuable on its own. I should have these meta discussions more often.</p>



<p class="wp-block-paragraph">Interviews are just a proxy method to figure out if you&#8217;re a good fit. At more senior levels, they&#8217;re equally also about the organization that you&#8217;re interviewing with.</p>



<p class="wp-block-paragraph">There are great frameworks (e.g., mock interviews, premortems) that can make outcomes less stressful.</p>
</div></div>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2639</post-id>	</item>
		<item>
		<title>Python `icecream` library talk slides</title>
		<link>https://www.jurecuhalev.com/blog/python-icecream-library/</link>
		
		<dc:creator><![CDATA[Jure]]></dc:creator>
		<pubDate>Wed, 22 Sep 2021 11:57:43 +0000</pubDate>
				<category><![CDATA[ideas]]></category>
		<category><![CDATA[Tech]]></category>
		<guid isPermaLink="false">https://www.jurecuhalev.com/blog/?p=2634</guid>

					<description><![CDATA[Python has two built-in functions that can help with debugging. Most known one is print() and the other is pprint() (pretty print). There&#8217;s an external library icecream that you can also use and it will have an even better output. I presented this library at Ljubljana&#8217;s Python Meetup in September 2021.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Python has two built-in functions that can help with debugging. Most known one is <code>print()</code> and the other is <code>pprint()</code> (pretty print).</p>



<p class="wp-block-paragraph">There&#8217;s an <a href="https://github.com/gruns/icecream">external library <code>icecream</code></a> that you can also use and it will have an even better output.</p>



<p class="wp-block-paragraph">I presented this library at <a href="https://www.meetup.com/Ljubljana-Python-Group/events/280520348/">Ljubljana&#8217;s Python Meetup in September 2021</a>.</p>



<figure class="wp-block-embed is-type-rich is-provider-slideshare wp-block-embed-slideshare"><div class="wp-block-embed__wrapper">
<iframe title="Python icecream library" src="https://www.slideshare.net/slideshow/embed_code/key/3CtkjrrH0Xd6q6" width="427" height="356" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen> </iframe> <div style="margin-bottom:5px"> <strong> <a href="https://www.slideshare.net/gandalfar/python-icecream-library" title="Python icecream library" target="_blank">Python icecream library</a> </strong> from <strong><a href="https://www.slideshare.net/gandalfar" target="_blank">Jure Cuhalev</a></strong> </div>
</div></figure>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2634</post-id>	</item>
	</channel>
</rss>
