<?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: Tony Mezzolesta</title>
    <description>The latest articles on DEV Community by Tony Mezzolesta (@tonymezzolesta).</description>
    <link>https://dev.to/tonymezzolesta</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%2F209853%2F4c110082-42fb-45c5-ae6e-79a542bebb85.png</url>
      <title>DEV Community: Tony Mezzolesta</title>
      <link>https://dev.to/tonymezzolesta</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tonymezzolesta"/>
    <language>en</language>
    <item>
      <title>Navigating the Labyrinth: A Senior Developer's Guide to Corporate Realities</title>
      <dc:creator>Tony Mezzolesta</dc:creator>
      <pubDate>Wed, 16 Aug 2023 19:36:21 +0000</pubDate>
      <link>https://dev.to/tonymezzolesta/navigating-the-labyrinth-a-senior-developers-guide-to-corporate-realities-4b02</link>
      <guid>https://dev.to/tonymezzolesta/navigating-the-labyrinth-a-senior-developers-guide-to-corporate-realities-4b02</guid>
      <description>&lt;p&gt;In the world of corporate software development, being a senior developer is a role that comes with both great responsibilities and unique challenges. As someone who has navigated these waters, I understand the intricate dance between technical expertise and corporate dynamics. Let's delve into the realities of being a senior developer in a company of opinions and explore strategies for sailing these sometimes tumultuous waters. ⚓️&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oL3K8_yk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6s1p4v8wgjhphltqk3ne.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oL3K8_yk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6s1p4v8wgjhphltqk3ne.png" alt="Image description" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  1. The Sea of Opinions: Riding the Waves of Collaboration 🌊
&lt;/h2&gt;

&lt;p&gt;In a corporate setting, projects are rarely solo endeavors. They're the result of collective effort, involving numerous stakeholders, each with their opinions. As a senior developer, you are often in the center of this maelstrom of ideas. Remember, these opinions are reflections of passion for the project, not obstacles.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Navigation Strategy:&lt;/strong&gt; Embrace open communication. Initiate regular meetings or discussions where all voices are heard. By acknowledging everyone's perspectives, you create an environment of collaboration and respect. Try to extract the best from each opinion and channel it into shaping the project's success. 🗣️&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Climbing the Ladder: Balancing Ambition and Team Unity 🏔️
&lt;/h2&gt;

&lt;p&gt;Corporate environments are breeding grounds for ambition. Everyone, including yourself, is striving for recognition and advancement. This ambition can sometimes lead to conflicts, as interests might not always align.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Navigation Strategy:&lt;/strong&gt; Foster a culture of mentorship. Share your expertise and help junior developers grow. By being seen as a team player, you elevate your reputation in a positive way. If conflicts arise due to ambitions clashing, focus on the common goal of delivering a successful project. Remind everyone that united efforts lead to greater achievements. 🤝&lt;/p&gt;

&lt;h2&gt;
  
  
  3. The Relay Race of Decisions: Adapting to Pre-Made Choices 🏁
&lt;/h2&gt;

&lt;p&gt;One of the most frustrating aspects of corporate life is the realization that decisions have been made above you before they even reach you. As a senior developer, this can feel like running a race where the finish line is constantly shifting.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Navigation Strategy:&lt;/strong&gt; Embrace agility. Adaptability is the cornerstone of successful software development. While pre-made decisions might not always align with your technical preferences, see them as opportunities to refine your ability to work within constraints. If there's room for negotiation, provide well-reasoned feedback, but always be prepared to pivot gracefully. 🔄&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Verbiage Matters: Crafting Communication for Effective Development ✉️
&lt;/h2&gt;

&lt;p&gt;In the intricate world of corporate software development, the power of words cannot be underestimated. As a senior developer, what you say and how you say it can significantly impact not only immediate decisions but also future reactions to development.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Navigation Strategy:&lt;/strong&gt; Master the art of strategic communication. Choose your words thoughtfully in discussions, meetings, and written communications. Instead of framing your statements as absolutes, consider using language that encourages dialogue and exploration. For instance, instead of saying, "This approach won't work," you might say, "Have we considered an alternative perspective here?" This subtle shift opens the door for constructive discussions rather than shutting down ideas. 🗨️&lt;/p&gt;

&lt;p&gt;Furthermore, when providing feedback or addressing concerns, focus on solutions rather than problems. Instead of saying, "This code has many issues," you could suggest, "Let's collaborate to enhance the code's efficiency and robustness."&lt;/p&gt;

&lt;p&gt;Remember, your words have a lasting impact on how your colleagues perceive you and the project at hand. Craft your communication with the intention of fostering collaboration, motivating the team, and ultimately contributing to the success of the project.&lt;/p&gt;

&lt;h2&gt;
  
  
  Incorporating Verbiage Strategy: A Holistic Approach 🌟
&lt;/h2&gt;

&lt;p&gt;Integrating this verbiage strategy into your role as a senior developer complements the other navigation strategies discussed earlier. Effective communication underpins collaboration, teamwork, and adaptability. By framing your conversations in a way that encourages ideas, empowers team members, and highlights potential solutions, you become a linchpin of positive development dynamics.&lt;/p&gt;

&lt;p&gt;As you sail through the corporate waters, remember that your role is not just about writing code but also about building relationships, influencing decisions, and shaping the project's trajectory. Through strategic and empathetic communication, you can solidify your standing as a senior developer who not only possesses technical prowess but also the art of inspiring and guiding others.&lt;/p&gt;

&lt;h2&gt;
  
  
  Concluding Thoughts: Navigating the Complete Landscape 🧭
&lt;/h2&gt;

&lt;p&gt;Being a senior developer in a corporate setting demands a multi-faceted skill set. By mastering the art of communication, you weave together the various threads of collaboration, ambition, and decision-making. Your words become the rudder that steers the ship, guiding it toward successful project outcomes and harmonious team interactions. So, as you navigate the complex realities of corporate development, let your verbiage be the beacon that leads the way to a brighter and more efficient future. &lt;/p&gt;

</description>
    </item>
    <item>
      <title>The Power of Null</title>
      <dc:creator>Tony Mezzolesta</dc:creator>
      <pubDate>Sun, 12 Jul 2020 02:37:13 +0000</pubDate>
      <link>https://dev.to/tonymezzolesta/the-power-of-null-1kl4</link>
      <guid>https://dev.to/tonymezzolesta/the-power-of-null-1kl4</guid>
      <description>&lt;p&gt;Every programmer that has some sort of social media presence has seen this image:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ny44oMdS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/r5j2dpP.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ny44oMdS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/r5j2dpP.png" alt="Null"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is the perfect analogy of Null.  With this in mind, you can actually utilize the use of Null.  Null is actually a value to represent the absent of a value in a data type.  The complete absence of a value is called a &lt;a href="https://en.wikipedia.org/wiki/Bottom_type#:~:text=In%20type%20theory%2C%20a%20theory,up%20tack%20(%E2%8A%A5)%20symbol."&gt;bottom type&lt;/a&gt; but that &lt;/p&gt;

&lt;h2&gt;
  
  
  "To Null or not to Null":
&lt;/h2&gt;

&lt;p&gt;In most of my SQL tables, I always have a [DELETE_DATE] field.  This is because I do not like to actually DELETE a record from a table.  Instead, I will fill in a date (CURRENT_TIMESTAMP for MSSql).&lt;/p&gt;

&lt;p&gt;This is where Null becomes important to my SQL environment.  All of my stored procedures will always check to see if a date has been put into the [DELETE_DATE] field.&lt;/p&gt;

&lt;p&gt;Another example in my SQL environment is using this to activate certain processes.  I have a service that runs through different events based on statuses and dates.  I will use a [PROCESS_DATE] to confirm that the record has been processed.  You can utilize this field in order to "re-trigger" and event by putting a Null value on [PROCESS_DATE] for the record.  The service will see this record and run the process again.&lt;/p&gt;

&lt;p&gt;In JavaScript, the use of Null is also valuable (yes that was a pun).  It's the best way to check for elements of an object to see if they exist.  Especially when getting responses from APIs/Document DBs/and callbacks.&lt;/p&gt;

&lt;p&gt;if(object.element) is the same as if(object.element === null).  Any time code can be shortened and compressed is a plus in any programmers book.  &lt;/p&gt;

&lt;p&gt;I hope this sheds some light on the power of Null and its use as a value even though it represents the absence of a value... if that made any sense.&lt;/p&gt;

</description>
      <category>database</category>
      <category>null</category>
      <category>opinion</category>
      <category>state</category>
    </item>
    <item>
      <title>Local Git Branch Prune/Delete Against Remote in Python</title>
      <dc:creator>Tony Mezzolesta</dc:creator>
      <pubDate>Tue, 16 Jun 2020 18:46:48 +0000</pubDate>
      <link>https://dev.to/tonymezzolesta/local-git-branch-prune-delete-against-remote-in-python-16b9</link>
      <guid>https://dev.to/tonymezzolesta/local-git-branch-prune-delete-against-remote-in-python-16b9</guid>
      <description>&lt;p&gt;Automation is a programmer's best friend.  Its an investment of time and skill in order to make your life and job easier.  Hey, we have all been there.  You are working on a project and you are attempting a major change.  So you create a new branch off of the master and make your changes.  Publish/Commit/Push.  Now you have to look into a bug but you don't want to merge your changes in without testing yet.  You create a new branch off of the master and resolve your bug there.  Tested and merged into master.  After weeks of doing this, you realize that your local branches have piled up and are most likely dead (assuming that you delete your branches in remote once they are merged).  So you will need to run a command to prune, then run a command to get branches including remote, then run another command to delete old branches...bleh.&lt;/p&gt;

&lt;p&gt;So I wrote a python script that will automatically do this for you.  You can either setup a task to run every so often or just run it straight from the terminal.  I know that this is nothing fancy, but I hope this is useful to someone like me who just got sick of cleaning their local git repo.&lt;/p&gt;

&lt;h3&gt;
  
  
  Note:
&lt;/h3&gt;

&lt;p&gt;This will &lt;strong&gt;DELETE&lt;/strong&gt; branches that are not in remote.  Make sure you publish them if they are not old or marked for clean-up.  Also, this will skip over the branch you are sitting on along with the master branch.  You can manipulate the script to skip over any other branches you want (development/staging).&lt;/p&gt;

&lt;h3&gt;
  
  
  Prerequisites:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Directory must have git initialized.  You can pass the directory in as an argument.  See read me in github repo.&lt;/li&gt;
&lt;li&gt;Must have Python 2.7+ installed.&lt;/li&gt;
&lt;/ul&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vJ70wriM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/TonyMezzolesta"&gt;
        TonyMezzolesta
      &lt;/a&gt; / &lt;a href="https://github.com/TonyMezzolesta/Clean_Local_Branches_Python"&gt;
        Clean_Local_Branches_Python
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Python script that will prune branches and delete any local branches that do not exist in origin.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
Clean_Local_Branches_Python&lt;/h1&gt;
&lt;p&gt;Python script that will prune branches and delete any local branches that do not exist in origin.&lt;/p&gt;
&lt;h2&gt;
Command&lt;/h2&gt;
&lt;p&gt;To initiate, simply run command:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ python %file_directory%/prune.py
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;or run with arguments:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ python %file_directory%/prune.py C:\git\repo
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;
Arguments&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;arg[0] = File location of script.  This is added by default&lt;/li&gt;
&lt;li&gt;arg[1] = Directory workspace (optional).  Leave blank if script is in local workspace.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
Steps&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Runs the prune command against origin&lt;/li&gt;
&lt;li&gt;Gets list of local branches&lt;/li&gt;
&lt;li&gt;Loops through local branches&lt;/li&gt;
&lt;li&gt;Checks each local branch against remote to see if it exists&lt;/li&gt;
&lt;li&gt;If not exists, run delete on local branch&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
Exceptions&lt;/h2&gt;
&lt;p&gt;The script will skip the current branch you are on (*) and the master branch.  This can be adjusted per your liking by the if statements in the for loop.&lt;/p&gt;
&lt;/div&gt;



&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/TonyMezzolesta/Clean_Local_Branches_Python"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


</description>
      <category>git</category>
      <category>automation</category>
      <category>python</category>
      <category>github</category>
    </item>
  </channel>
</rss>
