{"id":14817,"date":"2015-10-30T08:00:03","date_gmt":"2015-10-30T12:00:03","guid":{"rendered":"https:\/\/simpleprogrammer.com\/?p=14817"},"modified":"2018-04-12T01:29:52","modified_gmt":"2018-04-12T05:29:52","slug":"escaping-local-maxima","status":"publish","type":"post","link":"https:\/\/simpleprogrammer.com\/escaping-local-maxima\/","title":{"rendered":"Escaping Local Maxima"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">In mathematics, a function has a <\/span><a href=\"https:\/\/en.wikipedia.org\/wiki\/Maxima_and_minima\"><span style=\"font-weight: 400;\">maxima and minima<\/span><\/a><span style=\"font-weight: 400;\">. This means there are points at which the value of the function is at its highest or lowest. The word \u201cmaxima\u201d is the plural form on maximum. It can be true of some given function that there is more than one maximum. The same is true of minima.<\/span>\\n\\n<span style=\"font-weight: 400;\">Like a mathematical function, the productivity and output of a software development team has maxima and minima as the inputs to the system change. These inputs can include the size of the team, the experience its members, the tools in use, and the process used to execute on delivery of the product.<\/span>\\n\\n<span style=\"font-weight: 400;\">With different ways of approaching the problems a team faces, the impact and success of the team will vary. Some practices, platforms, and languages will fit the team, individuals, and the problem better than others.<\/span>\\n\\n<\/p>\n<h2><span style=\"font-weight: 400;\">Math Class<\/span><\/h2>\n<p>\\n\\n<span style=\"font-weight: 400;\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-14825 alignright\" src=\"https:\/\/simpleprogrammer.com\/wp-content\/uploads\/2015\/10\/Depositphotos_2286781_m-2015.jpg\" alt=\"Drawing a normal distribution bell curve on a chalkboard.\" width=\"376\" height=\"251\" \/>Maxima and minima are the points in a function that, when represented graphically, are the peaks and valleys on a curve.<\/span>\\n\\n<span style=\"font-weight: 400;\">These points of interest are where a function has its greatest and least values, at least in a region bounded by the neighborhood of the given points.<\/span>\\n\\n<span style=\"font-weight: 400;\">Local maxima are points of maximum function output within a bounded area. Global maxima are points of maximum function output for the entire domain of the function. There can only be more than one global maximum for a function if there are multiple points at which the function has equal output and that output is the greatest for the function over its entire domain (for a constant function, every point is a global maximum).<\/span>\\n\\n<span style=\"font-weight: 400;\">Any maximum with a value less than the global maximum is merely a local maximum. It is a point of the largest output value in a range of input values. It is a peak on the curve representing the value of the function.<\/span>\\n\\n<span style=\"font-weight: 400;\">It\u2019s a bit like the old proverb of being a big fish in a small pond. A local maximum is the best you can do in a confined area, but there may be bigger and higher peaks elsewhere.<\/span>\\n\\n<\/p>\n<h2><span style=\"font-weight: 400;\">Software Creator Productivity As a Function<\/span><\/h2>\n<p>\\n\\n<span style=\"font-weight: 400;\">Consider now, the value delivered by a software team. There will be some function that describes the output of the team as a function of the many inputs that make up the composition of a team. Among the inputs are the size, talent, experience, leadership, expertise, dedication, and camaraderie of the team. Other important inputs include the platform(s), language(s), and tools used by the team.<\/span>\\n\\n<span style=\"font-weight: 400;\">For the sake of simplicity, we can imagine holding all other things constant and focus on something like the way we approach problems with the constructs provided by a given language. Productivity and delivery can be thought of as a quantities (though hard to measure) that are functions of the mindset and approach used (especially as facilitated by the how the language enables ways of thinking regarding problems).<\/span>\\n\\n<span style=\"font-weight: 400;\">Picture, if you will, a plot of a function with peaks and valleys. It\u2019s an irregular shape representing, on the horizontal axis, your <a href=\"https:\/\/simpleprogrammer.com\/2010\/08\/10\/book-review-the-pragmatic-programmer\/\">programming<\/a> approach (with discrete locations for purely dogmatic adherence to given approaches and a continuum of hybrids in between). On the vertical axis we have, as our dependent variable, ability to execute and deliver.<\/span>\\n\\n<span style=\"font-weight: 400;\">I acknowledge that this graph will have different characteristics and values for tackling different types of problems, but I want to keep this simple and ignore that for this argument to avoid getting distracted from the central point.<\/span>\\n\\n<span style=\"font-weight: 400;\">This graph will show many points of local maximum and minimum throughout the domain of different ways of tackling problems. Some of the maxima will be higher than others.<\/span>\\n\\n<span style=\"font-weight: 400;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft wp-image-14829\" src=\"https:\/\/simpleprogrammer.com\/wp-content\/uploads\/2015\/10\/Depositphotos_36321765_m-2015.jpg\" alt=\"Depositphotos_36321765_m-2015\" width=\"350\" height=\"232\" \/>In deciding how we deliver software, learning from the examples of others, and experimenting over the course of a career, we are traversing this curve. With proper feedback loops in place, we can often see that we are climbing up a slope to increased productivity or descending to lesser delivered value.<\/span>\\n\\n<span style=\"font-weight: 400;\">One emphasis of <\/span><a href=\"http:\/\/www.agilemanifesto.org\/\"><span style=\"font-weight: 400;\">the Agile Manifesto<\/span><\/a><span style=\"font-weight: 400;\"> is about reflecting on what is working and what is not. It is about using feedback from delivery machine to correct course and get better over time.<\/span>\\n\\n<span style=\"font-weight: 400;\">There is a hazard, though, in this approach. Knowing that you are climbing a hill is good, but how do you know you\u2019re climbing the right hill? How do you know you aren\u2019t missing a mountain? It may be that you have, or are about to, arrive at a peak. Yet, there may a higher peak you could approach.<\/span>\\n\\n<\/p>\n<h2><span style=\"font-weight: 400;\">PragDave Delivers Perspective<\/span><\/h2>\n<p>\\n\\n<span style=\"font-weight: 400;\">I spoke with <\/span><a href=\"https:\/\/pragprog.com\/about\"><span style=\"font-weight: 400;\">Dave Thomas<\/span><\/a><span style=\"font-weight: 400;\"> during <\/span><a href=\"http:\/\/developeronfire.com\/Podcast\/Episodes\/dave-thomas-programmer-first\"><span style=\"font-weight: 400;\">an episode of my podcast, Developer On Fire<\/span><\/a><span style=\"font-weight: 400;\">. Dave is an exceptional developer and and author, publisher, and extremely impressive person. He is best known, along with his partner in programming, writing, and publishing, <\/span><a href=\"http:\/\/toolshed.com\/about.html\"><span style=\"font-weight: 400;\">Andy Hunt<\/span><\/a><span style=\"font-weight: 400;\">, as the authors of the legendary software bible, <\/span><a href=\"https:\/\/pragprog.com\/book\/tpp\/the-pragmatic-programmer\"><span style=\"font-weight: 400;\">The Pragmatic Programmer<\/span><\/a><span style=\"font-weight: 400;\">.<\/span>\\n\\n<span style=\"font-weight: 400;\">Dave has the wisdom of decades of disciplined practice and experimentation with languages and practices. When I asked about <\/span><a href=\"http:\/\/gotocon.com\/chicago-2014\/presentation\/Elixir:%20The%20Power%20of%20Erlang,%20the%20Joy%20of%20Ruby\"><span style=\"font-weight: 400;\">the similarity of his feelings about Elixir now to the revolution he catalyzed with Ruby many years ago<\/span><\/a><span style=\"font-weight: 400;\">, he put emphasis on the excitement of something that delivers on new ways of thinking. The reasons for this are surprising and brilliant.<\/span>\\n\\n<span style=\"font-weight: 400;\">This line of conversation started at the 34:55 mark in the show.<\/span>\\n\\n<span style=\"font-weight: 400;\">\u201cI\u2019m finding that Elixir is opening my mind in the same way Ruby opened my mind when I first started using it and to me that\u2019s the pleasurable experience. I like learning new things. I like putting things together in different ways. As you learn something you make connections between all these various other things you already knew and that\u2019s where the synergy comes; that\u2019s where the a-ha moments come. With Elixir, they are coming faster because, to me, it\u2019s new and a lot of the techniques they are talking about are new.\u201c<\/span>\\n\\n<span style=\"font-weight: 400;\">He continued to share why the new ways of thinking are so valuable and move us toward something better. Beyond the excitement and fun of working with something different, there\u2019s a bigger reason to expand your scope of expertise in ways to approach problems.<\/span>\\n\\n<span style=\"font-weight: 400;\">\u201cPart of it is the bright shiny new thing, but also part of it is this underlying feeling that we\u2019re doing it wrong right now and I don\u2019t know what right means. It\u2019s kind of an exploration to try and find ways that are better than the way we\u2019re doing it simply because it bugs me that we\u2019re doing it wrong now.\u201d<\/span>\\n\\n<span style=\"font-weight: 400;\">Dave finds joy in recognizing that what he is doing is suboptimal (I prefer saying suboptimal to \u201cdoing it wrong\u201d because what we are doing may be pretty good and calling what someone does wrong can be divisive &#8211; the point is that we can do better). This is a unique way of looking at the situation. It is easy to view a recognition that something is not as good as it could be as a source of frustration.<\/span>\\n\\n<span style=\"font-weight: 400;\">Dave Thomas sees is as an opportunity to advance the state of the practice of software development.<\/span>\\n\\n<span style=\"font-weight: 400;\">He recognizes these chasms between where we are and where we could be as opportunities to improve by finding ways of moving from a place where progress is flat to find a new slope to climb.<\/span>\\n\\n<span style=\"font-weight: 400;\">Rather than trying merely to solve the problem in the moment, he wants to make it easier to solve problems in the future.<\/span>\\n\\n<span style=\"font-weight: 400;\">He emphasized escaping the local maximum to move into finding another maximum higher than the one in which you currently find yourself.<\/span>\\n\\n<span style=\"font-weight: 400;\">What a great way of looking at things.<\/span>\\n\\n<\/p>\n<h2><span style=\"font-weight: 400;\">Identifying a Local Maximum<\/span><\/h2>\n<p>\\n\\n<\/p>\n<h2><span style=\"font-weight: 400;\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-14826 alignleft\" src=\"https:\/\/simpleprogrammer.com\/wp-content\/uploads\/2015\/10\/Depositphotos_44859483_m-2015.jpg\" alt=\"Depositphotos_44859483_m-2015\" width=\"245\" height=\"346\" \/><\/span><\/h2>\n<p>\\n\\n<span style=\"font-weight: 400;\">When things are going really well in a project, it can be difficult for team members to recognize that it can be better. A local maximum is usually a point where things have gotten as good as they can get with a current paradigm.<\/span>\\n\\n<span style=\"font-weight: 400;\">While doing the best you can in your current form is not a disaster, knowing that you can do better should be a driver to trying to find better ways of operating.<\/span>\\n\\n<span style=\"font-weight: 400;\">Knowing that you are doing well but not improving is often a sign that you are in a maximum. It is impossible to ever know if that place is really the global maximum, or if there is some place that is still better. It\u2019s safe to assume that as much as we can try to approach ideal practice, we\u2019ll never get there. It\u2019s also safe to assume there\u2019s always room for improvement.<\/span>\\n\\n<span style=\"font-weight: 400;\">Given that you can improve, you\u2019re in a local maximum. You probably have an opportunity to get better.<\/span>\\n\\n<span style=\"font-weight: 400;\">You want to avoid being like <\/span><a href=\"https:\/\/en.wikipedia.org\/wiki\/Admiral_Ackbar\"><span style=\"font-weight: 400;\">Admiral Ackbar in the Star Wars saga<\/span><\/a><span style=\"font-weight: 400;\">, who recognized the assault on the fearsome Imperial battle station amounted to falling into a trap only after the Rebel forces were fully committed and there was no contingency.<\/span>\\n\\n<\/p>\n<h2><span style=\"font-weight: 400;\">Escaping the Trap<\/span><\/h2>\n<p>\\n\\n<span style=\"font-weight: 400;\">If you find that things are not improving in your workplace in terms of your process for delivering, it\u2019s probably a good time to try something different.<\/span>\\n\\n<span style=\"font-weight: 400;\">Even if you don\u2019t identify a local maximum and a need to change to grow, you can always try new things in case you happen upon something that improves everything.<\/span>\\n\\n<span style=\"font-weight: 400;\">Here are some examples of ideas of things you can try to move out of a local maximum and change the way your brain approaches problems:<\/span>\\n\\n<span style=\"font-weight: 400;\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-14827 alignright\" src=\"https:\/\/simpleprogrammer.com\/wp-content\/uploads\/2015\/10\/Depositphotos_12283300_m-2015.jpg\" alt=\"multiple mouse traps with cheese on a dark background\" width=\"284\" height=\"426\" \/><\/span>\\n\\n<\/p>\n<ul>\\n    <\/p>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Experiment with different types of technology<\/span><\/li>\n<p>\\n    <\/p>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">If it\u2019s not something you\u2019re doing already, give <\/span><a href=\"https:\/\/en.wikipedia.org\/wiki\/Pair_programming\"><span style=\"font-weight: 400;\">pair programming<\/span><\/a><span style=\"font-weight: 400;\"> a try. \u00a0While you\u2019re at it, dig into the whole of the ideas offered in Kent Beck\u2019s classic <\/span><span style=\"font-weight: 400;\"><a href=\"http:\/\/www.amazon.com\/exec\/obidos\/ASIN\/0321278658\/makithecompsi-20\" target=\"_blank\">Extreme Programming<\/a><\/span><span style=\"font-weight: 400;\">.<\/span><\/li>\n<p>\\n    <\/p>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Take pair programming to the extreme &#8211; try <\/span><a href=\"https:\/\/en.wikipedia.org\/wiki\/Mob_programming\"><span style=\"font-weight: 400;\">mob programming<\/span><\/a><\/li>\n<p>\\n    <\/p>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Spike a feature that hasn\u2019t been requested to decide if it might provide value (and be clear that it\u2019s an experiment, not a delivery, with an appropriate time-box for the experiment)<\/span><\/li>\n<p>\\n    <\/p>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Try <\/span><a href=\"http:\/\/dannorth.net\/introducing-bdd\/\"><span style=\"font-weight: 400;\">Behavior-Driven Development (BDD)<\/span><\/a><span style=\"font-weight: 400;\"> with your team (BDD is not just a choice of a tool, as it is often portrayed, but a way of operating with a team and incorporating technical and non-technical team members.) \u00a0For a good resource on applying this to a team, try Gojko Adzic\u2019s <\/span><span style=\"font-weight: 400;\"><a href=\"http:\/\/www.amazon.com\/exec\/obidos\/ASIN\/0955683610\/makithecompsi-20\" target=\"_blank\">Bridging the Communication Gap<\/a><\/span><span style=\"font-weight: 400;\">. \u00a0Though he uses the term Agile Acceptance Testing more than BDD, the ideas are the same.<\/span><\/li>\n<p>\\n    <\/p>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Take a different approach to testing &#8211; if you practice Test-Driven Development (TDD) dogmatically, try relaxing your approach &#8211; if you don\u2019t TDD, give it a chance &#8211; do more\/less testing via your user interface and see how it works out<\/span><\/li>\n<p>\\n    <\/p>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\"><a href=\"https:\/\/simpleprogrammer.com\/2015\/09\/25\/do-you-need-to-know-more-than-one-language\/\">Play with a different language<\/a> &#8211; use a functional language if you have only used object oriented languages before and vice versa<\/span><\/li>\n<p>\\n    <\/p>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Use a development machine running a different operating system and learn how to operate that system with the keyboard<\/span><\/li>\n<p>\\n    <\/p>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Try using different types of data stores than use typically use<\/span><\/li>\n<p>\\n<\/ul>\n<p>\\n\\n<span style=\"font-weight: 400;\">Even if what you implement is never folded into your application and doesn\u2019t get used by anyone, you\u2019ve exposed yourself to something new and expanded your thinking. \u00a0Finding different approaches makes you more valuable and better able to cope with different problem. \u00a0In addition, you just might find another, higher productivity\/quality peak to scale.<\/span>\\n\\n<\/p>\n<h2><span style=\"font-weight: 400;\">Keep Talking About It<\/span><\/h2>\n<p>\\n\\n<span style=\"font-weight: 400;\">I invite you to continue this conversation. Please comment with your ideas about identifying that you are in a local maximum with the potential to find one even higher. Please also add your thoughts on how to execute making that move and finding newer and better ways of operating.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In mathematics, a function has a maxima and minima. This means there are points at which the value of the function is at its highest or lowest. The word \u201cmaxima\u201d is the plural form on maximum. It can be true of some given function that there is more than one maximum. The same is true&#8230;<\/p>\n","protected":false},"author":22,"featured_media":14824,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"categories":[162229812,2185,415,162229112,1883271,5895,162229840],"tags":[],"class_list":["post-14817","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-advice","category-best-practices","category-guest-post","category-people-2","category-productivity-2","category-self-improvement","category-skills"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Escaping Local Maxima - Simple Programmer<\/title>\n<meta name=\"description\" content=\"Software development practices have a continuum of results with peaks and valleys of productivity. Even at a peak, we can escape the local maxima.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/simpleprogrammer.com\/products\/careerguide\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Escaping Local Maxima - Simple Programmer\" \/>\n<meta property=\"og:description\" content=\"Software development practices have a continuum of results with peaks and valleys of productivity. Even at a peak, we can escape the local maxima.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/simpleprogrammer.com\/products\/careerguide\" \/>\n<meta property=\"og:site_name\" content=\"Simple Programmer\" \/>\n<meta property=\"article:published_time\" content=\"2015-10-30T12:00:03+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-04-12T05:29:52+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/simpleprogrammer.com\/wp-content\/uploads\/2015\/10\/maxima.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1089\" \/>\n\t<meta property=\"og:image:height\" content=\"598\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Brandon Chun\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Brandon Chun\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/products\\\/careerguide#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/escaping-local-maxima\\\/\"},\"author\":{\"name\":\"Brandon Chun\",\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/#\\\/schema\\\/person\\\/7e236d22156ceb6657a8ee50e5a6c038\"},\"headline\":\"Escaping Local Maxima\",\"datePublished\":\"2015-10-30T12:00:03+00:00\",\"dateModified\":\"2018-04-12T05:29:52+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/escaping-local-maxima\\\/\"},\"wordCount\":2018,\"commentCount\":6,\"image\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/products\\\/careerguide#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/simpleprogrammer.com\\\/wp-content\\\/uploads\\\/2015\\\/10\\\/maxima.png\",\"articleSection\":[\"Advice\",\"Best Practices\",\"Guest Post\",\"People\",\"Productivity\",\"Self Improvement\",\"Skills\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/simpleprogrammer.com\\\/products\\\/careerguide#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/escaping-local-maxima\\\/\",\"url\":\"https:\\\/\\\/simpleprogrammer.com\\\/products\\\/careerguide\",\"name\":\"Escaping Local Maxima - Simple Programmer\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/products\\\/careerguide#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/products\\\/careerguide#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/simpleprogrammer.com\\\/wp-content\\\/uploads\\\/2015\\\/10\\\/maxima.png\",\"datePublished\":\"2015-10-30T12:00:03+00:00\",\"dateModified\":\"2018-04-12T05:29:52+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/#\\\/schema\\\/person\\\/7e236d22156ceb6657a8ee50e5a6c038\"},\"description\":\"Software development practices have a continuum of results with peaks and valleys of productivity. Even at a peak, we can escape the local maxima.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/products\\\/careerguide#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/simpleprogrammer.com\\\/products\\\/careerguide\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/products\\\/careerguide#primaryimage\",\"url\":\"https:\\\/\\\/simpleprogrammer.com\\\/wp-content\\\/uploads\\\/2015\\\/10\\\/maxima.png\",\"contentUrl\":\"https:\\\/\\\/simpleprogrammer.com\\\/wp-content\\\/uploads\\\/2015\\\/10\\\/maxima.png\",\"width\":1089,\"height\":598},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/products\\\/careerguide#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/simpleprogrammer.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Escaping Local Maxima\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/#website\",\"url\":\"https:\\\/\\\/simpleprogrammer.com\\\/\",\"name\":\"Simple Programmer\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/simpleprogrammer.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/#\\\/schema\\\/person\\\/7e236d22156ceb6657a8ee50e5a6c038\",\"name\":\"Brandon Chun\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/81df9fe5a9e4a3502b4f5cc04c10ce442d5a1bb4dcbc9fca27351f1f2eabb19b?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/81df9fe5a9e4a3502b4f5cc04c10ce442d5a1bb4dcbc9fca27351f1f2eabb19b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/81df9fe5a9e4a3502b4f5cc04c10ce442d5a1bb4dcbc9fca27351f1f2eabb19b?s=96&d=mm&r=g\",\"caption\":\"Brandon Chun\"},\"url\":\"https:\\\/\\\/simpleprogrammer.com\\\/author\\\/brandonchun\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Escaping Local Maxima - Simple Programmer","description":"Software development practices have a continuum of results with peaks and valleys of productivity. Even at a peak, we can escape the local maxima.","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:\/\/simpleprogrammer.com\/products\/careerguide","og_locale":"en_US","og_type":"article","og_title":"Escaping Local Maxima - Simple Programmer","og_description":"Software development practices have a continuum of results with peaks and valleys of productivity. Even at a peak, we can escape the local maxima.","og_url":"https:\/\/simpleprogrammer.com\/products\/careerguide","og_site_name":"Simple Programmer","article_published_time":"2015-10-30T12:00:03+00:00","article_modified_time":"2018-04-12T05:29:52+00:00","og_image":[{"width":1089,"height":598,"url":"https:\/\/simpleprogrammer.com\/wp-content\/uploads\/2015\/10\/maxima.png","type":"image\/png"}],"author":"Brandon Chun","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Brandon Chun","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/simpleprogrammer.com\/products\/careerguide#article","isPartOf":{"@id":"https:\/\/simpleprogrammer.com\/escaping-local-maxima\/"},"author":{"name":"Brandon Chun","@id":"https:\/\/simpleprogrammer.com\/#\/schema\/person\/7e236d22156ceb6657a8ee50e5a6c038"},"headline":"Escaping Local Maxima","datePublished":"2015-10-30T12:00:03+00:00","dateModified":"2018-04-12T05:29:52+00:00","mainEntityOfPage":{"@id":"https:\/\/simpleprogrammer.com\/escaping-local-maxima\/"},"wordCount":2018,"commentCount":6,"image":{"@id":"https:\/\/simpleprogrammer.com\/products\/careerguide#primaryimage"},"thumbnailUrl":"https:\/\/simpleprogrammer.com\/wp-content\/uploads\/2015\/10\/maxima.png","articleSection":["Advice","Best Practices","Guest Post","People","Productivity","Self Improvement","Skills"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/simpleprogrammer.com\/products\/careerguide#respond"]}]},{"@type":"WebPage","@id":"https:\/\/simpleprogrammer.com\/escaping-local-maxima\/","url":"https:\/\/simpleprogrammer.com\/products\/careerguide","name":"Escaping Local Maxima - Simple Programmer","isPartOf":{"@id":"https:\/\/simpleprogrammer.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/simpleprogrammer.com\/products\/careerguide#primaryimage"},"image":{"@id":"https:\/\/simpleprogrammer.com\/products\/careerguide#primaryimage"},"thumbnailUrl":"https:\/\/simpleprogrammer.com\/wp-content\/uploads\/2015\/10\/maxima.png","datePublished":"2015-10-30T12:00:03+00:00","dateModified":"2018-04-12T05:29:52+00:00","author":{"@id":"https:\/\/simpleprogrammer.com\/#\/schema\/person\/7e236d22156ceb6657a8ee50e5a6c038"},"description":"Software development practices have a continuum of results with peaks and valleys of productivity. Even at a peak, we can escape the local maxima.","breadcrumb":{"@id":"https:\/\/simpleprogrammer.com\/products\/careerguide#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/simpleprogrammer.com\/products\/careerguide"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/simpleprogrammer.com\/products\/careerguide#primaryimage","url":"https:\/\/simpleprogrammer.com\/wp-content\/uploads\/2015\/10\/maxima.png","contentUrl":"https:\/\/simpleprogrammer.com\/wp-content\/uploads\/2015\/10\/maxima.png","width":1089,"height":598},{"@type":"BreadcrumbList","@id":"https:\/\/simpleprogrammer.com\/products\/careerguide#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/simpleprogrammer.com\/"},{"@type":"ListItem","position":2,"name":"Escaping Local Maxima"}]},{"@type":"WebSite","@id":"https:\/\/simpleprogrammer.com\/#website","url":"https:\/\/simpleprogrammer.com\/","name":"Simple Programmer","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/simpleprogrammer.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/simpleprogrammer.com\/#\/schema\/person\/7e236d22156ceb6657a8ee50e5a6c038","name":"Brandon Chun","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/81df9fe5a9e4a3502b4f5cc04c10ce442d5a1bb4dcbc9fca27351f1f2eabb19b?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/81df9fe5a9e4a3502b4f5cc04c10ce442d5a1bb4dcbc9fca27351f1f2eabb19b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/81df9fe5a9e4a3502b4f5cc04c10ce442d5a1bb4dcbc9fca27351f1f2eabb19b?s=96&d=mm&r=g","caption":"Brandon Chun"},"url":"https:\/\/simpleprogrammer.com\/author\/brandonchun\/"}]}},"_links":{"self":[{"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/posts\/14817","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/users\/22"}],"replies":[{"embeddable":true,"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/comments?post=14817"}],"version-history":[{"count":0,"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/posts\/14817\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/media\/14824"}],"wp:attachment":[{"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/media?parent=14817"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/categories?post=14817"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/tags?post=14817"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}