{
    "componentChunkName": "component---src-templates-post-js",
    "path": "/blog/2013/06/17/coming-to-terms-with-enterprise-javascript",
    "result": {"data":{"site":{"siteMetadata":{"title":"your friend Joel's digital garden","description":"Articles and notes from a collaborator at egghead.io. Musings on software, business, and life from a skilled virtual assistant.","author":{"name":"Joel Hooks"},"keywords":["Video Blogger"]}},"mdx":{"excerpt":"What is enterprise javascript? Good question. One that might even make you chuckle 1  a little bit on the inside.\nThe word \"enterprise\" is definitely a loaded term. It could be considered by\nsome to be a buzzword. Others might say \"Why are…","fields":{"github":"https://github.com/joelhooks/joelhooks-com/tree/master/content/legacy_blog/2013-06-17-coming-to-terms-with-enterprise-javascript.markdown"},"body":"var _excluded = [\"components\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"layout\": \"post\",\n  \"title\": \"Coming to Terms With Enterprise JavaScript\",\n  \"date\": \"2013-06-17T00:00:00.000Z\"\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"h2\", null, \"What is enterprise javascript?\"), mdx(\"p\", null, \"Good question. One that might even make you chuckle\", \"[1]\", \" a little bit on the inside.\\nThe word \\\"enterprise\\\" is definitely a loaded term. It could be considered by\\nsome to be a buzzword. Others might say \\\"Why are we talking about starships?\\\"\"), mdx(\"p\", null, \"When I use the term \\\"enterprise\\\" to describe software, I typically mean\\n\\\"software that helps people get work done more efficiently.\\\" In this sense,\\nAngry Birds and your favorite Twitter client are not enterprise applications. A\\nTwitter client that has additional features to facilitate and track a company's\\nsocial engagement, on the other hand, might fall into the enterprise category.\"), mdx(\"p\", null, \"An application that is used in a call center to track incoming support requests\\nis definitely \\\"enterprise\\\". A system that connects several \\\"legacy\\\" systems and\\npresents employees with a unified interface and saves 1000s of man-years every\\nmonth of application context switching? Enterprise.\"), mdx(\"p\", null, \"Enterprise software is software that is sold to a business or government agency,\\nand not to individuals. Content management, billing, point of sale, payment\\nprocessing, customer relations, help desk, project management, enterprise\\napplication integrations, time tracking, business intelligence... you get the\\nidea.\"), mdx(\"p\", null, \"This is software for \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"getting things done\"), \". This is software that \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"makes a business\\nmoney\"), \". Because of this, it is software that businesses will invest heavily in.\"), mdx(\"h2\", null, \"Enterprise isn't cool.\"), mdx(\"p\", null, \"Maybe. It certainly evokes thoughts of ugly user interfaces with huge J2EE\\nbackends. Developers working on Saturdays to get their TPS reports filed.\\nEnterprise software certainly can be that. It doesn't have to be.\"), mdx(\"p\", null, \"Today's software users, even enterprise software users, are more sophisticated.\\nThey are used to using applications like Facebook and Gmail on a daily basis.\\nThey have iPhones that present beautiful easy to use interfaces and excellent\\nuser experience (UX). They want more.\"), mdx(\"p\", null, \"More importantly, perhaps, is that software that provides excellent UX makes it\\neasier to get work done. Using software that sucks, is slow, is ugly, or\\ngenerally misbehaves is counter-productive. Bad software represents lost revenue\\nand increased overhead. Employees that are forced into bad software are forced\\nto focus their energy on wrestling the software. Not only does this make them\\nmiserable, but it saps a business's most valuable resource - the brain-power and\\nenergy of their employees.\"), mdx(\"h2\", null, \"Enterprise can be cool.\"), mdx(\"p\", null, \"It can! It largely depends on how you define \\\"cool.\\\" For me, my biggest thrill\\nin software development is eliminating cognitive overhead for people that are\\ntrying to get work done. I want to make their working lives better. I want them\\nto be mentally free to concentrate on harder problems. I want their businesses\\nto make more money. I want them to see real value in their software, so that\\nthey will keep hiring developers to build more software. Achieving these goals\\nis definitely cool.\"), mdx(\"h2\", null, \"Where does JavaScript fit in?\"), mdx(\"p\", null, \"In today's world, savvy enterprise customers demand rich experiences. They want\\nto be able to access their data anytime and anywhere. They carry smart phones\\nand tablets and expect their software to function on these devices as well as it\\ndoes on their desktop computers.\\nArguably the quickest way to achieve this multi-screen approach is through web\\napplications. Applications that run, and run well, in any modern browser. You\\ndon't have negotiate walled-garden app stores to deploy a web app.\"), mdx(\"p\", null, \"HTML pages originated as a format for linking scientific documents. This was a\\ngreat achievement, but soon users wanted more interactivity. JavaScript was\\nintroduced, and now we could begin to see richer experiences, right in the\\nbrowser. This eventually brought us to DHTML, or dynamic HTML. The next\\nevolution in web pages was AJAX, or asynchronous JavaScript and XML. This is a\\nhuge step, allowing us to hit the server for additional data without moving to\\nan entirely new page.\"), mdx(\"p\", null, \"These days we've gone a step further with single-page web applications. A\\nsingle-page app isn't a brochure-like web page for strictly delivering content.\\nIt is a real application, built to do work. A single-page application is a\\n\\\"thick\\\" client that is more similar to a desktop application than a web page.\"), mdx(\"p\", null, \"JavaScript has matured. HTML has matured. CSS has matured. All of these\\ntechnologies continue to see growth as their standards are updated to match\\nmodern technology, and the demands of users.\"), mdx(\"p\", null, \"Enterprises want to leverage these advances and build robust applications to\\nfacilitate commerce. JavaScript is uniquely qualified as a programming language\\nto help with this. It allows us to harness the the computing power of modern\\ncomputers directly in the browser. In the past, we were forced to offload much\\nof the work for displaying a web page on to the server. A request was made and\\nthe server generated a page that was displayed in the browser.\"), mdx(\"p\", null, \"With modern JavaScript we are able to query the server for data via its\\napplication programming interface (API) and use that data to dynamically update\\ncontent in the browser without actually changing URLs or reloading a page. The\\nclient side application has its own templates and logic and can manage itself\\ntidily. The server is now a caretaker for data, while the application running in\\nthe browser is entirely in charge of presentation and interaction with the data\\nthat is provided.\"), mdx(\"p\", null, \"JavaScript has been used in enterprise applications for many years. It is almost\\nas if we've come full circle. The major difference in modern applications is\\nthat presentation concerns can now be completely offloaded to the client. We\\naren't beholden to a JSP or other server-side page template for rendering\\ncontent for our users. After the initial payload of the web application is\\ndelivered, the server's job is now reduced to handling requests for data. This\\nis still a big job, but the separation of concerns opens up a lot of\\nopportunity. Because the server's boundaries are clearly separated from\\npresentation and focused on data, we are able to build APIs that can support\\ninfinite possibilities in terms of how we present and interact with the data\\nthat is flowing from the server.\\nThis is awesome. This is opportunity. We are going to take advantage of this.\"), mdx(\"h2\", null, \"So what is enterprise JavaScript?\"), mdx(\"p\", null, \"Enterprise JavaScript is used for building web applications that facilitate\\ncommerce is some form or another. Enterprise JavaScript is likely going to be\\nlarger and more complicated than a simple web page. Enterprise JavaScript is\\nprobably going to be developed by a team, perhaps a large team or even several\\nteams, and will require stronger standards and practices than smaller\\nnon-enterprise use cases.\"), mdx(\"p\", null, \"Is it useful to tack on this \\\"enterprise\\\" label to JavaScript? Sometimes. When\\nyou say that you are building an enterprise application, it definitely evokes a\\nmental image of what you are dealing with. Good or bad. You could say\\n\\\"large-scale\\\" JavaScript instead, but it wouldn't be as specific. I'm an\\nenterprise developer, and I use JavaScript. Enterprise JavaScript.\"), mdx(\"p\", null, \"[1][https://enterprise-js.com/]\", \"(\", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://enterprise-js.com/\"\n  }, \"https://enterprise-js.com/\"), \") is hilarious. Hint:\\ndon't follow its advice!\"));\n}\n;\nMDXContent.isMDXComponent = true;","frontmatter":{"title":"Coming to Terms With Enterprise JavaScript","date":"June 17, 2013","banner":null,"slug":null,"keywords":null}}},"pageContext":{"id":"53a10cef-a4fe-585e-8b14-d5c47607f51a","prev":{"id":"8351847a-bd87-526c-b088-62cf34470d6b","parent":{"name":"2013-06-22-optimizing-a-photography-studio-website-for-converstion-and-seo-the-analysis","sourceInstanceName":"legacy"},"excerpt":"The internet is a competitive place for small businesses, and this is especially\ntrue when we are talking about portrait photographers. My lovely wife is a\n family photographer in Fort Worth , Texas. She's been\ndoing portrait photography…","fields":{"title":"Optimizing a Photography Studio Website for Converstion and SEO: The Analysis","slug":"blog/2013/06/22/optimizing-a-photography-studio-website-for-converstion-and-seo-the-analysis","date":"2013-06-22T00:00:00.000Z"}},"next":{"id":"f2d3c97d-3cf6-5d47-aa47-dd31b526a3e0","parent":{"name":"2013-06-10-the-paralyzing-grip-of-fear","sourceInstanceName":"legacy"},"excerpt":"My sons love playing basketball. After a certain age\n(around 12), youth sports change. The court or field is no longer filled with\nkids that were dragged to the game by their parents. These kids are here because\nthey love playing the game. So what do…","fields":{"title":"The Paralyzing Grip of Fear","slug":"blog/2013/06/10/the-paralyzing-grip-of-fear","date":"2013-06-10T00:00:00.000Z"}}}},
    "staticQueryHashes": ["1045846374"]}