{"id":5,"date":"2013-05-13T18:46:13","date_gmt":"2013-05-13T18:46:13","guid":{"rendered":"http:\/\/aurelio.audero.it\/blog\/?p=5"},"modified":"2016-06-04T00:21:34","modified_gmt":"2016-06-04T00:21:34","slug":"learning-curve-what-it-is-and-how-it-applies-to-information-technology","status":"publish","type":"post","link":"https:\/\/www.audero.it\/blog\/2013\/05\/13\/learning-curve-what-it-is-and-how-it-applies-to-information-technology\/","title":{"rendered":"Learning Curve: What it is and How it Applies to Information Technology"},"content":{"rendered":"<p>The terms &#8220;learning curve&#8221; and &#8220;steep learning curve&#8221; are often talked and written in Computer Science. At the time I could not understand deeply those terms, every time I found them I felt like I was missing something that all programmers except me already knew. After, I realised that there are a lot of people that misused them in discussions and forum and this fact created a clutter. In this article I&#8217;ll explain what these terms means and how they can be applied to <abbr title=\"Information Technology\">IT<\/abbr>.<br \/>\n<!--more--><\/p>\n<h2>What&#8217;s the learning curve<\/h2>\n<p>The term &#8220;learning curve&#8221; has been created by Hermann Ebbinghaus, a German psychologist, during his research on memory and memorization at the end of 1800. In detail, he talked about learning curve in his work called <a href=\"http:\/\/nwkpsych.rutgers.edu\/~jose\/courses\/578_mem_learn\/2012\/readings\/Ebbinghaus_1885.pdf\" target=\"_blank\">Memory: A Contribution to Experimental Psychology<\/a>.<\/p>\n<p>The learning curve is a concept that measures how an average person can learn something or achieve a task. This fact implies that some people may learn faster or slower than others depending on their different backgrounds and attitudes. In the <abbr title=\"Information Technology\">IT<\/abbr> field, the term usually refers to the ability to learn and master a new technology or a programming language. This concept leads to a graphical representation that has Time and Proficiency on the X and Y axes respectively. As I said before, the concept is often misused. Infact, since in most cases a steep line means something that is hard, many people believe that a steep learning curve means that the technology or the programming language is more difficult to learn. This is wrong. If you see a graph, you&#8217;ll soon understand that a steep curve means that a beginner can gain knowledge quickly and that his required resource investment is initially low. How quickly may vary from minutes to days or even months; it really depends on the topic taken into account. However, the point here is to understand that a steep learning curve means that the time-to-learn is restricted and the person involved can quickly use his acquired knowledge.<\/p>\n<p>Just to be less abstract, I&#8217;ll show you an example which uses the famous game Tic-Tac-Toe. All of you have played this game at least once in life and, more probably than not, most of you learned to play it during the childhood. This fact already says a lot about what is the learning curve of this game. However, to keep it simple, I have fixed the stages of this game in just three steps: learn rules, play like a beginner and play like a pro. In conclusion, the graph that represents the learning curve resembles to the following.<\/p>\n<p><a href=\"http:\/\/aurelio.audero.it\/blog\/wp-content\/uploads\/2013\/05\/tic-tac-toe-learning-curve.png\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"7\" data-permalink=\"https:\/\/www.audero.it\/blog\/2013\/05\/13\/learning-curve-what-it-is-and-how-it-applies-to-information-technology\/tic-tac-toe-learning-curve\/\" data-orig-file=\"https:\/\/www.audero.it\/blog\/wp-content\/uploads\/2013\/05\/tic-tac-toe-learning-curve.png\" data-orig-size=\"350,300\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}\" data-image-title=\"Tic Tac Toe learning curve\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/www.audero.it\/blog\/wp-content\/uploads\/2013\/05\/tic-tac-toe-learning-curve.png\" class=\"aligncenter size-full wp-image-7\" alt=\"Tic Tac Toe learning curve\" src=\"\/\/aurelio.audero.it\/blog\/wp-content\/uploads\/2013\/05\/tic-tac-toe-learning-curve.png\" width=\"350\" height=\"300\" srcset=\"https:\/\/www.audero.it\/blog\/wp-content\/uploads\/2013\/05\/tic-tac-toe-learning-curve.png 350w, https:\/\/www.audero.it\/blog\/wp-content\/uploads\/2013\/05\/tic-tac-toe-learning-curve-300x257.png 300w\" sizes=\"auto, (max-width: 350px) 100vw, 350px\" \/><\/a><\/p>\n<p>From another point of view, the learning curve can be seen as the representation of the initial difficulty of learning something and how many notions are to be learned after the beginning. To understand this sentence, take into account two Windows visual editor: Notepad and Notepad++. The first is very easy to understand and master. However, once you have learned the basics, there is nothing more you can do with it. Conversely, Notepad++ is a little bit more complicated to start with but it has a lot of features you have to learn before you can really master it after starting to use it.<\/p>\n<p>In general, the learning curve can be summarized by the following image.<\/p>\n<p><a href=\"http:\/\/aurelio.audero.it\/blog\/wp-content\/uploads\/2013\/05\/general-learning-curve.png\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"8\" data-permalink=\"https:\/\/www.audero.it\/blog\/2013\/05\/13\/learning-curve-what-it-is-and-how-it-applies-to-information-technology\/general-learning-curve\/\" data-orig-file=\"https:\/\/www.audero.it\/blog\/wp-content\/uploads\/2013\/05\/general-learning-curve.png\" data-orig-size=\"350,300\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}\" data-image-title=\"General learning curve\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/www.audero.it\/blog\/wp-content\/uploads\/2013\/05\/general-learning-curve.png\" class=\"aligncenter size-full wp-image-8\" alt=\"An example of a general learning curve\" src=\"\/\/aurelio.audero.it\/blog\/wp-content\/uploads\/2013\/05\/general-learning-curve.png\" width=\"350\" height=\"300\" srcset=\"https:\/\/www.audero.it\/blog\/wp-content\/uploads\/2013\/05\/general-learning-curve.png 350w, https:\/\/www.audero.it\/blog\/wp-content\/uploads\/2013\/05\/general-learning-curve-300x257.png 300w\" sizes=\"auto, (max-width: 350px) 100vw, 350px\" \/><\/a><\/p>\n<h2>How Learning Curve Applies to IT<\/h2>\n<p>The <a href=\"http:\/\/www.bcg.com\" target=\"_blank\">Boston Consulting Group<\/a> conducted some empirical studies and, in their publication <a href=\"http:\/\/interfaces.journal.informs.org\/content\/12\/5\/50.short\" target=\"_blank\">Competitive cost dynamics: the experience curve<\/a> (Hax, Arnoldo C.; Majluf, Nicolas S. &#8211; October 1982) asserted, among other interesting conclusions, that <q>the time required to perform a task decreases as the task is repeated<\/q>. What seems to come out from this statement is that an experienced developer can write more code than a beginner due to his experience and his repeated tasks. Although I think this is true, I just look at the fact that a pro doesn&#8217;t repeatedly search for functions that fit his needs or read about a function signature to look at the accepted parameters; I think the main lesson that could be extracted is that an experienced developer can write <em>better<\/em> code than the beginner. With the term <em>better<\/em>, I mean both with less bugs and that can achieve the same goal with fewer lines of code.<\/p>\n<p>Another interesting discussion is about the learning curve of programming languages. Each of us, for different reasons, has dealt with learning a new programming language and felt that there are some languages more &#8220;easy&#8221; to learn than others. That was not just a feeling, actually they are easier. However, chances there are that it was not easier itself but you felt it because you were really interested in and motivated and this influenced your learning performance. In the following list I&#8217;ll show some of the most famous programming languages and their learning curve.<\/p>\n<ul>\n<li>PHP: It has a very steep curve. In few time a programmer is able to write code and with little more study he&#8217;s able to build a medium-level website. It&#8217;s very recommended for those who want to start programming for the web. Its learning curve is one of the main reasons that explains why <a href=\"http:\/\/w3techs.com\/technologies\/overview\/programming_language\/all\" target=\"_blank\">PHP has ~79% market share<\/a>.<\/li>\n<li>C++: it has a flat learning curve. The main &#8220;problem&#8221; of C++ is that it has both high-level abstraction mechanisms such as Classes and Interfaces and low-level memory management mechanisms such as pointers. So, it isn&#8217;t easy to master it.<\/li>\n<li>Java: It has a medium curve at the beginning but it becomes more flat as the programmer advances in topics. A programmer can start writing a basic program in few times also because, unlike C++, he hasn&#8217;t managed the memory himself. However, to master the language he has to learn a lot of stuff like Generics and Reflection.<\/li>\n<li>C#: This language has, more or less, the same learning curve of Java since they have a lot in common. However, one advantage of C# is in its main <abbr title=\"Integrated development environment\">IDE<\/abbr>, Visual Studio. The latter makes the learning curve for C# a little more steep because it provides great features to the programmer and allows him to write the code faster.<\/li>\n<\/ul>\n<h2>Conclusions<\/h2>\n<p>Throughout this article you learned what is a learning curve and what parameters determine it. Learning curve theory is present in every task of our life, software development too. Remember that those curves are calculated on the average user so you can be faster or slower depending on your smartness, background or willingness. Moreover, I showed which are the misconceptions about a steep learning curve and how they apply to IT, especially in learning a new programming language.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The terms &#8220;learning curve&#8221; and &#8220;steep learning curve&#8221; are often talked and written in Computer Science. At the time I could not understand deeply those terms, every time I found them I felt like I was missing something that all programmers except me already knew. After, I realised that there are a lot of people that misused them in discussions and forum and this fact created a clutter. In this article I&#8217;ll explain what these terms means and how they can be applied to <abbr title=\"Information Technology\">IT<\/abbr>.<\/p>\n","protected":false},"author":1,"featured_media":44,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[7],"tags":[],"class_list":["post-5","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-discussions-opinions"],"jetpack_featured_media_url":"https:\/\/www.audero.it\/blog\/wp-content\/uploads\/2013\/05\/general-learning-curve-100x1001.jpg","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p9Or4e-5","jetpack-related-posts":[{"id":329,"url":"https:\/\/www.audero.it\/blog\/2014\/09\/19\/resources-beginner-front-end-developers\/","url_meta":{"origin":5,"position":0},"title":"Resources for Beginner Front-end Developers","author":"Aurelio De Rosa","date":"September 19, 2014","format":false,"excerpt":"Few weeks ago I received an email from a developer asking me for suggestions on how to delve into the front-end world. After having replied to this email, I thought that it'd have been nice to share the same suggestions on my blog. That's exactly what you'll find in this\u2026","rel":"","context":"In &quot;Discussions &amp; Opinions&quot;","block_context":{"text":"Discussions &amp; Opinions","link":"https:\/\/www.audero.it\/blog\/category\/discussions-opinions\/"},"img":{"alt_text":"html5 css3 javascript logos","src":"https:\/\/i0.wp.com\/www.audero.it\/blog\/wp-content\/uploads\/2014\/09\/front-end-stack.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.audero.it\/blog\/wp-content\/uploads\/2014\/09\/front-end-stack.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.audero.it\/blog\/wp-content\/uploads\/2014\/09\/front-end-stack.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.audero.it\/blog\/wp-content\/uploads\/2014\/09\/front-end-stack.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/www.audero.it\/blog\/wp-content\/uploads\/2014\/09\/front-end-stack.png?resize=1050%2C600&ssl=1 3x"},"classes":[]},{"id":360,"url":"https:\/\/www.audero.it\/blog\/2015\/05\/27\/job-offers-errors-and-how-to-avoid-them\/","url_meta":{"origin":5,"position":1},"title":"Job Offers Errors and How to Avoid Them","author":"Aurelio De Rosa","date":"May 27, 2015","format":false,"excerpt":"As we all know, IT is a growing field and it's easy to find a job (at least compared to other fields). We're overwhelmed by job offers and recruiters emails sent to find the right person for their clients. Unfortunately, many of these offers are written by people without any\u2026","rel":"","context":"In &quot;Discussions &amp; Opinions&quot;","block_context":{"text":"Discussions &amp; Opinions","link":"https:\/\/www.audero.it\/blog\/category\/discussions-opinions\/"},"img":{"alt_text":"job offer","src":"https:\/\/i0.wp.com\/www.audero.it\/blog\/wp-content\/uploads\/2015\/05\/job-offer.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.audero.it\/blog\/wp-content\/uploads\/2015\/05\/job-offer.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.audero.it\/blog\/wp-content\/uploads\/2015\/05\/job-offer.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.audero.it\/blog\/wp-content\/uploads\/2015\/05\/job-offer.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/www.audero.it\/blog\/wp-content\/uploads\/2015\/05\/job-offer.png?resize=1050%2C600&ssl=1 3x"},"classes":[]},{"id":273,"url":"https:\/\/www.audero.it\/blog\/2014\/02\/05\/why-people-think-php-sucks\/","url_meta":{"origin":5,"position":2},"title":"Why People Think PHP Sucks!","author":"Aurelio De Rosa","date":"February 5, 2014","format":false,"excerpt":"A long time has been passed since the first release of PHP. Over the years the language has been improved a lot, in terms of performance and features, thanks to the work of many contributors. At the same time, also its adoption among developers is grown dramatically. Looking at the\u2026","rel":"","context":"In &quot;Discussions &amp; Opinions&quot;","block_context":{"text":"Discussions &amp; Opinions","link":"https:\/\/www.audero.it\/blog\/category\/discussions-opinions\/"},"img":{"alt_text":"PHP elephants","src":"https:\/\/i0.wp.com\/www.audero.it\/blog\/wp-content\/uploads\/2014\/02\/php-elephants.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.audero.it\/blog\/wp-content\/uploads\/2014\/02\/php-elephants.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.audero.it\/blog\/wp-content\/uploads\/2014\/02\/php-elephants.jpg?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":14,"url":"https:\/\/www.audero.it\/blog\/2013\/05\/09\/how-to-change-the-default-view-in-zend-framework-1\/","url_meta":{"origin":5,"position":3},"title":"How to Change the Default View in Zend Framework 1","author":"Aurelio De Rosa","date":"May 9, 2013","format":false,"excerpt":"In this article I'll give you a little tip about a situation which often arises during the development of a website or a web application based on the Zend Framework 1. I'll explain how you can change the default view of a given action.","rel":"","context":"In &quot;PHP&quot;","block_context":{"text":"PHP","link":"https:\/\/www.audero.it\/blog\/category\/php\/"},"img":{"alt_text":"Zend Framework banner","src":"https:\/\/i0.wp.com\/aurelio.audero.it\/blog\/wp-content\/uploads\/2013\/05\/zend-framework-banner.jpg?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":832,"url":"https:\/\/www.audero.it\/blog\/2018\/07\/20\/5-javascript-interview-questions-a-mid-level-developer-should-be-able-to-answer\/","url_meta":{"origin":5,"position":4},"title":"5 JavaScript interview questions a mid-level developer should be able to answer","author":"Aurelio De Rosa","date":"July 20, 2018","format":false,"excerpt":"According to the results of the 2018's StackOverflow survey, JavaScript is the most popular technology. The amount of job offers for JavaScript developers is constantly increasing and with more companies adopting JavaScript as their main language, it's easy to find good ones. But before you are hired by a company,\u2026","rel":"","context":"In &quot;JavaScript&quot;","block_context":{"text":"JavaScript","link":"https:\/\/www.audero.it\/blog\/category\/javascript\/"},"img":{"alt_text":"job interview panel","src":"https:\/\/i0.wp.com\/www.audero.it\/blog\/wp-content\/uploads\/2016\/06\/job-interview-panel.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.audero.it\/blog\/wp-content\/uploads\/2016\/06\/job-interview-panel.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.audero.it\/blog\/wp-content\/uploads\/2016\/06\/job-interview-panel.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.audero.it\/blog\/wp-content\/uploads\/2016\/06\/job-interview-panel.jpg?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/www.audero.it\/blog\/wp-content\/uploads\/2016\/06\/job-interview-panel.jpg?resize=1050%2C600&ssl=1 3x"},"classes":[]},{"id":305,"url":"https:\/\/www.audero.it\/blog\/2014\/07\/15\/my-experience-at-4developers-2014\/","url_meta":{"origin":5,"position":5},"title":"My Experience at 4Developers 2014","author":"Aurelio De Rosa","date":"July 15, 2014","format":false,"excerpt":"In March I announced via Twitter my participation as a speaker at 4Developers 2014. 4Developers\u00a02014 was a single-day, multi-track and multi-language conference held in the lovely Warsaw on the 7th of April\u00a02014\u00a0at the\u00a0Gromada Airport Hotel. The tracks for the edition of this year were: Java, .Net, PHP, Python, Front-end (HTML5,\u2026","rel":"","context":"In &quot;Discussions &amp; Opinions&quot;","block_context":{"text":"Discussions &amp; Opinions","link":"https:\/\/www.audero.it\/blog\/category\/discussions-opinions\/"},"img":{"alt_text":"Logo panel 4developers 2014","src":"https:\/\/i0.wp.com\/aurelio.audero.it\/blog\/wp-content\/uploads\/2014\/07\/logo-panel-4developers-2014-225x300.jpg?resize=350%2C200","width":350,"height":200},"classes":[]}],"_links":{"self":[{"href":"https:\/\/www.audero.it\/blog\/wp-json\/wp\/v2\/posts\/5","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.audero.it\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.audero.it\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.audero.it\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.audero.it\/blog\/wp-json\/wp\/v2\/comments?post=5"}],"version-history":[{"count":13,"href":"https:\/\/www.audero.it\/blog\/wp-json\/wp\/v2\/posts\/5\/revisions"}],"predecessor-version":[{"id":466,"href":"https:\/\/www.audero.it\/blog\/wp-json\/wp\/v2\/posts\/5\/revisions\/466"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.audero.it\/blog\/wp-json\/wp\/v2\/media\/44"}],"wp:attachment":[{"href":"https:\/\/www.audero.it\/blog\/wp-json\/wp\/v2\/media?parent=5"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.audero.it\/blog\/wp-json\/wp\/v2\/categories?post=5"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.audero.it\/blog\/wp-json\/wp\/v2\/tags?post=5"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}