<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Milan Latinović</title>
    <description>The latest articles on DEV Community by Milan Latinović (@milanlatinovic).</description>
    <link>https://dev.to/milanlatinovic</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F133638%2F02a51f98-6aff-4f2a-9a4e-49b9bc8866ed.jpeg</url>
      <title>DEV Community: Milan Latinović</title>
      <link>https://dev.to/milanlatinovic</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/milanlatinovic"/>
    <language>en</language>
    <item>
      <title>Your Career Doesn't Have to Be a Straight Line (And That's More Than OK)</title>
      <dc:creator>Milan Latinović</dc:creator>
      <pubDate>Tue, 04 Nov 2025 21:31:34 +0000</pubDate>
      <link>https://dev.to/milanlatinovic/your-career-doesnt-have-to-be-a-straight-line-and-thats-more-than-ok-5365</link>
      <guid>https://dev.to/milanlatinovic/your-career-doesnt-have-to-be-a-straight-line-and-thats-more-than-ok-5365</guid>
      <description>&lt;p&gt;&lt;strong&gt;I wrote about my non-linear career journey—from government department head to senior engineer to startup IC—and what I learned from stepping "sideways" twice. &lt;a href="https://milanlatinovic.substack.com/p/your-career-doesnt-have-to-be-a-straight" rel="noopener noreferrer"&gt;Read the full story on my Substack →&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;We're taught careers should be ladders. Always climbing up. More responsibility, bigger titles, higher salaries.&lt;/p&gt;

&lt;p&gt;But what happens when the most exciting opportunity asks you to step sideways? Or even down?&lt;/p&gt;

&lt;p&gt;I've made that choice twice. Both times, people questioned it. The heck, I questioned it. Both times, it was the best decision I could have made.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Moves That Looked Crazy
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Move #1:&lt;/strong&gt; Left my Head of Department role in government to become a senior software engineer at a SaaS company. In a different country. Starting over completely.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Move #2:&lt;/strong&gt; Climbed back up to Lead Integration Engineer, had a clear path to management... then joined a startup as an individual contributor during COVID.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Learned
&lt;/h2&gt;

&lt;p&gt;Those "lateral" moves made me multidimensional. Government taught me structured thinking. Enterprise integrations taught me to solve complex customer challenges. Startup SaaS taught me to think on my feet and prioritize ruthlessly.&lt;/p&gt;

&lt;p&gt;My hot take? Legacy code is often the money-making part of the machinery. People complain about "ugly code," but they're often hired with money earned by that same code. Sometimes the best architecture is the one that works and makes money, even if it's not elegant.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Real Definition of Career Growth
&lt;/h2&gt;

&lt;p&gt;Career growth isn't about always moving up. It's about moving toward what makes you better, more fulfilled, and more capable of doing work that matters.&lt;/p&gt;

&lt;p&gt;My career isn't linear. It's a spiral—sometimes more technical work, sometimes more management, but the average is always going up.&lt;/p&gt;

&lt;p&gt;If you're considering a non-traditional move, ask yourself: Will this let me learn what I'm hungry to learn? Will it give me ownership over work I care about?&lt;/p&gt;

&lt;p&gt;If yes, then it's not a lateral move. It's strategic positioning for the career you actually want.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Want the full story with all the awkward moments, doubts, and specific lessons? &lt;a href="https://milanlatinovic.substack.com/p/your-career-doesnt-have-to-be-a-straight" rel="noopener noreferrer"&gt;Read it on my Substack →&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Have you made a non-traditional career move? Drop your story in the comments 👇&lt;/p&gt;

</description>
      <category>career</category>
      <category>discuss</category>
      <category>softwaredevelopment</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Applying artificial intelligence in software engineering - our status and the future?</title>
      <dc:creator>Milan Latinović</dc:creator>
      <pubDate>Mon, 15 Mar 2021 19:05:24 +0000</pubDate>
      <link>https://dev.to/milanlatinovic/applying-artificial-intelligence-in-software-engineering-our-status-and-the-future-3dnn</link>
      <guid>https://dev.to/milanlatinovic/applying-artificial-intelligence-in-software-engineering-our-status-and-the-future-3dnn</guid>
      <description>&lt;p&gt;I know everyone's time is precious so I’ll cut to the chase:&lt;br&gt;
I am doing a PhD research related to the future of AI-based tools in software engineering. &lt;/p&gt;

&lt;p&gt;But to do this, I need experiences of my fellow software engineers, QAs, POs and managers.&lt;/p&gt;

&lt;p&gt;Could you give 15-min of your attention and fill-in anonymous survey:&lt;br&gt;
&lt;a href="https://www.milanlatinovic.com/survey-artificial-intelligence-tools-in-software-engineering/"&gt;https://www.milanlatinovic.com/survey-artificial-intelligence-tools-in-software-engineering/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Almost all questions in the survey are optional, so you can skip those that do not interest you. Also, there are open-discussion fields where you can write longer comments if you find something that is very interesting for you.&lt;/p&gt;

&lt;p&gt;This is a follow up on research which is already published at HICSS-54 &lt;a href="http://hdl.handle.net/10125/70628"&gt;http://hdl.handle.net/10125/70628&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Thank you very much!&lt;/p&gt;

</description>
      <category>ai</category>
      <category>software</category>
      <category>development</category>
      <category>survey</category>
    </item>
    <item>
      <title>How is code review organized in your company? </title>
      <dc:creator>Milan Latinović</dc:creator>
      <pubDate>Sat, 16 Jan 2021 10:37:54 +0000</pubDate>
      <link>https://dev.to/milanlatinovic/how-is-code-review-organized-in-your-company-1874</link>
      <guid>https://dev.to/milanlatinovic/how-is-code-review-organized-in-your-company-1874</guid>
      <description>&lt;p&gt;&lt;em&gt;Code review&lt;/em&gt; is a process, which has a goal to assure the quality of delivery. In this specific case, the team is reviewing the quality of the code. This is accomplished by one or more developers examining the code which their colleagues wrote.&lt;/p&gt;

&lt;p&gt;How are you doing code review? Do you pick someone who will review your code or is it voluntary? How much time does it take? When do you do it?&lt;/p&gt;

</description>
      <category>code</category>
      <category>review</category>
      <category>programming</category>
      <category>coding</category>
    </item>
    <item>
      <title>Code Review Best Practices – Good, Bad and the Ugly</title>
      <dc:creator>Milan Latinović</dc:creator>
      <pubDate>Fri, 15 Jan 2021 16:17:15 +0000</pubDate>
      <link>https://dev.to/milanlatinovic/code-review-best-practices-good-bad-and-the-ugly-55h3</link>
      <guid>https://dev.to/milanlatinovic/code-review-best-practices-good-bad-and-the-ugly-55h3</guid>
      <description>&lt;p&gt;This article is about the code review best practices. It explains code review from the common-sense perspective. If you do not want to read through the whole article take a look at the table of contents and the summary for a quick overview. &lt;/p&gt;

&lt;h2&gt;What is a code review process?&lt;/h2&gt;

&lt;p&gt;Code review exists to prevent bugs from ending up in your production. But, it is much more than that. It has technical aspects, technologies, expertise, knowledge change, and feelings involved. &lt;/p&gt;

&lt;p&gt;If you are the person being reviewed you want to know what can you do to make your code more understandable. On the other side, if you are a reviewer, you want to make a positive impact on the reviewed code.&lt;/p&gt;

&lt;h3&gt;A code review in its essence&lt;/h3&gt;

&lt;p&gt;It is a process, which has a goal to assure the quality of delivery. In this specific case, the team is reviewing the quality of the code. This is accomplished by one or more developers examining the code which their colleagues wrote.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmilanlatinovic.com%2Fwp-content%2Fuploads%2F2019%2F01%2Fcode-review-process-wtf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmilanlatinovic.com%2Fwp-content%2Fuploads%2F2019%2F01%2Fcode-review-process-wtf.png" alt="code review process wtf"&gt;&lt;/a&gt;Code Quality Measurement - Medium, unknown source&lt;/p&gt;

&lt;p&gt;The quality of code review is hard to measure. However, a good code review should be able to accomplish several items.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Find potential problems/bugs in code and provide ideas on how to handle them.&lt;/li&gt;
&lt;li&gt;Improve the structure of the code if possible (utilize proper software design patterns, refactor and better segmentation, etc.)&lt;/li&gt;
&lt;li&gt;Check if the feature actually works, while trying to find additional test (and edge cases) to check if the code would work in specific situations. &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;What is a good code review?&lt;/h3&gt;

&lt;p&gt;First of all, a good code review is friendly, polite and it aims to help improve code and product or feature this code implements. Secondly, it is a process where knowledge and experiences are shared. It is where developers get dedicated time to communicate, raise concerns, consult, and try to discover problems before they happen.&lt;/p&gt;

&lt;p&gt;A good code review is event where developers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;check code quality and ensure it is up to company standards&lt;/li&gt;
&lt;li&gt;share their experiences and concerns, ask questions about possible impacts of new code changes&lt;/li&gt;
&lt;li&gt;address concerns, compare coding approaches and most importantly share knowledge&lt;/li&gt;
&lt;li&gt;build team, trust, and respect for each other&lt;/li&gt;
&lt;li&gt;learn on their mistakes and get well-intended advice on how to improve &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;More importantly, a good code review is not, or at least it should not be, a place where anyone tries to demonstrate any kind of domination or does any ill-intended actions. It is a consultancy, an unwritten agreement between developers to help each other by double-checking what was done.&lt;/p&gt;



&lt;h2&gt;Common-sense rules and checks of a code review&lt;/h2&gt;

&lt;p&gt;Before starting with a code review, we should consider several &lt;strong&gt;important ugly truths&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;Planning of reviews is important when describing tasks&lt;/h3&gt;

&lt;p&gt;Ticket planning should include the time needed for a proper review.  The team should be aware of something called Definition of Done. This is a list of things that should be completed before the ticket is considered as finished.&lt;/p&gt;

&lt;p&gt;Review tasks should be part of DOD and review time should add to that ticket. A team should calculate the cumulative expected time for this ticket. If 3 developers spend 2 hours that is actually 6 hours for code review, which is 1 man/day of the sprint. &lt;/p&gt;

&lt;h3&gt;Choosing the right reviewer or more of them&lt;/h3&gt;

&lt;p&gt;Original developers should test reviewed code before inviting others to review it. This is important because it will save everyone's time. Developers will always make bugs. The only question is when will the team discover these bugs. &lt;/p&gt;

&lt;h3&gt;Code reviews and the management&lt;/h3&gt;

&lt;p&gt;Managers will not always have an understanding of the time needed to do a proper review. It is up to developers and reviewers to communicate this properly. Other team members will not always have an understanding of long or complicated reviews. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;People make mistakes and that is completely all right.&lt;/strong&gt; Bugs might appear in code, even after a good review.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmilanlatinovic.com%2Fwp-content%2Fuploads%2F2019%2F01%2FFirst-Time-Managers.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmilanlatinovic.com%2Fwp-content%2Fuploads%2F2019%2F01%2FFirst-Time-Managers.jpg" alt="First Time Managers - Code Quality Best Practices"&gt;&lt;/a&gt;Bodith - First Time Managers&lt;/p&gt;

&lt;p&gt;Furthermore, we are aware that different reviews can have different weights. For example, some reviews will be easy, while some of them will be hard. &lt;/p&gt;

&lt;p&gt;Let's try to group these code reviews in categories, so we can establish code review best practices.&lt;/p&gt;

&lt;h2&gt;Are code reviews worth it?&lt;/h2&gt;

&lt;p&gt;Yes they are.&lt;/p&gt;

&lt;p&gt;Really, no doubt about it, they are.&lt;/p&gt;

&lt;p&gt;Yes, code reviews are worth it. I pinky swear on it.&lt;/p&gt;

&lt;p&gt;OK, now when we have established that, let us elaborate on why code reviews are worth it. &lt;/p&gt;

&lt;h3&gt;Downsides of code reviews&lt;/h3&gt;

&lt;p&gt;Code reviews take time, sometimes lots of time. Multiple developers are reading code, spending time and focus on it. Management sometimes does not understand why this investment is important.&lt;/p&gt;

&lt;p&gt;Sometimes, code reviews can block development. A common example is when one feature is not completed because something complex is discovered during a code review. This is blocking other features etc. However, this might indicate that planning was not done in a good way.&lt;/p&gt;

&lt;p&gt;Different people do code reviews with different motivation, spirits and quality. We are not all equal and we should not be. Capable manager or team lead should know how to leverage their team and build code review process to focus on strong sides of team, instead on weak sides.&lt;/p&gt;

&lt;h3&gt;Upsides of code reviews&lt;/h3&gt;

&lt;p&gt;Code reviews are improving quality of code, reducing future technical debt and improving overall quality of software. Furthermore, they are in a way building a team, people communicate, share opinions, concerns, fears, advises and faith. &lt;/p&gt;

&lt;p&gt;Without code reviews there would be less quality, structure and teamwork. Even time savings would not be there, because that time saved on code review is already lost and reserved for fixing issues and sorting our overlooked problems.&lt;/p&gt;

&lt;h3&gt;Code Reviews might take some time&lt;/h3&gt;

&lt;p&gt;Reviews won't happen in a minute, it takes time to do it properly. &lt;strong&gt;The team&lt;/strong&gt; should plan proper time blocks, depending on the complexity of the review.&lt;/p&gt;

&lt;h2&gt;Categories of code reviews &lt;/h2&gt;

&lt;p&gt;Determining a type of review early is extremely important because it provides us with information on how to handle it. Furthermore, we should be able to compare our capabilities to properly examine the provided code. &lt;/p&gt;

&lt;p&gt;Finally, if the review is too challenging we might decide to invite another reviewer or even ask to be additionally educated on technical topics from that review.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmilanlatinovic.com%2Fwp-content%2Fuploads%2F2019%2F01%2Fpyramid-of-doom.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmilanlatinovic.com%2Fwp-content%2Fuploads%2F2019%2F01%2Fpyramid-of-doom.jpg" alt="Code Quality Best Practices, pyramid of doom"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Code review is also called the pull request, I  am using both terminologies in this article, depending on the sources that I am referring to. &lt;/p&gt;&lt;/blockquote&gt;

&lt;h3&gt;Classifying by urgency&lt;/h3&gt;

&lt;p&gt;Ben Balter, a Senior Manager of Product Management at GitHub, wrote a fantastic post about &lt;a href="https://ben.balter.com/2015/12/08/types-of-pull-requests/" rel="nofollow noopener noreferrer"&gt;The six types of pull requests you see on GitHub&lt;/a&gt;. This post classifies pull requests as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Just a heads up&lt;/li&gt;
&lt;li&gt;Sanity check&lt;/li&gt;
&lt;li&gt;Work in progress (WIP)&lt;/li&gt;
&lt;li&gt;Early feedback&lt;/li&gt;
&lt;li&gt;Line-by-line review&lt;/li&gt;
&lt;li&gt;Pull request to pull request&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Furthermore, Ben described how each of these types works and when to use it. For example "just a heads up" would be a simple (one-liner) pull request where the author doesn't need review. &lt;/p&gt;

&lt;p&gt;On the other hand, line-by-line is pull request which is used when product is ready to be shipped.&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt; There is no denying that pairing is a highly visible cost to management: "Two developers at one workstation? No way! We already pay them a fortune!" - Paul Blair,  &lt;br&gt;&lt;strong&gt;The Unnoticed Costs of Code Review by Pull Request &lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;

&lt;h3&gt;Classifying by size and familiarity&lt;/h3&gt;

&lt;p&gt;Firstly, when we examine new pull request, we need check number of changed lines.&lt;/p&gt;

&lt;p&gt; If a pull request has&lt;strong&gt; more than 500 lines &lt;/strong&gt;author of that request should consider&lt;strong&gt; splitting it&lt;/strong&gt; into multiple parts or find a way to get involved in the code review process. &lt;/p&gt;

&lt;p&gt;Furthermore, reviewers should check if tests are executed for big pull requests. &lt;/p&gt;

&lt;p&gt;Otherwise, reviewer might find critical issue in the middle of review, and then everything would go back to start.&lt;/p&gt;

&lt;h3&gt;Classifying by impact&lt;/h3&gt;

&lt;p&gt;There are two ways to consider impact of a pull request:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What positive and fantastic things will happen when we launch this new cool feature? &lt;/li&gt;
&lt;li&gt;What s*it will hit the fan if and when something goes wrong with this cool new feature?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The second one is the important one.&lt;/p&gt;

&lt;p&gt;When measuring impact of pull request, team should think about several things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Could there be any data corruption?&lt;/li&gt;
&lt;li&gt;Will we be able to revert the problems if they happen?&lt;/li&gt;
&lt;li&gt;How many users might be impacted by this?&lt;/li&gt;
&lt;li&gt;What kind of policies might be compromised by this? (GDPR i.e.)&lt;/li&gt;
&lt;li&gt;Is this feature related to SLA (Service Level Agreement)?&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;Who should care about code complexity?&lt;/h3&gt;

&lt;p&gt;But wait, should the developer or reviewer really be concerned about these items during the code review?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Because these things should have been defined when a ticket is created and planned. For example, during the sprint planning phase, or even earlier during sessions between product owner and management. &lt;br&gt;&lt;/p&gt;

&lt;p&gt;However, developers should not close their eyes if they notice any of the mentioned issues. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmilanlatinovic.com%2Fwp-content%2Fuploads%2F2019%2F01%2Fdt060211.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmilanlatinovic.com%2Fwp-content%2Fuploads%2F2019%2F01%2Fdt060211.gif" alt="Overthinking quality with Dilbert"&gt;&lt;/a&gt; On the other hand, don't overthink it. - Dilbert again &lt;/p&gt;

&lt;h2&gt;What are code review best practices?&lt;/h2&gt;

&lt;p&gt;Code Review Best Practices Checklist:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Keep it friendly and polite&lt;/li&gt;
&lt;li&gt;Make test cases for all newly introduced or modified code parts.&lt;/li&gt;
&lt;li&gt;Do syntax errors checker&lt;/li&gt;
&lt;li&gt;Follow up on the latest coding practices &lt;/li&gt;
&lt;li&gt;Pay attention to software design patterns&lt;/li&gt;
&lt;li&gt;Consider legacy code and impacts to legacy features&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Keep it friendly and polite&lt;/h3&gt;

&lt;p&gt;I can not stress this enough. &lt;/p&gt;

&lt;p&gt;It is important to be friendly, professional, and polite during the code review process. The bigger the company, professional communication is more important.&lt;/p&gt;

&lt;p&gt;It does not matter if you are the person who is reviewing or the one being reviewed. Keep an open mind, accept any and all comments with dignity and grace. Always think of what you can improve and what others might benefit off.&lt;/p&gt;

&lt;p&gt;Don't try to be ironic or angry. If some comment is important clearly state it. On the other hand, if something is just your opinion and it does not hold objective improvement state that as well.&lt;/p&gt;

&lt;h3&gt;Test cases&lt;/h3&gt;

&lt;p&gt;Execute any available tests for feature which you are reviewing.&lt;/p&gt;

&lt;p&gt;Think of manual (quick tests) which can be done. For example, if the feature changes the database connection function, simply try to connect to the database. If your feature is changing the BasicController component for API, just try to execute a couple of different API calls&lt;/p&gt;

&lt;p&gt;I was already writing about clean code rules and how to improve the quality of your code. By &lt;a href="https://www.milanlatinovic.com/clean-code-rules/" rel="noopener noreferrer"&gt;improving the quality of your code&lt;/a&gt; in general your skills will get better both as a code reviewer and as the one being reviewed.  &lt;/p&gt;

&lt;h3&gt;Syntax errors&lt;/h3&gt;

&lt;p&gt;Different developers use different coding editors. Some companies have policies about this and some don’t.&lt;/p&gt;

&lt;p&gt;Therefore, it is expected that some syntax errors might crawl up to a pull request.&lt;/p&gt;

&lt;p&gt;What does this means?&lt;/p&gt;

&lt;p&gt;Don’t examine pull requests only trough pull request interface (i.e. bitbucket or gitlabs). You can also check out these branches and examine them in your trusted editor.&lt;/p&gt;

&lt;h3&gt;Coding practices&lt;/h3&gt;

&lt;p&gt;Most of the companies have some document with coding standards or best practices.&lt;/p&gt;

&lt;p&gt;If such document exist, pull request should include comparing the latest code with these best practices.&lt;/p&gt;

&lt;p&gt;If there is no such document, here are some quick things to check:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;consistency in variable names&lt;/li&gt;
&lt;li&gt;proper comment blocks on new functions&lt;/li&gt;
&lt;li&gt;separation of concerns&lt;/li&gt;
&lt;li&gt;code should not contain any sensitive data (i.e. access tokens)&lt;/li&gt;
&lt;li&gt;your code should not contain any demo data (except inside of the tests, or where this is really needed)&lt;/li&gt;
&lt;li&gt;code should be clean&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Software design patterns&lt;/h3&gt;

&lt;p&gt;Depending on pull request and type of the change some software design patterns can be applied.&lt;/p&gt;

&lt;p&gt;Also, if some design patterns are already inside code architecture they should be applied.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For example, adding a new function in all inherited classes of an abstract class would not make sense. &lt;/strong&gt;Furthermore, having a strategy pattern in place and not creating a new strategy for some configuration would also be a wrong usage of that design pattern.&lt;/p&gt;

&lt;h3&gt;Legacy aspects&lt;/h3&gt;

&lt;p&gt;Your software will always have legacy software.&lt;br&gt;Meaning, your pull requests will affect this software somehow.&lt;br&gt;Therefore, you need to handle this. 🙂&lt;/p&gt;

&lt;p&gt;I was already writing about clean code rules and how to improve the quality of your code. By &lt;a href="https://www.milanlatinovic.com/clean-code-rules/" rel="noopener noreferrer"&gt;improving the quality of your code&lt;/a&gt; in general your skills will get better both as a code reviewer and as the one being reviewed.&lt;/p&gt;

&lt;h2&gt;Summary&lt;/h2&gt;

&lt;p&gt;The code review is an extremely important part of the whole software development process. Therefore, the whole team must make enough effort to properly plan the time needed for this.&lt;/p&gt;

&lt;p&gt;Pull requests differ from case to case, but teams should always be aware of impacts and potential issues.&lt;/p&gt;

&lt;p&gt;Mistakes will happen to those who work. Code review is essentially risk management, therefore it should be treated as such. &lt;/p&gt;

&lt;p&gt;A good code review will improve the overall quality of the code, but it will also reduce the risk related to a new feature.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>code</category>
      <category>review</category>
      <category>development</category>
    </item>
    <item>
      <title>Automation and Artificial Intelligence in Software Engineering: Experiences, Challenges, and Opportunities</title>
      <dc:creator>Milan Latinović</dc:creator>
      <pubDate>Sun, 10 Jan 2021 10:11:03 +0000</pubDate>
      <link>https://dev.to/milanlatinovic/automation-and-artificial-intelligence-in-software-engineering-experiences-challenges-and-opportunities-d7m</link>
      <guid>https://dev.to/milanlatinovic/automation-and-artificial-intelligence-in-software-engineering-experiences-challenges-and-opportunities-d7m</guid>
      <description>&lt;p&gt;This article is about Automation and Artificial Intelligence in Software Engineering: Experiences, Challenges, and Opportunities. It represents a paper published at a highly ranked HAWAII INTERNATIONAL CONFERENCE ON SYSTEM SCIENCES (&lt;a href="https://hicss.hawaii.edu/" rel="nofollow"&gt;HICSS&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;This paper was written with great help and supervision of &lt;a href="https://www.staff.tugraz.at/viktoria.pammer-schindler/"&gt;prof. Viktoria Pammer-Schindler.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Given article and paper might be relevant for you as well.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Firstly, you might be the owner of a software development company thinking about improving your business processes. &lt;/li&gt;
&lt;li&gt;Secondly, you might a researcher engaging in these topics and searching for relevant literature and references. &lt;/li&gt;
&lt;li&gt;Maybe you are an investor thinking about engaging in this disruptive domain. &lt;/li&gt;
&lt;li&gt;Finally, you might be a software developer curious about how your peers are doing development, what challenges, issues, and opportunities they have.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If any of these cases apply to you, you should read this article together with the paper which is presented here.&lt;/p&gt;

&lt;h2&gt;Quick overview of Automation and Artificial Intelligence in Software Engineering&lt;/h2&gt;

&lt;p&gt;If you don't have time to read through the whole article and paper, I made an up-to-point video presentation that gives you all the needed insights. Afterward, if you want more details &lt;a href="https://scholarspace.manoa.hawaii.edu/handle/10125/70628" rel="nofollow"&gt;you can read the official paper here.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=w5rbi0gZKg0"&gt;https://www.youtube.com/watch?v=w5rbi0gZKg0&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;Transformative influence of the Automation and Artificial Intelligence&lt;/h2&gt;

&lt;h2&gt;What Is our research about?&lt;/h2&gt;

&lt;p&gt;Automation and artificial intelligence have a transformative influence on many sectors.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Firstly, increased automation and deployment of data analytics and Artificial Intelligence has been coined Industry 4.0 or smart manufacturing&lt;/li&gt;
&lt;li&gt;Secondly, in medicine - machine-learning computer-aided detection and automated diagnosis in radiology&lt;/li&gt;
&lt;li&gt;Finally, auto-encoder neural networks can help financial auditors identify unusual journal entries in an audit context&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We understand automation as a set of computational tools executing domain activities, based initially on conditional logic.&lt;/p&gt;

&lt;p&gt;For Artificial Intelligence, we understand a broad range of technologies and technological capabilities based on processing natural language, audio, images, and video; formal representations of knowledge and automated reasoning; and machine learning.&lt;/p&gt;

&lt;h3&gt;What are the important questions?&lt;/h3&gt;

&lt;p&gt;So, from previous examples, we can clearly recognize that Automation and Artificial Intelligence have a transformative influence on many sectors. &lt;/p&gt;

&lt;p&gt;We recognize Software engineers as the actors who engineer this transformation.&lt;/p&gt;

&lt;p&gt;However, there is little knowledge of how automation and Artificial Intelligence impact them, meaning software engineering practice. We approached this problem with two research questions, presented on this slide.&lt;/p&gt;

&lt;p&gt;First one, aiming to understand the current practice. So, we are asking: &lt;/p&gt;

&lt;blockquote class="wp-block-quote"&gt;&lt;p&gt;What are approaches for automation and Artificial Intelligence enabled tools and practices adopted by interviewed software engineers?&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;The second one, aiming to understand the attitudes, hopes, and concerns of software engineers.&lt;br&gt;Here, our question is:&lt;/p&gt;

&lt;blockquote class="wp-block-quote"&gt;&lt;p&gt;What are approaches for automation and Artificial Intelligence enabled tools and practices adopted by interviewed software engineers? The second one, aiming to understand the attitudes, hopes, and concerns of software engineers.&lt;/p&gt;&lt;/blockquote&gt;

&lt;h3&gt;What kind of research we did?&lt;/h3&gt;

&lt;p&gt;In the early stage of our research, we were thinking about which approach to take. For finding answers to our questions we decided to conduct qualitative research, based on semi-structured interviews.&lt;/p&gt;

&lt;p&gt;We wanted an opportunity to listen and take notes first and then discuss.&lt;/p&gt;

&lt;p&gt;We did this by means of screen share, typing quasi-verbatim notes and sharing them with participants, so we can discuss, validate and agree on those. &lt;/p&gt;

&lt;p&gt;Our questions started from common questions to get to know our participants better:&lt;/p&gt;

&lt;p&gt;What is their job? What their company does?&lt;/p&gt;

&lt;p&gt;Then, we wanted to know more about their environment. What did they automate in software engineering and in their work?&lt;/p&gt;

&lt;p&gt;We were curious if they have automated something them selves. &lt;/p&gt;

&lt;p&gt;We also wanted to know who initiated automation in their company.&lt;/p&gt;

&lt;p&gt;Finally, we asked if and how is Artificial Intelligence fitting in their activities.&lt;/p&gt;

&lt;p&gt;Once we gathered data, next step was analysis.&lt;/p&gt;

&lt;p&gt;Here, we did inductive and reflexive thematic analysis.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Inductive means: Reading through notes. Identifying a priori unknown patterns in the described experiences of our interviewees&lt;/li&gt;
&lt;li&gt;Reflexive means: Describing and summarizing the experiences of interviewees. We developed themes during the data analysis. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These themes, compared with the literature overview provided answers to our questions, but also triggered additional discussion topics.&lt;/p&gt;

&lt;h3&gt;Who we interviewed?&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--71MWGG2n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.milanlatinovic.com/wp-content/uploads/2021/01/image.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--71MWGG2n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.milanlatinovic.com/wp-content/uploads/2021/01/image.png" alt="List of software practitioners we interviewed - Automation and Artificial Intelligence in Software Engineering" class="wp-image-15425"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Related to interview participants' profiles. We interviewed experienced software practitioners across frontend, backend development, DevOps, R&amp;amp;D, and integration.&lt;/p&gt;

&lt;p&gt;Diversity in gender and age,  sector (industry or academia), industry domain (Software as a Service - SaaS, logistics, networking, software security, semiconductors, automotive, industrial automation, or computer hardware), professional position, and technology stack (ongoing experience with various technologies). &lt;/p&gt;

&lt;p&gt;We recruited participants online through the Linked-In network and in-person within corporate environments and conferences. &lt;/p&gt;

&lt;p&gt;Some participants recommended others for interview as well.&lt;/p&gt;

&lt;h2&gt;What were our results? What did we find out about Automation and Artificial Intelligence in Software Engineering?&lt;/h2&gt;

&lt;h3&gt;commonly automated activities, tools, and challenges in software engineering&lt;/h3&gt;

&lt;p&gt;One of the first things we recognized, even during interviews, was enthusiasm toward automation.&lt;/p&gt;

&lt;p&gt;Software practitioners have common activities they need to automate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Environment configuration - for example, new developer setting up a machine (one script vs days of configuring and installation tutorials)&lt;/li&gt;
&lt;li&gt;Static code checking - recognizing is code syntax is good, dead code, obvious bugs, bad coding practices, also known as a code smell. These things are closely related to &lt;a href="https://www.milanlatinovic.com/code-review-good-bad-ugly/"&gt;code review best practices&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Especially, testing - running tests automatically when a new code is sent to the server.&lt;/li&gt;
&lt;li&gt;Literature also states that Artificial Intelligence is helpful for &lt;a href="https://www.milanlatinovic.com/writing-technical-specifications-estimates/"&gt;writing technical specifications and estimates&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Developers use different tools and approaches to accomplish same automation goals.&lt;/p&gt;

&lt;h2&gt;Process bridging with micro-automation&lt;/h2&gt;

&lt;p&gt;Automation and Artificial Intelligence in Software Engineering in software development might appear in different processes.&lt;/p&gt;

&lt;p&gt;Each process is set of steps that initially has to be done manually.&lt;/p&gt;

&lt;p&gt;When developers have large number of manual steps, mistakes can happen and some steps can be forgotten.&lt;/p&gt;

&lt;p&gt;Also, if steps are happening between different environments and systems, this can be time consuming.&lt;/p&gt;

&lt;p&gt;This is why developers are writing micro automations to make their work easier.&lt;/p&gt;

&lt;p&gt;Micro automation is usually implemented in form of custom scripts, automatic configurations, development helpers, testing optimizations, and so on.&lt;/p&gt;

&lt;p&gt;In the given example developers want to make a backup on a specific server, and as a result, he needs backup hash.&lt;/p&gt;

&lt;p&gt;He triggers script on server, which has automated backup procedure.&lt;/p&gt;

&lt;p&gt;This procedure is connected with team chat where backup hash is delivered.&lt;/p&gt;

&lt;p&gt;There are multiple benefits from this automation.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The developer does not have to do the backup manually.&lt;/li&gt;
&lt;li&gt;Hash is saved in team chat where everyone can see and use it&lt;/li&gt;
&lt;li&gt;Everyone is aware that backup activity is happening and there is a clear history of backup actions.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Automation of software engineering as a bottom-up driven side product of operative activity&lt;/h3&gt;

&lt;p&gt;One of our most interesting findings is that the automation of software engineering is bottom-up driven.&lt;/p&gt;

&lt;p&gt;Meaning, our participants reported that top-level management was not the one who initiated automation.&lt;/p&gt;

&lt;p&gt;Also, automation is usually side affect or bonus activity, but rarely the goal itself.&lt;/p&gt;

&lt;p&gt;One of our candidates compared automation with defensive player in football.&lt;/p&gt;

&lt;p&gt;Meaning, everyone knows that automation is important but there is no immediate cache returns out of it.&lt;/p&gt;

&lt;p&gt;Most of our participants reported automation as quick solutions tailored to a specific context and need.&lt;/p&gt;

&lt;h3&gt;Automation and effects on work efficiency&lt;/h3&gt;

&lt;p&gt;Our participants also reported different effect of automation on their work efficiency.&lt;/p&gt;

&lt;p&gt;What we need to understand here is that automation is usually a black box for person who uses it.&lt;/p&gt;

&lt;p&gt;Automation does something for software developers but they want to be informed about it.&lt;/p&gt;

&lt;p&gt;Still, not all automated tools are good at this.&lt;/p&gt;

&lt;p&gt;We had reports of automated tools which were sending large number of notifications.&lt;/p&gt;

&lt;p&gt;This required software developers to constantly get distracted, check or double-check some things they already know.&lt;/p&gt;

&lt;p&gt;Sometimes, automation would send lots of data that is not useful or, at least, not structured in a useful way.&lt;/p&gt;

&lt;p&gt;Our biggest takeaway from this is this.&lt;/p&gt;

&lt;p&gt;Automation should communicate with software developers, but by providing good data with good context, if needed and when needed.&lt;/p&gt;

&lt;h3&gt;Unclear impact of Artificial Intelligence on the future of SW engineering practice&lt;/h3&gt;

&lt;p&gt;When it comes to Artificial Intelligence and impact on software engineering, results are unclear.&lt;/p&gt;

&lt;p&gt;Our interview participants have not reported AI-enabled tools that are substantially changing their work.&lt;/p&gt;

&lt;p&gt;When we asked them how they feel about AI as a helping tool or as a teammate, their responses were mixed.&lt;/p&gt;

&lt;p&gt;Most of them were enthusiastic about having AI as a helping tool.&lt;/p&gt;

&lt;p&gt;However, they did not see AI as an independent, final decision maker.&lt;/p&gt;

&lt;p&gt;Let us make an example for this.&lt;/p&gt;

&lt;p&gt;Having a smart coding assistant which recognizes issues and offers solution and advice is AI-helping tool.&lt;/p&gt;

&lt;p&gt;Our participants would like to have tool like this.&lt;/p&gt;

&lt;p&gt;AI-tool can also implement solution and deploy it to server, without consulting developer.&lt;/p&gt;

&lt;p&gt;This is something our participants were not so enthusiastic about.&lt;/p&gt;

&lt;h2&gt;What do we make of these findings?&lt;/h2&gt;

&lt;h3&gt;Bottom-up and Micro-Automation&lt;/h3&gt;

&lt;p&gt;Our research provided several interesting results. In the paper, we provided our interpretation of these results, also taking into consideration the existing literature review. This resulted in different discussion topics. &lt;/p&gt;

&lt;p&gt;For example: How are bottom-up automation and micro-automation linked? &lt;/p&gt;

&lt;p&gt;Is it possible that bottom up nature of automation leads to micro-automation.&lt;/p&gt;

&lt;p&gt;This would make sense because is it not likely that a bottom-up perspective can result in a scalable solution that is implemented across a complete organization.&lt;/p&gt;

&lt;p&gt;It simply might not have complete perception, motivation or required resources to do so.&lt;/p&gt;

&lt;p&gt;On the other hand, we ask our selves what is causing automation to have this bottom-up nature?&lt;/p&gt;

&lt;p&gt;Is the because of the nature of software engineering? Maybe because software engineers know how to automate they simply do it, but only within their area of work, without scaling it.&lt;/p&gt;

&lt;p&gt;Finally, how to evaluate the socio-technical effect of automation? How to calculate the cost-benefit of automation?&lt;/p&gt;

&lt;p&gt;We find these very interesting discussions with both theoretical and practical implications.&lt;/p&gt;

&lt;h3&gt;Future of AI-driven applications&lt;/h3&gt;

&lt;p&gt;Our interviewees were enthusiastic about AI-enhanced tools but skeptical about “AI being in a driver’s seat” and making decisions. Also, in literature research, we recognized different AI-driven applications.&lt;/p&gt;

&lt;p&gt;For example, code error prediction, error localization to help developers write code, and assistance in effort estimation, to help project managers define efforts based on different algorithms.&lt;/p&gt;

&lt;p&gt;We asked our participants what they think about these applications.&lt;/p&gt;

&lt;p&gt;Answers were different, but the constant was enthusiasm toward AI-enhanced tools but skepticism toward AI-driven tools. This is something that requires careful interpretation.&lt;/p&gt;

&lt;p&gt;We must take into considerations that &lt;strong&gt;our participants were NOT AI experts.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Still, maybe software engineers do not seriously engage in thinking about how is their profession affected by Artificial Intelligence?&lt;/p&gt;

&lt;p&gt;On the other hand, maybe software engineering is moving toward the &lt;strong&gt;“skill diversity phase”.&lt;/strong&gt; This would divide software developers between users and architects. Users would do programming supported by AI, while architects would create AI-enhanced and AI-driven tools.&lt;/p&gt;

&lt;p&gt;These are all very interesting topics, where additional research should be conducted. &lt;/p&gt;

</description>
      <category>automation</category>
      <category>ai</category>
      <category>software</category>
      <category>processes</category>
    </item>
    <item>
      <title>Kick-starting Your New Developer Job with these Essential Tips</title>
      <dc:creator>Milan Latinović</dc:creator>
      <pubDate>Sat, 09 Jan 2021 23:54:43 +0000</pubDate>
      <link>https://dev.to/milanlatinovic/kick-starting-your-new-developer-job-with-these-essential-tips-9im</link>
      <guid>https://dev.to/milanlatinovic/kick-starting-your-new-developer-job-with-these-essential-tips-9im</guid>
      <description>&lt;p&gt;This article is about kick-starting your new developer job based on my experience gathered in multiple companies and projects. Read it, prepare well and you will do great!&lt;/p&gt;

&lt;h2&gt;Introduction&lt;/h2&gt;

&lt;p&gt;Kick-starting your new developer job is very important. Different teams will have different expectations, but essentially you will be expected to find your place in the company. Are there any essential tips for doing this?&lt;/p&gt;

&lt;p&gt;I am sharing my experiences based on several different companies and projects I participated in so far. In each of these environments, I had to start from zero, without any significant knowledge of a project or team. &lt;/p&gt;

&lt;p&gt;There are experiences from projects and companies such as &lt;a href="https://timetac.com" rel="noreferrer noopener nofollow"&gt;TimeTac&lt;/a&gt;, &lt;a href="https://codeable.io" rel="noreferrer noopener nofollow"&gt;Codeable&lt;/a&gt;, &lt;a href="https://apilayer.com" rel="noreferrer noopener nofollow"&gt;ApiLayer&lt;/a&gt;, and &lt;a href="https://eversign.com" rel="noreferrer noopener nofollow"&gt;Eversign&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;By following these important guidelines, I was successful every time. But more importantly, &lt;strong&gt;focusing on these things &lt;/strong&gt;made me feel &lt;strong&gt;professional&lt;/strong&gt;, &lt;strong&gt;pushing forward&lt;/strong&gt;, &lt;strong&gt;motivated&lt;/strong&gt; and I enjoyed working on each of these projects.&lt;/p&gt;

&lt;p&gt;Read them through, and share them if you find them helpful. Good luck in your new job!&lt;/p&gt;

&lt;h2&gt;Steps to kick-start your new developer job&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Understand how your company work, how does it earn money, and why are you hired&lt;/li&gt;
&lt;li&gt;Learn about the company product&lt;/li&gt;
&lt;li&gt;Get used to company language and vocabulary&lt;/li&gt;
&lt;li&gt;Ask about company processes and understand them&lt;/li&gt;
&lt;li&gt;Set up your development environment, try being independent&lt;/li&gt;
&lt;li&gt;Set yourself clear goals with (MIT) Most Important Task on a daily basis&lt;/li&gt;
&lt;li&gt;Keep your code changes "diff size" small&lt;/li&gt;
&lt;li&gt;Aim to be a positive zero at the beginning, reduce risks&lt;/li&gt;
&lt;li&gt;Brush up on your social skills, understand company rituals and habits&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;Companies one on one, or how stuff works&lt;/h2&gt;

&lt;h3&gt;Understand why you are hired&lt;/h3&gt;

&lt;p&gt;We are hired by a company or as a consultant for some project. Companies earn money by selling a product or service, or software as a service (SaaS) for that matter. &lt;/p&gt;

&lt;p&gt;To make this happen the company hires different people to contribute to their teams. Everyone can contribute in their own way, but there is always some process to describe how things are done. Tasks are usually done in some specific way.&lt;/p&gt;

&lt;h3&gt;Understand company playground&lt;/h3&gt;

&lt;p&gt;Then there is the technical environment, which is a playground company set for a team. This environment can really be anything technical. Tools used for coding, debugging procedures, how to test, how to deploy code, who to ask, which tool to use for communication, etc.&lt;/p&gt;

&lt;p&gt;Finally, there are open issues and challenges, things someone has to do. That is most likely why the company hired you.&lt;/p&gt;

&lt;h2&gt;Kick-starting Your New Developer Job, step by step guide&lt;/h2&gt;

&lt;h3&gt;Learn about the product&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FBiEAzsL.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FBiEAzsL.png" alt="Essential Tips for Kick-starting Your New Developer Job - Keep calm and read the documentation"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The first thing you want to do is obvious, you want to read the product documentation. But, this can be tedious, because documentation can be overwhelming. &lt;/p&gt;

&lt;p&gt;You should pretend you are a customer who wants to use product. There is no need to go into depths yet, there will be enough time and need for that later.&lt;/p&gt;

&lt;p&gt;So, start small, find marketing and promo material, read through it. Then, find customer "how to get started" guides and go through them. &lt;/p&gt;

&lt;p&gt;If your company is making software as a service, open a free account or ask someone to give you a user account. Play around, see what software does. &lt;/p&gt;

&lt;p&gt;Finally, introduce yourself to sales and customer success teams, they are the closest you will get to customers. &lt;/p&gt;

&lt;p&gt;In my experience so far, I was always meeting amazing people in these departments. They have knowledge of how stuff works and in most cases, they want to share it and make a good team.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bonus tip:&lt;/strong&gt; If your company has a backlog, read through it, actually skim through it. However, don't get scared or overwhelmed. Very likely 50 of the things in backlog will not be refined or over-scoped. &lt;/p&gt;

&lt;h3&gt;Understand company language&lt;/h3&gt;

&lt;p&gt;Companies use specific domain language to describe their products and needs. Very often you might fail to understand something only because vocabulary is not familiar to you. It might look like the team is much more knowledgeable than you, when in fact, they just have "the lingo".&lt;/p&gt;

&lt;p&gt;There is no strict rule here, other than listening more than talking and asking whenever something is unclear. &lt;/p&gt;

&lt;p&gt;Very important advice would be: &lt;strong&gt;Do not fake that you understand something if you don't, ask away.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There is an interesting article about Domain Driven Development, which is a &lt;a href="https://www.milanlatinovic.com/domain-driven-designbeginners-guide-to-with-symfony-symfonyworld-online-2020/" rel="noopener noreferrer"&gt;beginner's guide to understanding Domain Driven Development.&lt;/a&gt; It is closely related to this topic and you might want to read up on it as well.&lt;/p&gt;



&lt;h3&gt;Learn about processes&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgflip.com%2F20i1a8.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgflip.com%2F20i1a8.jpg" alt="Essential Tips for Kick-starting Your New Developer Job - learn procedures"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ask questions about anything you are not sure of, don't assume. If you will be working in a company, you need to know what to do, who to ask for help, and when.&lt;/p&gt;

&lt;p&gt;Some things you might need straight away, how do you get tasks, is there a supervisor, who is your technical peer, how do you push code to production. Then, what chat tool do you use i.e. Slack), which channels are important, where can you ask for help?&lt;/p&gt;

&lt;p&gt;Keep an open mind, some companies will not have ideally optimized processes for everything. You don't want to start suggesting process changes very early. Two reasons for this. Firstly, you don't know the reasons for these processes which might be very valid. Secondly, you don't know enough about the company to be able to suggest something useful at first. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In short, ask a lot of questions and, when it comes to processes, try to be the one who is listening, instead of talking.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;The importance of the feedback&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2F64.media.tumblr.com%2F3678ad97cfc14049c09dc4f1dd4ed2e1%2F5fef4c1b733d538d-a6%2Fs640x960%2F6a97bd0c498efd1faf39e87b405e08c0a5278b95.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2F64.media.tumblr.com%2F3678ad97cfc14049c09dc4f1dd4ed2e1%2F5fef4c1b733d538d-a6%2Fs640x960%2F6a97bd0c498efd1faf39e87b405e08c0a5278b95.jpg" alt="Importance of the feedback"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;While you are learning about processes and trying to find your way around, you should ask your team to give you feedback on what you are doing.&lt;/p&gt;

&lt;p&gt;This way you will know if you are going in the right direction. Asking for a feedback should be a common thing you are confident to do all the time.&lt;/p&gt;

&lt;p&gt;As an example, when I wrote this article I asked few friends for a feedback. They shared many interesting insights, from technical to logical and cosmetic ones. &lt;/p&gt;

&lt;p&gt;One friend told me that my LOTR (Lord Of The Rings) meme from previous section is outdated and that I should go with something more modern. This is funny, because I already got this comment once at work when I was using similar meme in a presentation.&lt;/p&gt;

&lt;p&gt;Long story short, I took some time and make the best out of this comment. Here is a my LOTR meme updated for the 2020. :) &lt;/p&gt;

&lt;h3&gt;Setup your development environment&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.gitpod.io%2Fdev-env-gilbert.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.gitpod.io%2Fdev-env-gilbert.gif" alt="Essential Tips for Kick-starting Your New Developer Job - Setup your development environment"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The most important thing for kick-starting Your New Developer Job is to, before starting with your first task, make sure your development environment up and running. This might sound easier than it is in reality. Here is a quick list of things you want to do:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;setup development environment in full, do not just make it work in any way possible&lt;/li&gt;
&lt;li&gt;ensure your debugging works, and that you can debug different things you need (i.e. frontend debugging, API debugging, console command debugging).&lt;/li&gt;
&lt;li&gt;your company probably have testing and staging environments, ask about them and setup access to them&lt;/li&gt;
&lt;li&gt;ask about different databases your product uses and set up access to them&lt;/li&gt;
&lt;li&gt;understand how to debug and where logs are&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once you do the steps above, you are well prepared to tackle with your first task. &lt;/p&gt;

&lt;p&gt;You also already learned about the project because you had to think about lots of different things while setting a development environment.&lt;/p&gt;

&lt;h4&gt;The collaborative environment is important&lt;/h4&gt;

&lt;p&gt;I think it is worth mentioning that collaborative environment is very important. You should understand "rules of engagement" meaning what tools are used for communication, how is testing coordinated and communicated across the team and what procedures are involved.&lt;/p&gt;

&lt;p&gt;As a practical example, many teams have dedicated testing servers. However these resources are usually limited and time sensitive and there is some way of coordinating who is using what and when. These are the things you want to understand. &lt;/p&gt;

&lt;p&gt;If you don't ask and don't understand these things, that means that you don't need testing environment. Furthermore, that means that you are not testing your code, or at least not testing it in a way your teams finds appropriate. &lt;/p&gt;

&lt;p&gt;You don't want to be the person who is not testing your changes properly. :) &lt;/p&gt;

&lt;h4&gt;Technical vs organizational rules&lt;/h4&gt;

&lt;p&gt;This is a huge topic which probably deserves its own article. However, we need to at least mention it here. Technical rules are rules defining how to code, check code quality, test, which tools to use, how to debug, deploy, monitor logs, etc. All these things are important.&lt;/p&gt;

&lt;p&gt;However, you are not alone in the company. You are not alone in the team. It it wrong to act like you are single person band. In short, there are some organizational rules you want and need to understand. What are these rules? Well, that is the trick, it depends on organization you are working for.&lt;/p&gt;

&lt;p&gt;One thing I can promise, these rules will be a bit, or a lot different to what you might assume or what you had in your previous company or in the school for that matter. &lt;/p&gt;

&lt;p&gt;Best advice here is to keep an open mind and assume that every rule has a reason (I already mentioned this once or twice in this article). Do not try to change organizational rules. Understand them, work by them, notice strong and weak points. Once you get some "seniority" in the company, you can propose changes to whole team. &lt;/p&gt;

&lt;p&gt;However, to be able to change something for better, first you need to live trough it. Or, in words of my colleague, &lt;strong&gt;you can not solve a problem. until you spend some time with that problem and understanding what difficulties and pains it is causing. &lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;Consider using Most Important Task (MIT) approach&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Most Important Task&lt;/strong&gt;, or shorthand MIT, is a very simple but powerful approach, which suggests that you should, at the beginning of your day, focus on the task that is providing the biggest benefits.&lt;/p&gt;

&lt;p&gt;This approach is based on the fact that first 1-2 hours at the beginning of your day you are at your "cognitive best". Cognitive best means that you have the best chance of solving problems.&lt;/p&gt;

&lt;p&gt;Most of the people use this time to read through messages, respond to emails, cleanup stacked questions, and similar. This is not what you want to do.&lt;/p&gt;

&lt;p&gt;You want to plan your day and understand what is the most important task for you. The task is providing you the most benefits and that will make the biggest impact on your team and company. &lt;/p&gt;

&lt;p&gt;Once you know what this task is, you want to focus and work only on it. You can go a step further and dedicate time slots to read through Slack and Mail messages, instead of doing constant content switching.&lt;/p&gt;

&lt;h3&gt;Keep diff sizes small&lt;/h3&gt;

&lt;p&gt;There are two important things here. &lt;/p&gt;

&lt;p&gt;First one, when making new features try doing it in phases, document, and explain each phase. This will help your reviewers to recognize problems early and when they point them out you will easily fix them. If you make long and undocumented diffs, everyone will have a hard time examining them and once they find the problem you will have to do everything all over again.&lt;/p&gt;

&lt;p&gt;Be smart, plan your features, and bug fixes. It is ok to do something in phases, even if these are small commits. It is not about the size of the code change, but about the impact.&lt;/p&gt;

&lt;p&gt;I was already writing about keeping diff sizes small in two other articles. One is about &lt;a href="https://www.milanlatinovic.com/clean-code-rules/" rel="noopener noreferrer"&gt;Clean Code Rules&lt;/a&gt; and how to improve the quality of your coding. The other article is about &lt;a href="https://www.milanlatinovic.com/code-review-good-bad-ugly/" rel="noopener noreferrer"&gt;how code-reviewers review your code&lt;/a&gt;, what do they actually check. You can read up on these topics as well, it can be helpful for your own code.&lt;/p&gt;

&lt;h3&gt;Aim to be at the positive zero&lt;/h3&gt;

&lt;p&gt;There is a concept called "Being a positive zero", which means that you did not make any fascinating breakthroughs but you also did not break anything.&lt;/p&gt;

&lt;p&gt;When you start working on a new project, the chances that you will break something are bigger than the chances you will make some major impact. Don't take unnecessary risks or try to prove with huge changes. Make a small but positive impact, without causing more harm than good.&lt;/p&gt;

&lt;h3&gt;Read the room, understand climate and rituals &lt;/h3&gt;

&lt;h4&gt;Soft-skills for Kick-starting Your New Developer Job&lt;/h4&gt;

&lt;p&gt;Soft-skills are very important and often neglected. When you are part of a new team, you need to understand the climate and "the rituals". Have fun, talk, and hang out with everyone. If you are remote, at least do it online, or if possible visit your team from time to time.&lt;/p&gt;

&lt;p&gt;You will not match with everyone of course, but you do need to give chance to anyone to talk about technologies, life, hobbies. &lt;/p&gt;

&lt;p&gt;Finally, learn from your mistakes, because you will make them, others will as well. Don't be judgmental and try to keep an open mind.&lt;/p&gt;

&lt;p&gt;Most importantly, do not try to compete with others, &lt;strong&gt;your competition is with yourself. &lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Try to improve on a weekly basis, &lt;/strong&gt;and always be better than your previous self. Other team members and friends are not there to compete against you but to share experiences. Sometimes this experience sharing will look like criticism, but that is perfectly fine. &lt;strong&gt;Keep an open mind&lt;/strong&gt;, be honest and friendly and you will do good.&lt;/p&gt;

&lt;p&gt;I wish you all the best!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bonus tip:&lt;/strong&gt; I got very valuable feedback on this article from few friends which opinion I appreciate a lot. One comment was very interesting and I am adding it as a bonus tip. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Also, a good tip, try to solve every problem by yourself. If it is not possible to get it done, write down what you did, describe the problem, and then ask your mentor. This way he will already know what you tried and he doesn’t need to try it again for you.&lt;/p&gt;
&lt;p&gt;If you don't have a mentor, supervisor, or peer, try finding or asking for one. It doesn't matter if you are a junior, senior, or any other skill level, it is always good to have some supervision and someone to talk to.&lt;/p&gt;
&lt;/blockquote&gt;



</description>
      <category>development</category>
      <category>jobs</category>
      <category>programming</category>
      <category>teamwork</category>
    </item>
  </channel>
</rss>
