{"id":2517,"date":"2018-01-27T19:55:44","date_gmt":"2018-01-27T19:55:44","guid":{"rendered":"https:\/\/solutionstreet.com\/blog\/?p=2517"},"modified":"2018-01-27T19:55:44","modified_gmt":"2018-01-27T19:55:44","slug":"software-engineer-resolutions-for-2018","status":"publish","type":"post","link":"https:\/\/www.solutionstreet.com\/blog\/2018\/01\/27\/software-engineer-resolutions-for-2018\/","title":{"rendered":"Software Engineer Resolutions for 2018"},"content":{"rendered":"<p><a href=\"https:\/\/solutionstreet.com\/blog\/wp-content\/uploads\/2018\/01\/test4-copy.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/solutionstreet.com\/blog\/wp-content\/uploads\/2018\/01\/test4-copy-300x225.png\" alt=\"test4 copy\" width=\"600\" height=\"450\" class=\"aligncenter size-medium wp-image-2518\" srcset=\"https:\/\/www.solutionstreet.com\/blog\/wp-content\/uploads\/2018\/01\/test4-copy-300x225.png 300w, https:\/\/www.solutionstreet.com\/blog\/wp-content\/uploads\/2018\/01\/test4-copy.png 768w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>Every new year brings many great articles on technology trends and predictions.  I assume many predictions will be correct and just as many will be incorrect. With so much technology to keep up with, it\u2019s virtually impossible to be all knowledgeable as a software engineer in everything. Nonetheless, as developers we want to know the latest and greatest and the bleeding edge because it\u2019s fun to talk about it. After the smoke clears, however, it\u2019s important to have a strong, solid foothold in commonly-used technology and to have a good understanding of the perceived value of concepts gaining ground.<\/p>\n<p>&nbsp;<\/p>\n<p>Here we will take a look at a few articles and take a pragmatic approach to selecting what we choose to do and learn in 2018. The suggestions are mostly based on business application development &#8211; Solution Street\u2019s primary focus.<\/p>\n<p>&nbsp;<\/p>\n<p>For most software engineers building business applications, as we do at Solution Street, we can divide up architecture into a simplistic, loosely-formed level of component areas:<\/p>\n<p>&nbsp;<\/p>\n<ul>\n<li>User Interface<\/li>\n<\/ul>\n<ul>\n<li>Business Logic\/Application Server<\/li>\n<\/ul>\n<ul>\n<li>Database<\/li>\n<\/ul>\n<ul>\n<li>Reporting and Analytics<\/li>\n<\/ul>\n<ul>\n<li>Interfaces<\/li>\n<\/ul>\n<ul>\n<li>Testing and Deployment<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>Before we look at each component individually, it\u2019s important to mention that software languages cut across all of these components. So as we begin our discussion on what to learn and where to focus attention, we will begin with languages. Throughout this article I will highlight in bold the concepts\/advice\/suggestions I feel are most valuable for software engineers to know.  <\/p>\n<p>&nbsp;<\/p>\n<p><strong>Languages<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p>First, let\u2019s take a look at the result of a few articles listing top languages in 2017 and 2018. Here are a few you can skim:<\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"http:\/\/www.codingdojo.com\/blog\/9-most-in-demand-programming-languages-of-2017\/\" target=\"_blank\" rel=\"noopener\">Article 1<\/a><br \/>\n<a href=\"http:\/\/www.codingdojo.com\/blog\/7-most-in-demand-programming-languages-of-2018\/\" target=\"_blank\" rel=\"noopener\">Article 2<\/a><br \/>\n<a href=\"https:\/\/spectrum.ieee.org\/static\/interactive-the-top-programming-languages-2017\" target=\"_blank\" rel=\"noopener\">Article 3<\/a><br \/>\n<a href=\"https:\/\/fossbytes.com\/programming-languages-stack-overflow-2017-developer-survey\/\" target=\"_blank\" rel=\"noopener\">Article 4<\/a><\/p>\n<p>&nbsp;<\/p>\n<p>To summarize across the articles, the top 10 are (arguably in this order):<\/p>\n<p>&nbsp;<\/p>\n<ol>\n<li>JavaScript<\/li>\n<li>SQL<\/li>\n<li>Java<\/li>\n<li>C#<\/li>\n<li>Python<\/li>\n<li>PHP<\/li>\n<li>C++<\/li>\n<li>C<\/li>\n<li><a href=\"https:\/\/www.typescriptlang.org\/\" target=\"_blank\" rel=\"noopener\">TypeScript<\/a><\/li>\n<li>Ruby<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<p>From my perspective and our experience at Solution Street with our clients, this is a sound list.  Sure there are lots of languages not mentioned here that could be argued as \u201ccooler\u201d or just plain \u201cbetter\u201d, but with our clients these languages account for just about 100% of our current software development work.  Certainly, some of these are moving down the chain like C and C++ (although still used in a variety of legacy business applications and other types of applications) and some are moving up the chain like Python (given its frequent usage in machine learning applications). <strong>Overall, a software engineer today should be proficient in at least two of the ten languages listed above (not including SQL which every developer should be proficient in despite the increased usage in NoSQL databases). Also, every software engineer should have a solid understanding of Object Oriented concepts and patterns.<\/strong> I myself have worked in all of the ten languages listed above, but as the years pass I can say, currently, I\u2019m most proficient in JavaScript and Ruby (and of course SQL), but can easily slip into a project with Java, PHP, and TypeScript. If, like me, you are very proficient in at least two and have worked with most\/all of the others then you could make a good claim to start reaching into the next set of upcoming languages including <a href=\"https:\/\/www.scala-lang.org\/\" target=\"_blank\" rel=\"noopener\">Scala<\/a> and <a href=\"https:\/\/clojure.org\/\" target=\"_blank\" rel=\"noopener\">Clojure<\/a> (which have the benefit of running in the JVM). <\/p>\n<p>&nbsp;<\/p>\n<div style=\"padding: 12px; background-color: #eee9e9; line-height: 1.2; margin: 40px; border: 1px solid #ccc; border-radius: 6px; box-shadow: 1px #ccc; border-left: 5px solid #61963D;\"><span style=\"font-size: x-large; color: #61963d;\">\u201c<\/span><em>As software engineers, we should constantly be learning, but we need to be efficient and effective in what we learn.<\/em><span style=\"font-size: x-large; color: #61963d; line-height: 0.8;\">\u201d<\/span><\/div>\n<p>&nbsp;<\/p>\n<p><strong>Components<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p>We, at Solution Street, emphasize the importance of being able to work in the full stack. Let\u2019s take a look at architectural components individually to see if there are trends, some predictions, and maybe places where you can set your own New Year\u2019s resolution to learn.<\/p>\n<p>&nbsp;<\/p>\n<ul>\n<li>User Interface<\/li>\n<p>&nbsp;<\/p>\n<p>We can break down user interface into mobile and web. Of course, there is an expanded view of this with <a href=\"https:\/\/en.wikipedia.org\/wiki\/Internet_of_things\" target=\"_blank\" rel=\"noopener\">IoT<\/a>, but let\u2019s simplify for now.  In the UI Web space, JavaScript as a language is king. Certainly, knowledge of traditional server-side rendering frameworks like JSP, ASP, ERB, and the like are important to know and, depending upon the application, may be the only implementation needed on the front end.  If we simplify the discussion across the plethora of JavaScript frameworks for the front end using this <a href=\"https:\/\/stateofjs.com\/2017\/front-end\/results\" target=\"_blank\" rel=\"noopener\">article<\/a>, we can see that, at least today, we are talking mostly about these four:<\/li>\n<p>&nbsp;<\/p>\n<p>1.\t<a href=\"https:\/\/reactjs.org\/\" target=\"_blank\" rel=\"noopener\">React<\/a> &#8211; see our prior blog articles: <a href=\"https:\/\/solutionstreet.com\/blog\/learning-react-js-by-example\/\" target=\"_blank\" rel=\"noopener\">part 1<\/a> and <a href=\"https:\/\/solutionstreet.com\/blog\/learning-react-js-by-example-part-2\/\" target=\"_blank\" rel=\"noopener\">part 2<\/a>; and <a href=\"https:\/\/www.youtube.com\/watch?v=Nn7Y60dJVkw\" target=\"_blank\" rel=\"noopener\">video<\/a><br \/>\n2.\tAngular 1 (legacy) and <a href=\"https:\/\/angular.io\/\" target=\"_blank\" rel=\"noopener\">Angular 2<\/a><br \/>\n3.\tNo framework (which I would take as plain JavaScript with or without <a href=\"https:\/\/jquery.com\/\" target=\"_blank\" rel=\"noopener\">jQuery<\/a>)<br \/>\n4.\t<a href=\"https:\/\/vuejs.org\/\" target=\"_blank\" rel=\"noopener\">Vue.js<\/a><br \/>\n&nbsp;<\/p>\n<p>In this space there is lots of discussion on the future and what\u2019s to come in the next year, but in a pragmatic sense <strong>every software engineer should: be proficient in at least the strong concepts of a front-end framework like React (e.g., <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/Web_Components\/Shadow_DOM\" target=\"_blank\" rel=\"noopener\">shadow DOM<\/a>, componentization); have an excellent grasp of jQuery (because of its prolific usage in the industry); and have an excellent grasp of traditional server-side MVC implementations (e.g., SprintMVC, DjangoMVC, RailsMVC, .NETMVC). In addition, an excellent knowledge of CSS, <a href=\"https:\/\/getbootstrap.com\/\" target=\"_blank\" rel=\"noopener\">Bootstrap<\/a>, and an understanding of UI concepts such as responsiveness are required.<\/strong> <\/p>\n<p>&nbsp;<\/p>\n<p>In the <a href=\"https:\/\/stateofjs.com\/2017\/mobile\/results\" target=\"_blank\" rel=\"noopener\">UI mobile space<\/a>, there are:<\/p>\n<p>&nbsp;<\/p>\n<p>1.\tNative apps<br \/>\n2.\t<a href=\"https:\/\/facebook.github.io\/react-native\/\" target=\"_blank\" rel=\"noopener\">React Native<\/a><br \/>\n3.\t<a href=\"https:\/\/electronjs.org\/\" target=\"_blank\" rel=\"noopener\">Electron<\/a><br \/>\n4.\t<a href=\"https:\/\/phonegap.com\/\" target=\"_blank\" rel=\"noopener\">PhoneGap<\/a>\/<a href=\"https:\/\/cordova.apache.org\/\" target=\"_blank\" rel=\"noopener\">Cordova<\/a><\/p>\n<p>&nbsp;<\/p>\n<p>There is lots of discussion in this area as well.  I suggest reading some of our previous blog posts on <a href=\"https:\/\/solutionstreet.com\/blog\/rapid-development-of-mobile-apps-using-react-native-and-expo\/\" target=\"_blank\" rel=\"noopener\">React Native<\/a> and <a href=\"https:\/\/solutionstreet.com\/blog\/making-sense-of-mobile-application-types-and-frameworks\/\" target=\"_blank\" rel=\"noopener\">mobile application types<\/a>. Personally, I\u2019m a fan of React Native. <strong>Every software engineer should understand the differences between building a responsive browser-based application or a downloadable mobile app (e.g., state management, deployment, authentication) if he or she is not building mobile apps on an everyday basis.<\/strong> <\/p>\n<p>&nbsp;<\/p>\n<li>Business Logic<\/li>\n<p>&nbsp;<\/p>\n<p>At the core of most business systems is business logic. Supporting containers for business logic vary in terms of software language and framework, but understanding <a href=\"https:\/\/en.wikipedia.org\/wiki\/Separation_of_concerns\" target=\"_blank\" rel=\"noopener\">separation of concerns<\/a> is important for every developer. Besides traditional servers for business logic, nowadays we are hearing more about <a href=\"https:\/\/solutionstreet.com\/blog\/serverless-platforms-as-a-service-the-next-big-thing\/\" target=\"_blank\" rel=\"noopener\">serverless components<\/a>. Serverless is an important concept to understand, but I will focus on the traditional servers since they currently are used most often.<\/p>\n<p>&nbsp;<\/p>\n<p>Without an article to reference on the most-used server technology, I can say that all of our clients are using one of the following for their server logic (in no particular order):<\/p>\n<p>&nbsp;<\/p>\n<p>1.\t<a href=\"http:\/\/www.oracle.com\/technetwork\/java\/javaee\/overview\/index.html\" target=\"_blank\" rel=\"noopener\">Java\/JEE<\/a><br \/>\n2.\tC#\/.NET or VB\/<a href=\"https:\/\/www.microsoft.com\/net\/learn\/what-is-dotnet\" target=\"_blank\" rel=\"noopener\">.NET<\/a><br \/>\n3.\t<a href=\"http:\/\/rubyonrails.org\/\" target=\"_blank\" rel=\"noopener\">Ruby on Rails<\/a><br \/>\n4.\t<a href=\"https:\/\/www.djangoproject.com\/\" target=\"_blank\" rel=\"noopener\">Python\/Django<\/a> &#8211; <a href=\"https:\/\/www.youtube.com\/watch?v=66hRncfaaFU\" target=\"_blank\" rel=\"noopener\">intro video<\/a><br \/>\n5.\tJavaScript\/Express\/<a href=\"https:\/\/nodejs.org\/en\/\" target=\"_blank\" rel=\"noopener\">Node<\/a><\/p>\n<p>&nbsp;<\/p>\n<p><strong>Every software engineer should be firmly comfortable in at least two of these server frameworks\/stacks and be familiar with all of them in order to choose an architecture appropriately.<\/strong> <\/p>\n<p>&nbsp;<\/p>\n<p>There are reasons to choose each one including performance, scaling, staffing, available tools, experience, available open source or community, etc. <\/p>\n<p>&nbsp;<\/p>\n<li>Database<\/li>\n<p>&nbsp;<\/p>\n<p>With databases today, the field is wide open with traditional relational databases\/SQL, <a href=\"https:\/\/en.wikipedia.org\/wiki\/NoSQL\" target=\"_blank\" rel=\"noopener\">NoSQL<\/a> databases (e.g., <a href=\"https:\/\/www.mongodb.com\/\" target=\"_blank\" rel=\"noopener\">MongoDB<\/a> &#8211; <a href=\"https:\/\/www.youtube.com\/watch?v=gD2POxr1wfw\" target=\"_blank\" rel=\"noopener\">video<\/a>), <a href=\"https:\/\/en.wikipedia.org\/wiki\/Graph_database\" target=\"_blank\" rel=\"noopener\">graph databases<\/a> (see <a href=\"https:\/\/www.youtube.com\/watch?v=KOhkNQZN7Yg\" target=\"_blank\" rel=\"noopener\">here<\/a> for an intro to graph databases), and technology such as <a href=\"https:\/\/redis.io\/\" target=\"_blank\" rel=\"noopener\">Redis<\/a> (in-memory databases which can be used as a message broker) and <a href=\"https:\/\/www.elastic.co\/\" target=\"_blank\" rel=\"noopener\">Elasticsearch<\/a> (or <a href=\"http:\/\/lucene.apache.org\/solr\/\" target=\"_blank\" rel=\"noopener\">Solr<\/a>). <\/p>\n<p>&nbsp;<\/p>\n<p>Certainly, a good foothold in database structure and modeling in the relational world remains extremely important and a vast majority of our applications use relational databases because they are still the right choice for many large, complex business applications. Nonetheless, knowledge of NoSQL databases is becoming increasingly important and, included with that, are tools like Redis and Elasticsearch. <strong>For a majority of software engineers, an exceptional knowledge of SQL and relational database concepts is still extremely important. Furthermore, knowledge and experience in performance, tuning, and scaling are paramount in business applications using a relational database with large amounts of data. Being able to compare relational databases to NoSQL databases is also a must, and some basic knowledge is required of in-memory databases and Lucene search engines like Elasticsearch as they are very often part of overall architecture today.<\/strong> Here is a good article on <a href=\"https:\/\/dzone.com\/articles\/database-2017-surprises-and-2018-predictions\" target=\"_blank\" rel=\"noopener\">database trends<\/a>.<\/p>\n<p>&nbsp;<\/p>\n<li>Reporting and Analytics<\/li>\n<p>&nbsp;<\/p>\n<p>As with all other components I have mentioned, there is a plethora to learn here. <strong>Having at least a general understanding of tools, such as <a href=\"https:\/\/www.tableau.com\/\" target=\"_blank\" rel=\"noopener\">Tableau<\/a> &#8211; <a href=\"https:\/\/www.youtube.com\/watch?v=Oz8W4ewmzaM\" target=\"_blank\" rel=\"noopener\">intro video<\/a> or <a href=\"http:\/\/www.pentaho.com\/\" target=\"_blank\" rel=\"noopener\">Pentaho<\/a>, or other BI (business intelligence) tools, is useful in understanding the overall big picture of business applications. With the increased usage of Elasticsearch, <a href=\"https:\/\/www.elastic.co\/products\/kibana\" target=\"_blank\" rel=\"noopener\">Kibana<\/a> is becoming more and more frequent in the overall architecture equation. Again, tools come and go, but understanding some usage of these and how these play a role in solving the overall business problem is key.<\/strong><\/p>\n<p>&nbsp;<\/p>\n<li>Interfaces<\/li>\n<p>&nbsp;<\/p>\n<p>1.\t<a href=\"https:\/\/en.wikipedia.org\/wiki\/Representational_state_transfer\" target=\"_blank\" rel=\"noopener\">RESTful<\/a><br \/>\n2.\t<a href=\"https:\/\/en.wikipedia.org\/wiki\/Publish%E2%80%93subscribe_pattern\" target=\"_blank\" rel=\"noopener\">Publish-subscribe<\/a><\/p>\n<p>&nbsp;<\/p>\n<p>Nowadays most business applications use a RESTful API interface.  <strong>Every developer should understand RESTful concepts and implementations inside and out. Publish-subscribe\/messaging has been around for many, many years and although implementations may change, the concepts remain and should be learned.<\/strong><\/p>\n<p>&nbsp;<\/p>\n<li>Testing and Deployment<\/li>\n<p>&nbsp;<\/p>\n<p>Testing is everything.  <strong>Understanding testing from all levels including unit, system, and integration is something in which every developer should be knowledgeable.<\/strong> Whether you believe and follow <a href=\"https:\/\/en.wikipedia.org\/wiki\/Test-driven_development\" target=\"_blank\" rel=\"noopener\">TDD<\/a> or just follow a disciplined testing approach, the success of the project relies heavily on you and other developers being comfortable and disciplined with testing.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Deployment today is often the job of a software engineer, and with cloud deployments, software engineers should be quite familiar with deploying to the cloud with AWS or Azure.  Understanding technologies such as <a href=\"https:\/\/www.docker.com\/\" target=\"_blank\" rel=\"noopener\">Docker<\/a> and <a href=\"https:\/\/kubernetes.io\/\" target=\"_blank\" rel=\"noopener\">Kubernetes<\/a> is a must now.  In the general software lifecycle process, knowing different methodologies (e.g., <a href=\"https:\/\/en.wikipedia.org\/wiki\/Agile_software_development\" target=\"_blank\" rel=\"noopener\">Agile<\/a> vs. <a href=\"https:\/\/en.wikipedia.org\/wiki\/Waterfall_model\" target=\"_blank\" rel=\"noopener\">Waterfall<\/a>) and process (e.g., <a href=\"https:\/\/en.wikipedia.org\/wiki\/Continuous_integration\" target=\"_blank\" rel=\"noopener\">continuous integration<\/a>, <a href=\"https:\/\/guides.github.com\/introduction\/flow\/\" target=\"_blank\" rel=\"noopener\">feature requests<\/a>) is also a must.<\/strong>\n     <\/li>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><strong>Other Topics and Concepts<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p>Of course, after you have a solid foothold based on the paragraphs above, you may want to break out into what everyone is talking about and, most importantly, contrast and compare them to what you already know. Some commonly discussed items today are  <a href=\"https:\/\/www.fool.com\/investing\/2018\/01\/02\/cryptocurrencies-explained-in-plain-english.aspx\" target=\"_blank\" rel=\"noopener\">cryptocurrency<\/a> and <a href=\"https:\/\/www.fool.com\/investing\/2018\/01\/10\/the-basics-of-blockchain-technology-explained-in-p.aspx\" target=\"_blank\" rel=\"noopener\">blockchain<\/a>. <\/p>\n<p>&nbsp;<\/p>\n<p>For more trends, see <a href=\"https:\/\/www.gartner.com\/smarterwithgartner\/gartner-top-10-strategic-technology-trends-for-2018\/\" target=\"_blank\" rel=\"noopener\">here<\/a> and <a href=\"https:\/\/expertise.jetruby.com\/software-development-trends-of-2018-8b95fcf82c16\" target=\"_blank\" rel=\"noopener\">here<\/a>. <\/p>\n<p>&nbsp;<\/p>\n<p><strong>Summary<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p>To summarize, you must be pragmatic in what you choose to learn given the vast number of technology choices. At Solution Street, we are pragmatic with our clients in <a href=\"https:\/\/solutionstreet.com\/blog\/what-technology-stack-do-you-recommend\" target=\"_blank\" rel=\"noopener\">choosing the right technology to solve the business problem<\/a>. As software engineers, we should constantly be learning, but we need to be efficient and effective in what we learn. I hope you use this article in order to set your 2018 technology learning resolutions.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp; Every new year brings many great articles on technology trends and predictions. I assume many predictions will be correct and just as many will be incorrect. With so much technology to keep up with, it\u2019s virtually impossible to be all knowledgeable as a software engineer in everything. Nonetheless, as developers we want to know [&hellip;]<\/p>\n","protected":false},"author":6,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-2517","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Software Engineer Resolutions for 2018 - Solution Street Blog<\/title>\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.solutionstreet.com\/blog\/2018\/01\/27\/software-engineer-resolutions-for-2018\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Software Engineer Resolutions for 2018 - Solution Street Blog\" \/>\n<meta property=\"og:description\" content=\"&nbsp; Every new year brings many great articles on technology trends and predictions. I assume many predictions will be correct and just as many will be incorrect. With so much technology to keep up with, it\u2019s virtually impossible to be all knowledgeable as a software engineer in everything. Nonetheless, as developers we want to know [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.solutionstreet.com\/blog\/2018\/01\/27\/software-engineer-resolutions-for-2018\/\" \/>\n<meta property=\"og:site_name\" content=\"Solution Street Blog\" \/>\n<meta property=\"article:published_time\" content=\"2018-01-27T19:55:44+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/solutionstreet.com\/blog\/wp-content\/uploads\/2018\/01\/test4-copy-300x225.png\" \/>\n<meta name=\"author\" content=\"Peggy Frankel\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Peggy Frankel\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.solutionstreet.com\\\/blog\\\/2018\\\/01\\\/27\\\/software-engineer-resolutions-for-2018\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.solutionstreet.com\\\/blog\\\/2018\\\/01\\\/27\\\/software-engineer-resolutions-for-2018\\\/\"},\"author\":{\"name\":\"Peggy Frankel\",\"@id\":\"https:\\\/\\\/www.solutionstreet.com\\\/blog\\\/#\\\/schema\\\/person\\\/c4846451eff30e9514b534b2a2e01696\"},\"headline\":\"Software Engineer Resolutions for 2018\",\"datePublished\":\"2018-01-27T19:55:44+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.solutionstreet.com\\\/blog\\\/2018\\\/01\\\/27\\\/software-engineer-resolutions-for-2018\\\/\"},\"wordCount\":1730,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.solutionstreet.com\\\/blog\\\/2018\\\/01\\\/27\\\/software-engineer-resolutions-for-2018\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/solutionstreet.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/01\\\/test4-copy-300x225.png\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.solutionstreet.com\\\/blog\\\/2018\\\/01\\\/27\\\/software-engineer-resolutions-for-2018\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.solutionstreet.com\\\/blog\\\/2018\\\/01\\\/27\\\/software-engineer-resolutions-for-2018\\\/\",\"url\":\"https:\\\/\\\/www.solutionstreet.com\\\/blog\\\/2018\\\/01\\\/27\\\/software-engineer-resolutions-for-2018\\\/\",\"name\":\"Software Engineer Resolutions for 2018 - Solution Street Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.solutionstreet.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.solutionstreet.com\\\/blog\\\/2018\\\/01\\\/27\\\/software-engineer-resolutions-for-2018\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.solutionstreet.com\\\/blog\\\/2018\\\/01\\\/27\\\/software-engineer-resolutions-for-2018\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/solutionstreet.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/01\\\/test4-copy-300x225.png\",\"datePublished\":\"2018-01-27T19:55:44+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.solutionstreet.com\\\/blog\\\/#\\\/schema\\\/person\\\/c4846451eff30e9514b534b2a2e01696\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.solutionstreet.com\\\/blog\\\/2018\\\/01\\\/27\\\/software-engineer-resolutions-for-2018\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.solutionstreet.com\\\/blog\\\/2018\\\/01\\\/27\\\/software-engineer-resolutions-for-2018\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.solutionstreet.com\\\/blog\\\/2018\\\/01\\\/27\\\/software-engineer-resolutions-for-2018\\\/#primaryimage\",\"url\":\"https:\\\/\\\/solutionstreet.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/01\\\/test4-copy-300x225.png\",\"contentUrl\":\"https:\\\/\\\/solutionstreet.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/01\\\/test4-copy-300x225.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.solutionstreet.com\\\/blog\\\/2018\\\/01\\\/27\\\/software-engineer-resolutions-for-2018\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.solutionstreet.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Software Engineer Resolutions for 2018\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.solutionstreet.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.solutionstreet.com\\\/blog\\\/\",\"name\":\"Solution Street Blog\",\"description\":\"Quality Software Engineering - Technology and Consulting Articles\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.solutionstreet.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.solutionstreet.com\\\/blog\\\/#\\\/schema\\\/person\\\/c4846451eff30e9514b534b2a2e01696\",\"name\":\"Peggy Frankel\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/af71ceb16f89d32c9bb825a47f8057da9283b4a27a934bf0c47cdef65ad0eb5d?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/af71ceb16f89d32c9bb825a47f8057da9283b4a27a934bf0c47cdef65ad0eb5d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/af71ceb16f89d32c9bb825a47f8057da9283b4a27a934bf0c47cdef65ad0eb5d?s=96&d=mm&r=g\",\"caption\":\"Peggy Frankel\"},\"url\":\"https:\\\/\\\/www.solutionstreet.com\\\/blog\\\/author\\\/pfrankel\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Software Engineer Resolutions for 2018 - Solution Street Blog","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.solutionstreet.com\/blog\/2018\/01\/27\/software-engineer-resolutions-for-2018\/","og_locale":"en_US","og_type":"article","og_title":"Software Engineer Resolutions for 2018 - Solution Street Blog","og_description":"&nbsp; Every new year brings many great articles on technology trends and predictions. I assume many predictions will be correct and just as many will be incorrect. With so much technology to keep up with, it\u2019s virtually impossible to be all knowledgeable as a software engineer in everything. Nonetheless, as developers we want to know [&hellip;]","og_url":"https:\/\/www.solutionstreet.com\/blog\/2018\/01\/27\/software-engineer-resolutions-for-2018\/","og_site_name":"Solution Street Blog","article_published_time":"2018-01-27T19:55:44+00:00","og_image":[{"url":"https:\/\/solutionstreet.com\/blog\/wp-content\/uploads\/2018\/01\/test4-copy-300x225.png","type":"","width":"","height":""}],"author":"Peggy Frankel","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Peggy Frankel","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.solutionstreet.com\/blog\/2018\/01\/27\/software-engineer-resolutions-for-2018\/#article","isPartOf":{"@id":"https:\/\/www.solutionstreet.com\/blog\/2018\/01\/27\/software-engineer-resolutions-for-2018\/"},"author":{"name":"Peggy Frankel","@id":"https:\/\/www.solutionstreet.com\/blog\/#\/schema\/person\/c4846451eff30e9514b534b2a2e01696"},"headline":"Software Engineer Resolutions for 2018","datePublished":"2018-01-27T19:55:44+00:00","mainEntityOfPage":{"@id":"https:\/\/www.solutionstreet.com\/blog\/2018\/01\/27\/software-engineer-resolutions-for-2018\/"},"wordCount":1730,"commentCount":0,"image":{"@id":"https:\/\/www.solutionstreet.com\/blog\/2018\/01\/27\/software-engineer-resolutions-for-2018\/#primaryimage"},"thumbnailUrl":"https:\/\/solutionstreet.com\/blog\/wp-content\/uploads\/2018\/01\/test4-copy-300x225.png","inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.solutionstreet.com\/blog\/2018\/01\/27\/software-engineer-resolutions-for-2018\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.solutionstreet.com\/blog\/2018\/01\/27\/software-engineer-resolutions-for-2018\/","url":"https:\/\/www.solutionstreet.com\/blog\/2018\/01\/27\/software-engineer-resolutions-for-2018\/","name":"Software Engineer Resolutions for 2018 - Solution Street Blog","isPartOf":{"@id":"https:\/\/www.solutionstreet.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.solutionstreet.com\/blog\/2018\/01\/27\/software-engineer-resolutions-for-2018\/#primaryimage"},"image":{"@id":"https:\/\/www.solutionstreet.com\/blog\/2018\/01\/27\/software-engineer-resolutions-for-2018\/#primaryimage"},"thumbnailUrl":"https:\/\/solutionstreet.com\/blog\/wp-content\/uploads\/2018\/01\/test4-copy-300x225.png","datePublished":"2018-01-27T19:55:44+00:00","author":{"@id":"https:\/\/www.solutionstreet.com\/blog\/#\/schema\/person\/c4846451eff30e9514b534b2a2e01696"},"breadcrumb":{"@id":"https:\/\/www.solutionstreet.com\/blog\/2018\/01\/27\/software-engineer-resolutions-for-2018\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.solutionstreet.com\/blog\/2018\/01\/27\/software-engineer-resolutions-for-2018\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.solutionstreet.com\/blog\/2018\/01\/27\/software-engineer-resolutions-for-2018\/#primaryimage","url":"https:\/\/solutionstreet.com\/blog\/wp-content\/uploads\/2018\/01\/test4-copy-300x225.png","contentUrl":"https:\/\/solutionstreet.com\/blog\/wp-content\/uploads\/2018\/01\/test4-copy-300x225.png"},{"@type":"BreadcrumbList","@id":"https:\/\/www.solutionstreet.com\/blog\/2018\/01\/27\/software-engineer-resolutions-for-2018\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.solutionstreet.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Software Engineer Resolutions for 2018"}]},{"@type":"WebSite","@id":"https:\/\/www.solutionstreet.com\/blog\/#website","url":"https:\/\/www.solutionstreet.com\/blog\/","name":"Solution Street Blog","description":"Quality Software Engineering - Technology and Consulting Articles","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.solutionstreet.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.solutionstreet.com\/blog\/#\/schema\/person\/c4846451eff30e9514b534b2a2e01696","name":"Peggy Frankel","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/af71ceb16f89d32c9bb825a47f8057da9283b4a27a934bf0c47cdef65ad0eb5d?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/af71ceb16f89d32c9bb825a47f8057da9283b4a27a934bf0c47cdef65ad0eb5d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/af71ceb16f89d32c9bb825a47f8057da9283b4a27a934bf0c47cdef65ad0eb5d?s=96&d=mm&r=g","caption":"Peggy Frankel"},"url":"https:\/\/www.solutionstreet.com\/blog\/author\/pfrankel\/"}]}},"_links":{"self":[{"href":"https:\/\/www.solutionstreet.com\/blog\/wp-json\/wp\/v2\/posts\/2517","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.solutionstreet.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.solutionstreet.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.solutionstreet.com\/blog\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/www.solutionstreet.com\/blog\/wp-json\/wp\/v2\/comments?post=2517"}],"version-history":[{"count":0,"href":"https:\/\/www.solutionstreet.com\/blog\/wp-json\/wp\/v2\/posts\/2517\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.solutionstreet.com\/blog\/wp-json\/wp\/v2\/media?parent=2517"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.solutionstreet.com\/blog\/wp-json\/wp\/v2\/categories?post=2517"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.solutionstreet.com\/blog\/wp-json\/wp\/v2\/tags?post=2517"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}