{"id":1676,"date":"2023-03-16T10:53:16","date_gmt":"2023-03-16T10:53:16","guid":{"rendered":"https:\/\/www.infobip.com\/developers\/?p=1676"},"modified":"2023-09-11T14:30:02","modified_gmt":"2023-09-11T14:30:02","slug":"seniors-working-on-a-legacy-project","status":"publish","type":"post","link":"https:\/\/www.infobip.com\/developers\/blog\/seniors-working-on-a-legacy-project","title":{"rendered":"You can&#8217;t call yourself a senior until you&#8217;ve worked on a legacy project"},"content":{"rendered":"\n<figure class=\"wp-block-image size-full is-resized\"><img decoding=\"async\" src=\"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2023\/03\/antique-manometers-measuring-instruments-with-cont-2021-08-26-18-12-26-utc.jpg\" alt=\"A sepia image of old pressure valves\" class=\"wp-image-1677\" style=\"width:780px\" width=\"780\" srcset=\"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2023\/03\/antique-manometers-measuring-instruments-with-cont-2021-08-26-18-12-26-utc.jpg 1200w, https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2023\/03\/antique-manometers-measuring-instruments-with-cont-2021-08-26-18-12-26-utc-300x200.jpg 300w, https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2023\/03\/antique-manometers-measuring-instruments-with-cont-2021-08-26-18-12-26-utc-1024x683.jpg 1024w, https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2023\/03\/antique-manometers-measuring-instruments-with-cont-2021-08-26-18-12-26-utc-768x512.jpg 768w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" \/><\/figure>\n\n\n\n<p>Everybody hates working on legacy projects, myself included. As fate would have it, one landed in my lap recently. While working on it didn&#8217;t make me hate legacy projects any less, it did help me get a deeper understanding of the processes and practices we use today.&nbsp;<\/p>\n\n\n\n<p>I am proud that I am a part of a team that uses\u202f<strong>most of the best practices:<\/strong>&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Writing clean code and automated tests&nbsp;<\/li>\n\n\n\n<li>Participating in pull requests and tasks reviews&nbsp;<\/li>\n\n\n\n<li>App is in production within the same day of merging into the master branch&nbsp;<\/li>\n\n\n\n<li>Agile is well adopted&nbsp;<\/li>\n<\/ul>\n\n\n\n<p>\u202fIt&#8217;s not perfect. Pull requests sometimes contain trivial suggestions and discussions. The ops team usually messes something up (or at least that&#8217;s what we devs like to think). Our product owner occasionally wants us to fast-track some &#8216;easy&#8217; features&#8230; again. But all in all, things are pretty good.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">A trip to the Ant museum&nbsp;<\/h2>\n\n\n\n<p>Since our team was performing well, our velocity was borrowed to another product, managed by another part of our company. We weren&#8217;t thrilled about it since the project\u202f<strong>uses an older version of Java,\u202f<\/strong>and the code wasn&#8217;t written the way we would do it.\u202f&nbsp;<\/p>\n\n\n\n<p>The job was to add a few metrics &#8211; simple ones, like whether the app is running and for how long, is it processing data (fast enough). The project itself was in maintenance mode, and no new features had been added in a while. Since we are accustomed to adding metrics, this should have been a piece of cake.&nbsp;<\/p>\n\n\n\n<p>Rolling up our sleeves, we first noticed that\u202f<strong>the project had been built using something very old -\u202f<\/strong><a href=\"https:\/\/en.wikipedia.org\/wiki\/Apache_Ant\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Ant<\/strong><\/a><strong>\u202f build files.\u202f<\/strong>They are big XML files that contain every piece of information on how to build the project in question. For example, you need to specify that the project needs to be compiled, tested, and packaged. All details like source, target, and resource location must be explicitly configured within those files. This used to be pretty common for many programming languages. You wrote a build file once, copied it on each new project, and then changed it until it worked for the new project.\u202f&nbsp;<\/p>\n\n\n\n<p>Here&#8217;s what an Ant build file for a Hello World project would look like: <\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-sql\" data-lang=\"SQL\"><code>&lt;project&gt;\n\n    &lt;target name=&quot;clean&quot;&gt;\n        &lt;delete dir=&quot;build&quot;\/&gt;\n    &lt;\/target&gt;\n\n    &lt;target name=&quot;compile&quot;&gt;\n        &lt;mkdir dir=&quot;build\/classes&quot;\/&gt;\n        &lt;javac srcdir=&quot;src&quot; destdir=&quot;build\/classes&quot;\/&gt;\n    &lt;\/target&gt;\n\n    &lt;target name=&quot;jar&quot;&gt;\n        &lt;mkdir dir=&quot;build\/jar&quot;\/&gt;\n        &lt;jar destfile=&quot;build\/jar\/HelloWorld.jar&quot; basedir=&quot;build\/classes&quot;&gt;\n            &lt;manifest&gt;\n                &lt;attribute name=&quot;Main-Class&quot; value=&quot;oata.HelloWorld&quot;\/&gt;\n            &lt;\/manifest&gt;\n        &lt;\/jar&gt;\n    &lt;\/target&gt;\n\n    &lt;target name=&quot;run&quot;&gt;\n        &lt;java jar=&quot;build\/jar\/HelloWorld.jar&quot; fork=&quot;true&quot;\/&gt;\n    &lt;\/target&gt;\n\n&lt;\/project&gt;<\/code><\/pre><\/div>\n\n\n\n<p>There must be a more convenient way to manage that, right? Well, that&#8217;s why the idea of\u202f<a href=\"https:\/\/en.wikipedia.org\/wiki\/Convention_over_configuration\" target=\"_blank\" rel=\"noreferrer noopener\">convention over configuration<\/a>\u202fcame to life, suggesting that developers only need to specify unconventional aspects of the application. <strong>Modern build tools have adopted<\/strong>\u202f<strong>this paradigm by providing developers with defaults that can be overridden if needed.<\/strong>\u202fThat&#8217;s why most java source files are in src\/main\/java source, while the compiled classes are in the target folder\u2014no need to specify this over and over.&nbsp;<\/p>\n\n\n\n<p>That got us thinking about whether this approach would be helpful in our current projects. We had a huge application properties file, with most values having the same value (e.g., application port). <strong>Could we apply the same principle to our application properties?<\/strong> Most properties could have defaults, and our properties file wouldn&#8217;t be as large.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Things we take for granted<\/h2>\n\n\n\n<p>Back to our legacy project &#8211; we managed to build and package our application! The tedious part was behind us, and we could start coding. But <strong>how do we embed our metrics component into the legacy code base<\/strong>? We took this for granted because our application framework usually handled it.\u202f&nbsp;<\/p>\n\n\n\n<p>Now, what would be the best way to inject our metric components into various parts of the legacy code? Singletons! Well, it seemed the easiest way, at least, but the community considers them anti-patterns. Why? Isn&#8217;t our beloved XY framework relying on singletons? If not, what does it use? What is dependency injection? How does it function under the hood?&nbsp;<\/p>\n\n\n\n<p><strong>These questions got us thinking about basic concepts that we took for granted<\/strong>. Using singletons wasn&#8217;t exactly a bad idea in this case since most of the code wasn&#8217;t covered with unit tests. Nevertheless, we couldn&#8217;t have a good night&#8217;s sleep unless the code was immaculate. We tried a different approach and ended up with decent and simple code &#8211; no singletons, no new abstractions.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The limited role of developers&nbsp;<\/h2>\n\n\n\n<p>The only thing left was to deploy it so that we could test it. This was a problem, of course \u2013 in this case, we were not the ones deploying it or testing it. <strong>Deploying had to be done by the ops team, and testing by the test team.<\/strong> Why couldn&#8217;t we, as developers, manage the whole feature from start to production instead of opening tickets and waiting for other teams before we could close our task?<\/p>\n\n\n\n<p>Firstly, we couldn&#8217;t avoid manual testing since much of the code wasn&#8217;t covered with tests. We also couldn&#8217;t deploy the application ourselves since the infrastructure didn&#8217;t allow us to.\u202f&nbsp;<\/p>\n\n\n\n<p>This had us thinking about the reasons behind <strong>the separation of duties<\/strong> and <strong>how our current approach is better<\/strong>. Seeing that our\u202f<a href=\"https:\/\/en.wikipedia.org\/wiki\/Lead_time\" target=\"_blank\" rel=\"noreferrer noopener\">lead<\/a>\u202fand\u202f<a href=\"https:\/\/en.wikipedia.org\/wiki\/Cycle_time_(software)\" target=\"_blank\" rel=\"noreferrer noopener\">cycle time<\/a>\u202fon this project was significantly higher than usual (it took us weeks to deliver something we usually deliver in several days), the evidence was strongly in favor of that.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Learn outdated practices to understand current ones <\/h2>\n\n\n\n<p>At the end of the\u202f<s>day<\/s>\u202fmonth, our metrics were up and running in production. My feeling about legacy projects hasn&#8217;t changed &#8211; I still hate them, and I am not expecting you to hate them any less.\u202f&nbsp;<\/p>\n\n\n\n<p>We couldn&#8217;t change the project we were assigned to, and these were the cards that we were dealt. What we could\u202f<strong>change is our attitude towards the legacy project<\/strong>. Instead of feeling resigned, we saw it as\u202f<strong>a place to ask questions and learn.<\/strong>\u202f&nbsp;<\/p>\n\n\n\n<p>It taught us how things were done before and why they are done differently now. Instead of just knowing the best practices, we gained first-hand experience with the history behind them.\u202f&nbsp;<\/p>\n\n\n\n<p>Once you start having this deep-rooted knowledge, other developers will recognize this and trust your knowledge and expertise.  If you want to be that person, you better be ready to dig into some legacy projects.&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Everybody hates working on legacy projects, myself included. As fate would have it, one landed in my lap recently. While working on it didn&#8217;t make me hate legacy projects any less, it did help me get a deeper understanding of the processes and practices we use today.\u00a0<\/p>\n","protected":false},"author":36,"featured_media":1677,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[28,254],"tags":[146,256],"coauthors":[174],"class_list":["post-1676","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog-post","category-engineering-practices","tag-development","tag-programming"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Don&#039;t call yourself a senior until you&#039;ve worked on a legacy project<\/title>\n<meta name=\"description\" content=\"Everybody hates working on legacy projects, me as well. Working on one, however, helped me get a deeper understanding of the dev process.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.infobip.com\/developers\/blog\/seniors-working-on-a-legacy-project\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Don&#039;t call yourself a senior until you&#039;ve worked on a legacy project\" \/>\n<meta property=\"og:description\" content=\"Everybody hates working on legacy projects, me as well. Working on one, however, helped me get a deeper understanding of the dev process.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.infobip.com\/developers\/blog\/seniors-working-on-a-legacy-project\" \/>\n<meta property=\"og:site_name\" content=\"Infobip Developers Hub\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/infobip\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-03-16T10:53:16+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-09-11T14:30:02+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2023\/03\/antique-manometers-measuring-instruments-with-cont-2021-08-26-18-12-26-utc.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"800\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Alen Kosanovic\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@InfobipDev\" \/>\n<meta name=\"twitter:site\" content=\"@InfobipDev\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Alen Kosanovic\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.infobip.com\/developers\/blog\/seniors-working-on-a-legacy-project#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.infobip.com\/developers\/blog\/seniors-working-on-a-legacy-project\"},\"author\":{\"name\":\"Alen Kosanovic\",\"@id\":\"https:\/\/www.infobip.com\/developers\/#\/schema\/person\/31b120f4d24c734e6fd27681b0a0510d\"},\"headline\":\"You can&#8217;t call yourself a senior until you&#8217;ve worked on a legacy project\",\"datePublished\":\"2023-03-16T10:53:16+00:00\",\"dateModified\":\"2023-09-11T14:30:02+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.infobip.com\/developers\/blog\/seniors-working-on-a-legacy-project\"},\"wordCount\":1045,\"publisher\":{\"@id\":\"https:\/\/www.infobip.com\/developers\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.infobip.com\/developers\/blog\/seniors-working-on-a-legacy-project#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2023\/03\/antique-manometers-measuring-instruments-with-cont-2021-08-26-18-12-26-utc.jpg\",\"keywords\":[\"development\",\"programming\"],\"articleSection\":[\"Blog Post\",\"Engineering Practices\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.infobip.com\/developers\/blog\/seniors-working-on-a-legacy-project\",\"url\":\"https:\/\/www.infobip.com\/developers\/blog\/seniors-working-on-a-legacy-project\",\"name\":\"Don't call yourself a senior until you've worked on a legacy project\",\"isPartOf\":{\"@id\":\"https:\/\/www.infobip.com\/developers\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.infobip.com\/developers\/blog\/seniors-working-on-a-legacy-project#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.infobip.com\/developers\/blog\/seniors-working-on-a-legacy-project#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2023\/03\/antique-manometers-measuring-instruments-with-cont-2021-08-26-18-12-26-utc.jpg\",\"datePublished\":\"2023-03-16T10:53:16+00:00\",\"dateModified\":\"2023-09-11T14:30:02+00:00\",\"description\":\"Everybody hates working on legacy projects, me as well. Working on one, however, helped me get a deeper understanding of the dev process.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.infobip.com\/developers\/blog\/seniors-working-on-a-legacy-project#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.infobip.com\/developers\/blog\/seniors-working-on-a-legacy-project\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.infobip.com\/developers\/blog\/seniors-working-on-a-legacy-project#primaryimage\",\"url\":\"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2023\/03\/antique-manometers-measuring-instruments-with-cont-2021-08-26-18-12-26-utc.jpg\",\"contentUrl\":\"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2023\/03\/antique-manometers-measuring-instruments-with-cont-2021-08-26-18-12-26-utc.jpg\",\"width\":1200,\"height\":800,\"caption\":\"Antique manometers measuring instruments with control valves. Vintage equipment. Horizontal\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.infobip.com\/developers\/blog\/seniors-working-on-a-legacy-project#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.infobip.com\/developers\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"You can&#8217;t call yourself a senior until you&#8217;ve worked on a legacy project\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.infobip.com\/developers\/#website\",\"url\":\"https:\/\/www.infobip.com\/developers\/\",\"name\":\"Infobip Developers Hub\",\"description\":\"Build meaningful customer relationships across any channel\",\"publisher\":{\"@id\":\"https:\/\/www.infobip.com\/developers\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.infobip.com\/developers\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.infobip.com\/developers\/#organization\",\"name\":\"Infobip Developers Hub\",\"url\":\"https:\/\/www.infobip.com\/developers\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.infobip.com\/developers\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2023\/03\/Infobip_logo_favicon.png\",\"contentUrl\":\"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2023\/03\/Infobip_logo_favicon.png\",\"width\":696,\"height\":696,\"caption\":\"Infobip Developers Hub\"},\"image\":{\"@id\":\"https:\/\/www.infobip.com\/developers\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/infobip\/\",\"https:\/\/x.com\/InfobipDev\",\"https:\/\/www.youtube.com\/channel\/UCUPSTy53VecI5GIir3J3ZbQ\",\"https:\/\/github.com\/infobip-community\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.infobip.com\/developers\/#\/schema\/person\/31b120f4d24c734e6fd27681b0a0510d\",\"name\":\"Alen Kosanovic\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.infobip.com\/developers\/#\/schema\/person\/image\/20b7763781ec59811d4a07b57b88def4\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/1f800e46e256ff03fcb75817f407fa284411cbdaac405ad6a2dc234bf7537c76?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/1f800e46e256ff03fcb75817f407fa284411cbdaac405ad6a2dc234bf7537c76?s=96&d=mm&r=g\",\"caption\":\"Alen Kosanovic\"},\"description\":\"Alen is a senior software developer at Infobip, with almost a decade of experience in pursuing clean code. When he's not at the keyboard, he wanders around the world with his family.\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/kosani\/\"],\"url\":\"https:\/\/www.infobip.com\/developers\/blog\/author\/alen-kosanovic\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Don't call yourself a senior until you've worked on a legacy project","description":"Everybody hates working on legacy projects, me as well. Working on one, however, helped me get a deeper understanding of the dev process.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.infobip.com\/developers\/blog\/seniors-working-on-a-legacy-project","og_locale":"en_US","og_type":"article","og_title":"Don't call yourself a senior until you've worked on a legacy project","og_description":"Everybody hates working on legacy projects, me as well. Working on one, however, helped me get a deeper understanding of the dev process.","og_url":"https:\/\/www.infobip.com\/developers\/blog\/seniors-working-on-a-legacy-project","og_site_name":"Infobip Developers Hub","article_publisher":"https:\/\/www.facebook.com\/infobip\/","article_published_time":"2023-03-16T10:53:16+00:00","article_modified_time":"2023-09-11T14:30:02+00:00","og_image":[{"width":1200,"height":800,"url":"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2023\/03\/antique-manometers-measuring-instruments-with-cont-2021-08-26-18-12-26-utc.jpg","type":"image\/jpeg"}],"author":"Alen Kosanovic","twitter_card":"summary_large_image","twitter_creator":"@InfobipDev","twitter_site":"@InfobipDev","twitter_misc":{"Written by":"Alen Kosanovic","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.infobip.com\/developers\/blog\/seniors-working-on-a-legacy-project#article","isPartOf":{"@id":"https:\/\/www.infobip.com\/developers\/blog\/seniors-working-on-a-legacy-project"},"author":{"name":"Alen Kosanovic","@id":"https:\/\/www.infobip.com\/developers\/#\/schema\/person\/31b120f4d24c734e6fd27681b0a0510d"},"headline":"You can&#8217;t call yourself a senior until you&#8217;ve worked on a legacy project","datePublished":"2023-03-16T10:53:16+00:00","dateModified":"2023-09-11T14:30:02+00:00","mainEntityOfPage":{"@id":"https:\/\/www.infobip.com\/developers\/blog\/seniors-working-on-a-legacy-project"},"wordCount":1045,"publisher":{"@id":"https:\/\/www.infobip.com\/developers\/#organization"},"image":{"@id":"https:\/\/www.infobip.com\/developers\/blog\/seniors-working-on-a-legacy-project#primaryimage"},"thumbnailUrl":"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2023\/03\/antique-manometers-measuring-instruments-with-cont-2021-08-26-18-12-26-utc.jpg","keywords":["development","programming"],"articleSection":["Blog Post","Engineering Practices"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.infobip.com\/developers\/blog\/seniors-working-on-a-legacy-project","url":"https:\/\/www.infobip.com\/developers\/blog\/seniors-working-on-a-legacy-project","name":"Don't call yourself a senior until you've worked on a legacy project","isPartOf":{"@id":"https:\/\/www.infobip.com\/developers\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.infobip.com\/developers\/blog\/seniors-working-on-a-legacy-project#primaryimage"},"image":{"@id":"https:\/\/www.infobip.com\/developers\/blog\/seniors-working-on-a-legacy-project#primaryimage"},"thumbnailUrl":"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2023\/03\/antique-manometers-measuring-instruments-with-cont-2021-08-26-18-12-26-utc.jpg","datePublished":"2023-03-16T10:53:16+00:00","dateModified":"2023-09-11T14:30:02+00:00","description":"Everybody hates working on legacy projects, me as well. Working on one, however, helped me get a deeper understanding of the dev process.","breadcrumb":{"@id":"https:\/\/www.infobip.com\/developers\/blog\/seniors-working-on-a-legacy-project#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.infobip.com\/developers\/blog\/seniors-working-on-a-legacy-project"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.infobip.com\/developers\/blog\/seniors-working-on-a-legacy-project#primaryimage","url":"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2023\/03\/antique-manometers-measuring-instruments-with-cont-2021-08-26-18-12-26-utc.jpg","contentUrl":"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2023\/03\/antique-manometers-measuring-instruments-with-cont-2021-08-26-18-12-26-utc.jpg","width":1200,"height":800,"caption":"Antique manometers measuring instruments with control valves. Vintage equipment. Horizontal"},{"@type":"BreadcrumbList","@id":"https:\/\/www.infobip.com\/developers\/blog\/seniors-working-on-a-legacy-project#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.infobip.com\/developers\/"},{"@type":"ListItem","position":2,"name":"You can&#8217;t call yourself a senior until you&#8217;ve worked on a legacy project"}]},{"@type":"WebSite","@id":"https:\/\/www.infobip.com\/developers\/#website","url":"https:\/\/www.infobip.com\/developers\/","name":"Infobip Developers Hub","description":"Build meaningful customer relationships across any channel","publisher":{"@id":"https:\/\/www.infobip.com\/developers\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.infobip.com\/developers\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.infobip.com\/developers\/#organization","name":"Infobip Developers Hub","url":"https:\/\/www.infobip.com\/developers\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.infobip.com\/developers\/#\/schema\/logo\/image\/","url":"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2023\/03\/Infobip_logo_favicon.png","contentUrl":"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2023\/03\/Infobip_logo_favicon.png","width":696,"height":696,"caption":"Infobip Developers Hub"},"image":{"@id":"https:\/\/www.infobip.com\/developers\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/infobip\/","https:\/\/x.com\/InfobipDev","https:\/\/www.youtube.com\/channel\/UCUPSTy53VecI5GIir3J3ZbQ","https:\/\/github.com\/infobip-community"]},{"@type":"Person","@id":"https:\/\/www.infobip.com\/developers\/#\/schema\/person\/31b120f4d24c734e6fd27681b0a0510d","name":"Alen Kosanovic","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.infobip.com\/developers\/#\/schema\/person\/image\/20b7763781ec59811d4a07b57b88def4","url":"https:\/\/secure.gravatar.com\/avatar\/1f800e46e256ff03fcb75817f407fa284411cbdaac405ad6a2dc234bf7537c76?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1f800e46e256ff03fcb75817f407fa284411cbdaac405ad6a2dc234bf7537c76?s=96&d=mm&r=g","caption":"Alen Kosanovic"},"description":"Alen is a senior software developer at Infobip, with almost a decade of experience in pursuing clean code. When he's not at the keyboard, he wanders around the world with his family.","sameAs":["https:\/\/www.linkedin.com\/in\/kosani\/"],"url":"https:\/\/www.infobip.com\/developers\/blog\/author\/alen-kosanovic"}]}},"_links":{"self":[{"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/posts\/1676","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/users\/36"}],"replies":[{"embeddable":true,"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/comments?post=1676"}],"version-history":[{"count":12,"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/posts\/1676\/revisions"}],"predecessor-version":[{"id":2508,"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/posts\/1676\/revisions\/2508"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/media\/1677"}],"wp:attachment":[{"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/media?parent=1676"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/categories?post=1676"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/tags?post=1676"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/coauthors?post=1676"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}