{"id":766,"date":"2020-05-24T19:05:02","date_gmt":"2020-05-24T19:05:02","guid":{"rendered":"https:\/\/www.juniorjavadeveloper.pl\/?p=766"},"modified":"2023-11-28T20:43:04","modified_gmt":"2023-11-28T20:43:04","slug":"ja-chce-pisac-tylko-kod-nie-interesuja-mnie-wymagania-biznesowe","status":"publish","type":"post","link":"https:\/\/www.juniorjavadeveloper.pl\/en\/2020\/05\/24\/ja-chce-pisac-tylko-kod-nie-interesuja-mnie-wymagania-biznesowe\/","title":{"rendered":"I only want to write code, I don't care about business requirements!"},"content":{"rendered":"<p class=\"has-large-font-size wp-block-paragraph\">In this article, I will discuss a very important topic that may seem insignificant to a beginner programmer. It's about business requirements, i.e. how the system being created should work or how an existing system works according to the person who commissions it to be written. Often, how the system is supposed to work is not important to the programmer and does not go hand in hand with his vision, which is a serious problem and leads to many misunderstandings.<\/p>\n\n\n    <style>\r\n        .wpj-jtoc.--jtoc-theme-basic-light.--jtoc-has-custom-styles {\r\n            --jtoc-numeration-suffix: \". \";\n--jtoc-numeration-color: #adadad;\n        }\r\n\r\n            <\/style>\r\n\r\n\r\n\r\n<div id=\"wpj-jtoc\" class=\"wpj-jtoc wpj-jtoc--main --jtoc-the-content --jtoc-theme-basic-light --jtoc-title-align-left --jtoc-toggle-icon --jtoc-toggle-position-right --jtoc-toggle-1 --jtoc-has-numeration --jtoc-has-custom-styles --jtoc-is-unfolded\" >\r\n\r\n    \r\n    <!-- TOC -->\r\n    <div class=\"wpj-jtoc--toc\">\r\n                                <div class=\"wpj-jtoc--header\">\r\n                <div class=\"wpj-jtoc--header-main\">\r\n                                        <div class=\"wpj-jtoc--title\">\r\n                        <span class=\"wpj-jtoc--title-label\">Table of Contents<\/span>\r\n                    <\/div>\r\n                                                                <div class=\"wpj-jtoc--toggle-wrap\">\r\n                                                                                                                    <div class=\"wpj-jtoc--toggle-box\">\r\n                                    <div class=\"wpj-jtoc--toggle\"><\/div>\r\n                                <\/div>\r\n                                                    <\/div>\r\n                                    <\/div>\r\n            <\/div>\r\n                            <div class=\"wpj-jtoc--body\">\r\n                        <nav class=\"wpj-jtoc--nav\">\r\n                <ol class=\"wpj-jtoc--items\"><li class=\"wpj-jtoc--item --jtoc-h2\">\r\n        <div class=\"wpj-jtoc--item-content\" data-depth=\"2\">\r\n                <a href=\"#kim-jest-osoba-ktora-zleca-napisanie-oprogramowania\" title=\"Who is the person who orders the software to be written?\" data-numeration=\"1\">Who is the person who orders the software to be written?<\/a>\r\n                    <\/div> <\/li><li class=\"wpj-jtoc--item --jtoc-h2\">\r\n        <div class=\"wpj-jtoc--item-content\" data-depth=\"2\">\r\n                <a href=\"#co-to-sa-wymagania-biznesowe\" title=\"What are business requirements?\" data-numeration=\"2\">What are business requirements?<\/a>\r\n                    <\/div> <ol class=\"wpj-jtoc--items\"><li class=\"wpj-jtoc--item --jtoc-h3\">\r\n        <div class=\"wpj-jtoc--item-content\" data-depth=\"3\">\r\n                <a href=\"#zrodla-wymagan-biznesowych\" title=\"Sources of business requirements\" data-numeration=\"2.1\">Sources of business requirements<\/a>\r\n                    <\/div> <\/li><li class=\"wpj-jtoc--item --jtoc-h3\">\r\n        <div class=\"wpj-jtoc--item-content\" data-depth=\"3\">\r\n                <a href=\"#dlaczego-wymagania-biznesowe-sa-tak-wazne\" title=\"Why are business requirements so important?\" data-numeration=\"2.2\">Why are business requirements so important?<\/a>\r\n                    <\/div> <\/li><\/ol><\/li><li class=\"wpj-jtoc--item --jtoc-h2\">\r\n        <div class=\"wpj-jtoc--item-content\" data-depth=\"2\">\r\n                <a href=\"#co-programista-robi-z-wymaganiami-biznesowymi\" title=\"What does the developer do with the business requirements?\" data-numeration=\"3\">What does the developer do with the business requirements?<\/a>\r\n                    <\/div> <ol class=\"wpj-jtoc--items\"><li class=\"wpj-jtoc--item --jtoc-h3\">\r\n        <div class=\"wpj-jtoc--item-content\" data-depth=\"3\">\r\n                <a href=\"#nie-rozumie-wymagan\" title=\"Does not understand the requirements\" data-numeration=\"3.1\">Does not understand the requirements<\/a>\r\n                    <\/div> <\/li><li class=\"wpj-jtoc--item --jtoc-h3\">\r\n        <div class=\"wpj-jtoc--item-content\" data-depth=\"3\">\r\n                <a href=\"#rozumie-wymagania\" title=\"Understand the requirements\" data-numeration=\"3.2\">Understand the requirements<\/a>\r\n                    <\/div> <\/li><\/ol><\/li><li class=\"wpj-jtoc--item --jtoc-h2\">\r\n        <div class=\"wpj-jtoc--item-content\" data-depth=\"2\">\r\n                <a href=\"#porady-dla-programisty\" title=\"Tips for the programmer\" data-numeration=\"4\">Tips for the programmer<\/a>\r\n                    <\/div> <\/li><\/ol>            <\/nav>\r\n                    <\/div>\r\n    <\/div>\r\n<\/div>\r\n\n\n\n<h2 class=\"wp-block-heading joli-heading jtoc-heading\" id=\"kim-jest-osoba-ktora-zleca-napisanie-oprogramowania\">Who is the person who orders the software to be written?<\/h2>\n\n\n\n<p class=\"has-large-font-size wp-block-paragraph\">Zanim przejd&#281; do wyja&#347;nienia poj&#281;cia wymaganie biznesowe, odpowiem na pytanie <strong>kim jest osoba, kt&oacute;ra zleca napisanie oprogramowania, systemu?<\/strong> Mo&#380;e, to by&#263; dowolna osoba dla, kt&oacute;rej tworzymy system np. nasz pracodawca, firma, do kt&oacute;rej zostali&#347;my oddelegowani w ramach outsourcingu, gdzie pracujemy jako podwykonawca. Zazwyczaj jest, to osoba nie posiadaj&#261;ca rozleg&#322;ej wiedzy technicznej, ale wie jak ma dzia&#322;a&#263; system, moim zdaniem, to bardzo dobrze, &#380;e jest, to osoba nietechniczna, bo taka osoba nie patrzy przez pryzmat &ldquo;ogranicze&#324;&rdquo; j&#281;zyka programowania czy framework&rsquo;a.<\/p>\n\n\n\n<h2 class=\"wp-block-heading joli-heading jtoc-heading\" id=\"co-to-sa-wymagania-biznesowe\">What are business requirements?<\/h2>\n\n\n\n<p class=\"has-large-font-size wp-block-paragraph\">Business requirements are assumptions about the functions that the system to be created is to perform, e.g. making transfers in the banking system, opening a currency account. To understand business requirements, you need to understand the system being created, e.g. a bank transfer requires knowledge in a field related to banking, such as account, transfer, interest, capitalization. <\/p>\n\n\n\n<h3 class=\"wp-block-heading joli-heading jtoc-heading\" id=\"zrodla-wymagan-biznesowych\">Sources of business requirements<\/h3>\n\n\n\n<p class=\"has-large-font-size wp-block-paragraph\">You can acquire such knowledge yourself by reading various books and guides, but it is a long way and does not necessarily end in success. The second way is to simply communicate within the team with a business analyst who should explain how the system works in terms of bank transfer.<\/p>\n\n\n\n<p class=\"has-large-font-size wp-block-paragraph\">Ten drugi spos&oacute;b, komunikacja w zespole jest w 90% przypadk&oacute;w wymagany od programist&oacute;w, dawno ju&#380; min&#281;&#322;y czasy, w kt&oacute;rych, to programista &ldquo;zamyka&#322; si&#281; w piwnicy, pisa&#322; magiczny kod&rdquo; i inni musieli by&#263; zachwyceni z efekt&oacute;w jego pracy, bo u&#380;y&#322; w kodzie najnowszych element&oacute;w danego j&#281;zyka programowania. Tak, to nie dzia&#322;a, wi&#281;cej o komunikacji w zespole i umiej&#281;tno&#347;ciach mi&#281;kkich pisa&#322;em w <a rel=\"noreferrer noopener\" aria-label=\"Junior Java Developer umiej&#281;tno&#347;ci techniczne, a umiej&#281;tno&#347;ci mi&#281;kkie (otwiera si&#281; na nowej zak&#322;adce)\" href=\"https:\/\/www.juniorjavadeveloper.pl\/en\/2020\/02\/01\/junior-java-developer-umiejetnosci-techniczne-a-umiejetnosci-miekkie\/\" target=\"_blank\">Junior Java Developer umiej&#281;tno&#347;ci techniczne, a umiej&#281;tno&#347;ci mi&#281;kkie<\/a>. Programista musi rozumie&#263; dziedzin&#281; tworzonego systemu inaczej nie b&#281;dzie w stanie napisa&#263; dobrego systemu.<\/p>\n\n\n\n<h3 class=\"wp-block-heading joli-heading jtoc-heading\" id=\"dlaczego-wymagania-biznesowe-sa-tak-wazne\">Why are business requirements so important?<\/h3>\n\n\n\n<p class=\"has-large-font-size wp-block-paragraph\">Please remember that in 99% of cases we write code for someone else, unless we create our own system, e.g. in a start-up. A programming language and the code created in it are only a tool for implementing business requirements. The role of a programmer is to create high-quality code that meets the assumed business requirements.<\/p>\n\n\n\n<h2 class=\"wp-block-heading joli-heading jtoc-heading\" id=\"co-programista-robi-z-wymaganiami-biznesowymi\">What does the developer do with the business requirements?<\/h2>\n\n\n\n<p class=\"has-large-font-size wp-block-paragraph\">Now that we know how important business requirements and communication with the person ordering the system are, I will now present an example of what will happen if the programmer does not thoroughly understand the business requirement and writes a given system function. Let's imagine that a programmer is tasked with writing code that performs a foreign transfer in a foreign currency.<\/p>\n\n\n\n<h3 class=\"wp-block-heading joli-heading jtoc-heading\" id=\"nie-rozumie-wymagan\">Does not understand the requirements<\/h3>\n\n\n\n<p class=\"has-large-font-size wp-block-paragraph translation-block\">I will now describe a variant in which the programmer did not understand the business requirements and therefore does not know the domain of the system. The programmer created the code responsible for the foreign transfer. To perform the transfer operation, I need information about two accounts: the first one from which we transfer the money and the second one to which we transfer the money. For the first account, check whether the customer has funds in the account, this is obvious and has been well implemented. The programmer also thought about the fact that transfers can be made on banking days.<\/p>\n\n\n\n<p class=\"has-large-font-size wp-block-paragraph\">As you can see, one business requirement conceals two more, this is always the case, rarely is one requirement so simple that it does not require the implementation of other elements. The programmer returns the implemented foreign transfers, and during the tests, errors in the code itself as well as errors in the business logic are revealed; the latter are as important as the former. The programmer receives information that the transfer has not been converted correctly because each foreign transfer must first be converted into Euro and then into the target currency, e.g. a transfer from PLN to USD requires conversion of PLN to EUR and then EUR to USD. <\/p>\n\n\n\n<p class=\"has-large-font-size wp-block-paragraph\">The programmer did not know this because he did not delve deeply into the business requirements and\/or did not understand the field of the system being created. What are the consequences of such incorrect implementation of any functionality in the system? Firstly, the financial consequences if such functionality were made available to the public, where the bank has hundreds of thousands of customers. In addition, longer implementation time, repeated implementation, deployment and testing paths, which involves different people. Additionally, if such a situation repeats more often, it may result in a decline in the reputation of a given programmer.<\/p>\n\n\n\n<h3 class=\"wp-block-heading joli-heading jtoc-heading\" id=\"rozumie-wymagania\">Understand the requirements<\/h3>\n\n\n\n<p class=\"has-large-font-size wp-block-paragraph translation-block\">The <strong>variant in which the developer understood the business requirements<\/strong> simply does not have the negative consequences described above. Additionally, a programmer who has already understood a part of the system will more easily absorb subsequent business requirements and will better understand the field of the system being created.<\/p>\n\n\n\n<p class=\"has-large-font-size wp-block-paragraph\">Please remember that business requirements for the system being created change over time and what was valid yesterday may need to be changed tomorrow. Therefore, a programmer must know the programming language very well to adapt to the changing business requirements for a given system. The programmer's goal is not programming itself and using the latest technologies at all costs, his goal is to implement a working system in accordance with business requirements.<\/p>\n\n\n\n<h2 class=\"wp-block-heading joli-heading jtoc-heading\" id=\"porady-dla-programisty\">Tips for the programmer<\/h2>\n\n\n\n<p class=\"has-large-font-size wp-block-paragraph\">What should be done in the future to avoid such situations? You should definitely focus on understanding the field of the system being created, cooperate with business analysts or people who have business knowledge about the system being created. Additionally, the programmer must hone his skills in a given programming language so that he can later easily translate business requirements into a programming language.<\/p>\n\n\n\n<p class=\"has-large-font-size wp-block-paragraph translation-block\">Regarding creating a system according to business requirements, the ideal approach would be <a rel=\"noreferrer noopener\" aria-label=\"Domain-Driven Design - DDD (opens in a new tab)\" href=\"https:\/\/en.wikipedia. org\/wiki\/Domain-driven_design\" target=\"_blank\">Domain-Driven Design \u2013 DDD<\/a>. When it comes to honing your skills as a programmer, you should complete as many exercises and tutorials related to the technology and language currently used as possible. You can also use <a rel=\"noreferrer noopener\" aria-label=\"www.codewars.com (opens in a new tab)\" href=\"http:\/\/www.codewars.com\" target=\"_blank\">www .codewars.com<\/a>, where you can practice programming skills through tasks and compete with other programmers. I also recommend <a rel=\"noreferrer noopener\" href=\"https:\/\/challengerocket.com\/\" target=\"_blank\">https:\/\/challengerocket.com\/<\/a> \u2013 Solve a SkillChallenge and get immediate feedback to see if you qualify for the recruitment process. All done remotely.<\/p>\n\n\n\n<p class=\"has-large-font-size wp-block-paragraph\">As you can see, business requirements are a very important element of the IT system being created.<\/p>\n\n\n\n<figure class=\"wp-block-embed aligncenter is-type-wp-embed is-provider-poradnik-dla-przysz-ych-junior-java-developer-039-w wp-block-embed-poradnik-dla-przysz-ych-junior-java-developer-039-w\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"Q0lH7LROei\"><a href=\"https:\/\/www.juniorjavadeveloper.pl\/en\/kontakt\/\">Contact<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; visibility: hidden;\" title=\"&bdquo;Kontakt&rdquo; &mdash; Poradnik dla przysz&#322;ych Junior Java Developer&amp;apos;&oacute;w\" src=\"https:\/\/www.juniorjavadeveloper.pl\/kontakt\/embed\/#?secret=5Y3DaWSNIz#?secret=Q0lH7LROei\" data-secret=\"Q0lH7LROei\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n\n\n\n<figure class=\"wp-block-embed aligncenter is-type-wp-embed is-provider-poradnik-dla-przysz-ych-junior-java-developer-039-w wp-block-embed-poradnik-dla-przysz-ych-junior-java-developer-039-w\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"ns1jhrSyI5\"><a href=\"https:\/\/www.juniorjavadeveloper.pl\/en\/mentoring-rezerwuj-termin\/\">Mentoring - book an appointment<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; visibility: hidden;\" title=\"&bdquo;Mentoring &ndash; rezerwuj termin&rdquo; &mdash; Poradnik dla przysz&#322;ych Junior Java Developer&amp;apos;&oacute;w\" src=\"https:\/\/www.juniorjavadeveloper.pl\/mentoring-rezerwuj-termin\/embed\/#?secret=HvAuf1TV88#?secret=ns1jhrSyI5\" data-secret=\"ns1jhrSyI5\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>","protected":false},"excerpt":{"rendered":"<p>W tym artykule porusz\u0119 bardzo wa\u017cny temat, kt\u00f3ry dla pocz\u0105tkuj\u0105cego programisty, programistki mo\u017ce wydawa\u0107 si\u0119 ma\u0142o istotny. Chodzi o wymagania biznesowe, czyli to, jak ma dzia\u0142a\u0107 tworzony system lub jak dzia\u0142a istniej\u0105cy system wed\u0142ug osoby, kt\u00f3ra zleca jego napisanie. Cz\u0119sto, to jak ma dzia\u0142a\u0107 system nie jest istotne dla programisty, programistki oraz nie idzie w [&hellip;]<\/p>","protected":false},"author":1,"featured_media":802,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_ppp_document_settings_meta":"","footnotes":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[6,2,7],"tags":[],"class_list":["post-766","post","type-post","status-publish","format-standard","has-post-thumbnail","category-felieton","category-poczatkujacy","category-poradnik"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/www.juniorjavadeveloper.pl\/wp-content\/uploads\/2020\/05\/tylko-kod_wymagania-biznesowe_naglowek-ss.jpg","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.juniorjavadeveloper.pl\/en\/wp-json\/wp\/v2\/posts\/766","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.juniorjavadeveloper.pl\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.juniorjavadeveloper.pl\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.juniorjavadeveloper.pl\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.juniorjavadeveloper.pl\/en\/wp-json\/wp\/v2\/comments?post=766"}],"version-history":[{"count":19,"href":"https:\/\/www.juniorjavadeveloper.pl\/en\/wp-json\/wp\/v2\/posts\/766\/revisions"}],"predecessor-version":[{"id":3781,"href":"https:\/\/www.juniorjavadeveloper.pl\/en\/wp-json\/wp\/v2\/posts\/766\/revisions\/3781"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.juniorjavadeveloper.pl\/en\/wp-json\/wp\/v2\/media\/802"}],"wp:attachment":[{"href":"https:\/\/www.juniorjavadeveloper.pl\/en\/wp-json\/wp\/v2\/media?parent=766"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.juniorjavadeveloper.pl\/en\/wp-json\/wp\/v2\/categories?post=766"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.juniorjavadeveloper.pl\/en\/wp-json\/wp\/v2\/tags?post=766"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}