{"id":480,"date":"2025-04-30T09:00:00","date_gmt":"2025-04-29T23:00:00","guid":{"rendered":"https:\/\/jm.armijo.au\/dev\/?p=480"},"modified":"2025-04-29T19:57:28","modified_gmt":"2025-04-29T09:57:28","slug":"proficient-vs-senior","status":"publish","type":"post","link":"https:\/\/jm.armijo.au\/dev\/blog\/2025\/04\/30\/proficient-vs-senior\/","title":{"rendered":"Proficient vs Senior"},"content":{"rendered":"\n<p>I recently read a post in LinkedIn claiming that the difference between junior and senior developers is how we check if a number is even or odd (I was unable to find that post again to share the link). According to this post, junior developers would do something like:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-keyword\">if<\/span> number % <span class=\"hljs-number\">2<\/span> == <span class=\"hljs-number\">0<\/span>\n  <span class=\"hljs-keyword\">print<\/span> <span class=\"hljs-string\">\"even\"<\/span>\n<span class=\"hljs-keyword\">else<\/span>\n  <span class=\"hljs-keyword\">print<\/span> <span class=\"hljs-string\">\"odd\"<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>And that instead, senior developers (like this person) would use a bitwise operator to find this out, like this:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-keyword\">if<\/span> number &amp; <span class=\"hljs-number\">1<\/span> == <span class=\"hljs-number\">0<\/span>\n  <span class=\"hljs-keyword\">print<\/span> <span class=\"hljs-string\">\"even\"<\/span>\n<span class=\"hljs-keyword\">else<\/span>\n  <span class=\"hljs-keyword\">print<\/span> <span class=\"hljs-string\">\"odd\"<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>In my opinion, this is definitely <strong>not<\/strong> an indicator of whether someone is junior or senior. And in fact, I think that only a junior engineer would believe such a claim.<\/p>\n\n\n\n<p>Usually, proficient developers are also senior developers, so it may be easy to use the term interchangeably, but they are not the same. A proficient developer is someone who has a deep technical knowledge, while a senior developer has enough experience to balance trade-offs like when code needs to be optimised.<\/p>\n\n\n\n<p>Using bitwise operators is way more performant than checking the modulo value of a number. But a more efficient solution is not always the best.<\/p>\n\n\n\n<p>In my article &#8220;Premature Code Optimisation&#8221;, I explained how we should identify our bottlenecks before trying to optimise some code. If our product must do an &#8220;even&#8221; check for so many numbers that it can become a problem, then some optimisation may be in order.<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-practical-software-development wp-block-embed-practical-software-development\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"4f8fJDRfUw\"><a href=\"https:\/\/jm.armijo.au\/dev\/blog\/2025\/04\/16\/premature-code-optimisation\/\">Premature Code Optimisation<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; visibility: hidden;\" title=\"&#8220;Premature Code Optimisation&#8221; &#8212; Practical Software Development\" src=\"https:\/\/jm.armijo.au\/dev\/blog\/2025\/04\/16\/premature-code-optimisation\/embed\/#?secret=8Elf127mjo#?secret=4f8fJDRfUw\" data-secret=\"4f8fJDRfUw\" width=\"500\" height=\"282\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n\n\n\n<p>However, I would claim that checking <code>number % 2<\/code> is universally understood as checking for an even number. Doing anything different than that would obfuscate the code and make it harder to read (at least for &#8220;junior&#8221; engineers, as the author of that post claimed). Additionally, some compilers are quite smart and make the processing very efficient, so even code that may look inefficient may be as fast as the more &#8220;senior&#8221; way of writing it.<\/p>\n\n\n\n<p>This is important because software developers spend most of our time reading code, not writing it. We need to understand the code at hand so we can change it according to specifications. And things like this do make the code harder to read.<\/p>\n\n\n\n<p>In any case, irrespective of the approach we take, I would definitely advise creating an <code>is_even<\/code> function so we can hide the implementation details.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<p>I am a software developer because I really enjoy writing code and learning new hacks, but I&#8217;ve also learnt that we need to know when is the right time to use them. Particularly, a senior developer doesn&#8217;t do unnecessary optimisations at the cost of readability.<\/p>\n\n\n\n<p>Happy coding!<br>Jos\u00e9 Miguel<\/p>\n\n\n\n<p><em>Share if you find this content useful, and Follow me on&nbsp;<a href=\"http:\/\/www.linkedin.com\/comm\/mynetwork\/discovery-see-all?usecase=PEOPLE_FOLLOWS&amp;followMember=jmarmijo\">LinkedIn<\/a>&nbsp;to be notified of new articles.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>I recently read a post in LinkedIn claiming that the difference between junior and senior developers is how we check if a number is even or odd (I was unable to find that post again to share the link). According to this post, junior developers would do something like: And that instead, senior developers (like [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":482,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[55],"tags":[53,54],"class_list":["post-480","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-coding","tag-coding","tag-senior"],"_links":{"self":[{"href":"https:\/\/jm.armijo.au\/dev\/wp-json\/wp\/v2\/posts\/480","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jm.armijo.au\/dev\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jm.armijo.au\/dev\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jm.armijo.au\/dev\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/jm.armijo.au\/dev\/wp-json\/wp\/v2\/comments?post=480"}],"version-history":[{"count":4,"href":"https:\/\/jm.armijo.au\/dev\/wp-json\/wp\/v2\/posts\/480\/revisions"}],"predecessor-version":[{"id":484,"href":"https:\/\/jm.armijo.au\/dev\/wp-json\/wp\/v2\/posts\/480\/revisions\/484"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/jm.armijo.au\/dev\/wp-json\/wp\/v2\/media\/482"}],"wp:attachment":[{"href":"https:\/\/jm.armijo.au\/dev\/wp-json\/wp\/v2\/media?parent=480"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jm.armijo.au\/dev\/wp-json\/wp\/v2\/categories?post=480"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jm.armijo.au\/dev\/wp-json\/wp\/v2\/tags?post=480"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}