<?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: Bulat</title>
    <description>The latest articles on DEV Community by Bulat (@kein1945).</description>
    <link>https://dev.to/kein1945</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%2F687126%2F5b563a09-8626-4b5d-abaa-983b5e0cab0d.jpeg</url>
      <title>DEV Community: Bulat</title>
      <link>https://dev.to/kein1945</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kein1945"/>
    <language>en</language>
    <item>
      <title>What Makes a Good Developer and What Company Communication Has to Do With It</title>
      <dc:creator>Bulat</dc:creator>
      <pubDate>Thu, 01 May 2025 19:45:30 +0000</pubDate>
      <link>https://dev.to/kein1945/what-makes-a-good-developer-and-what-company-communication-has-to-do-with-it-3913</link>
      <guid>https://dev.to/kein1945/what-makes-a-good-developer-and-what-company-communication-has-to-do-with-it-3913</guid>
      <description>&lt;p&gt;It all started with a colleague’s post:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;As software developers, we often think our job is to develop software, but, really, that is just the means to an end, and the end is to empower business to reach their goals. Your code may be elegant, but if it doesn’t meet the objectives (be they time or business) it doesn’t f***ing work.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;From a business point of view, what makes a good developer (in fact, any employee, from the most hands-on roles to leadership) is how they influence the entire system — in our case, the business itself.&lt;/p&gt;

&lt;p&gt;A useful way to judge a solution’s quality is to ask whether it is a global or local optimisation. Local optimisation improves something on a narrow scale, while global optimisation benefits the whole.&lt;/p&gt;

&lt;p&gt;Example: when my family and I go on a short weekend trip, I make sure we have everything we need, check that no one forgets anything, and see that everyone is ready on time so we don’t miss any stops. That looks like a sensible adult approach. Yet behind those tense “perfect” preparations, the global goal — having an enjoyable family trip and creating warm memories — can be lost. Missing a restaurant before it closes is not so bad if you can buy hot dogs and sit together on a bench at sunset, discussing the journey. Sometimes local optimisation harms global optimisation.&lt;/p&gt;

&lt;p&gt;To achieve global optimisation, we need a global view.&lt;/p&gt;

&lt;p&gt;For instance, we once had to show a working prototype while a competitor was entering the market with the same product. We knew speed, not build quality, was the goal. When Marketing could start attracting clients to the prototype, we gained time to rewrite parts of the system and refine the long-term architecture, and the business won an advantage. The opposite situation: our core product — the revenue locomotive — hit technical limits. Re-building it was not a hypothesis; it was a product that was certainly needed, demanding a solid approach that drew on all current experience and looked ahead.&lt;/p&gt;

&lt;p&gt;Companies usually have solid bottom-up communication — daily stand-ups, quarterly OKRs, reports, and so on. Top-down communication is often poorer: annual or quarterly demos, and a little more. In such demos, people forget who the end user is, and numbers look like mere figures — clear to executives, unclear to staff.&lt;/p&gt;

&lt;p&gt;Linking company strategy with tactical decisions is hard without expertise. It’s just as hard for a CEO to understand a junior developer’s report. The data flow must therefore be multistage and bidirectional, moving through the management chain both upward and downward. An individual contributor can hardly influence this; establishing feedback loops is management’s responsibility, and the business must be the first to care. Still, contributors should show interest and demand this communication.&lt;/p&gt;

&lt;p&gt;What I do personally, within the power of an ordinary developer&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ask for more context in team meetings — why we do something and what we aim to achieve — so the whole team hears the answer.&lt;/li&gt;
&lt;li&gt;Remember what’s shared at company demos and, crucially, link what we do, what other departments do, and our goals.&lt;/li&gt;
&lt;li&gt;Take an interest in what neighbouring departments are working on, talk with colleagues, learn about their problems, and help with cross-department tasks.&lt;/li&gt;
&lt;li&gt;Justify my decisions by referring to global goals; this keeps them at the front of my mind for me and for the team.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2j9q7vlrni2qt8y1d952.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2j9q7vlrni2qt8y1d952.png" alt="Image description" width="702" height="395"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To see the full picture, an individual contributor must navigate how the business is structured, which markets it serves, who its audience is, and so on. That knowledge is far beyond ordinary job duties, and no one expects it to be as deep as management’s. Yet it lets us propose solutions that benefit the entire company and become the in-demand specialists we aspire to be.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Git aliases that I use weekly</title>
      <dc:creator>Bulat</dc:creator>
      <pubDate>Wed, 15 Sep 2021 03:22:30 +0000</pubDate>
      <link>https://dev.to/kein1945/my-favorite-git-aliases-3ije</link>
      <guid>https://dev.to/kein1945/my-favorite-git-aliases-3ije</guid>
      <description>&lt;p&gt;I know that there is a lot of posts like "My top bash commands", "My favorite git commands".&lt;br&gt;
But this morning I said to myself: "Come one! You know nice tricks too! Share them!".&lt;br&gt;
So this aliases I'm using a lot of time because I prefer to work with git by CLI. I will not repeat common and simple aliases like &lt;code&gt;commit -m&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  1. &lt;code&gt;git h&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Git history. A picture is worth a thousand words&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxyt75v6qybf6jfep818r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxyt75v6qybf6jfep818r.png" alt="Screenshot_20210915_110054" width="684" height="428"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Alias for this command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;h = log --pretty='format:%Cred%h%Creset %C(yellow)%d%Creset - %s %C(green)%ar%Creset %C(blue)%an%Creset' --graph --all --decorate
```



You can write your own format, all variables described at [documentation](https://git-scm.com/docs/git-log#_pretty_formats)

## 2. `git cs ${COMMIT_HASH}`

Find branches that contains specific commit
![Screenshot_20210915_110120](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tz5kohmfvamiqzny4sor.png)

Alias for this command:


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;cs = "!f() { git branch -r --contains $1; }; f"&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


## 3. `git bd ${BRANCH_1}..${BRANCH_2}`

Difference between branches. Output same as for `git h`, but shows only commits between this branches pointers.

Alias for this command:


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;bd = "!f() { git log --graph --pretty=format:\"%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset\" --abbrev-commit --date=relative $1; }; f"&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


## 4. `git cleanup`

Removes all branches that already merged.

Alias for this command:


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;cleanup = "!git branch  --no-color --merged | /usr/bin/grep --color=none  -v '\*\|master\|develop' | xargs -n 1 git branch -d"&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


As you can see I've hardcoded branches `master` and `develop`, but you can have different names for branches.

## How to add this aliases

You can add those commands at git config(for global aliases `~/.gitconfig` or `.git/config` for project specific)


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;[alias]&lt;br&gt;
    h = log --pretty='format:%Cred%h%Creset %C(yellow)%d%Creset - %s %C(green)%ar%Creset %C(blue)%an%Creset' --graph --all --decorate&lt;br&gt;
    cs = "!f() { git branch -r --contains $1; }; f"&lt;br&gt;
    bd = "!f() { git log --graph --pretty=format:\"%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset\" --abbrev-commit --date=relative $1; }; f"&lt;br&gt;
    cleanup = "!git branch  --no-color --merged | /usr/bin/grep --color=none  -v '\*\|master\|develop' | xargs -n 1 git branch -d"&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


Maybe you are using something interesting too?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>github</category>
      <category>git</category>
      <category>cli</category>
    </item>
  </channel>
</rss>
