Blog | Parthenon Software Grouphttps://www.parthenonsoftware.com/blog/2024-03-28T20:32:08.718367+00:00BlogSoftware Development: Managing for Success2016-01-21T23:23:10+00:002024-03-28T20:24:04.870667+00:00chrishttps://www.parthenonsoftware.com/blog/author/chris/https://www.parthenonsoftware.com/blog/software-development-managing-for-success/<p class="western"><span size="4">Fear can keep companies from using software to solve business problems. Stories from past projects can make programming seems like magic – and just as hard to evaluate. Below are tips to manage risk and plan for success.</span></p>
<p class="western"><br/><br/></p>
<p class="western"><span size="4"><b>Carefully Check Whether Each Deliverable Works For You </b></span></p>
<p class="western"><span size="4">There are always fewer highly productive developers than the economy requires, and hiring them is best done by … another developer. </span></p>
<p class="western"><span size="4">However, everyone is qualified to evaluate a development team’s </span><span size="4"><i>work</i></span><span size="4">, and specifically, how/whether it solves their business problems. Our clients start by clearly defining what they want us to build. If they find it difficult to define it in a way developers will understand, we may have them spend some time either refining their specifications or having a business analyst help them with the task. At the end of each “sprint” (usually a two-week period), they receive updated code. As they give clear feedback on each deliverable, they help keep the team on track. </span></p>
<p class="western"><span size="4">To plan for success, set aside sufficient staff time to fully assess each deliverable in time to provide input for the very next sprint. Your “user acceptance testing” (UAT) is a crucial part of the process. </span></p>
<p class="western"><br/><br/></p>
<p class="western"><span size="4"><b>Work With Your Development Team On Bugs</b></span></p>
<p class="western"><span size="4">Bugs are common in all software ecosystems. Developers hate them, and want to collaborate with you to identify and fix bugs to make your applications robust. Instead of simply checking whether your software loads/opens, use it aggressively, and promptly file a separate issue for each problem you find.</span></p>
<p class="western"><span size="4"><span><a href="https://www.parthenonsoftware.com/blog/help-us-finish-your-software/">A thorough issue description</a> earns developers’ respect and enthusiasm. You can probably guess what </span><span size="4"><i>not </i></span><span size="4">to do, but here are a few tips:</span></span></p>
<ul>
<li>
<p><span size="4">When a developer is working on your issue, they may have further questions for you. Please answer these promptly. It’s likely that the relevant part of the code is “open” and </span><span size="4"><i>being worked on right now</i></span><span size="4">. If you delay answering, they will move on to the next bug, with a consequent productivity hit as they’ll have to open up that section of code </span><span size="4"><i>again </i></span><span size="4">in the future.</span></p>
</li>
<li>
<p><span size="4">Vague problem descriptions lead to developers feeling confused and demoralized. </span></p>
</li>
<li>
<p><span size="4">Worse than useless (from a developer’s point of view) are: sending bug-related notes in a Word, Excel, or PowerPoint document; mentioning problem details in phone or email messages but without the ticket number; calling a team meeting and telling all the developers about a bug that only one of them will actually be working on. </span></p>
</li>
</ul>
<p class="western"><span size="4">To specify the order in which issues are fixed, you can set a severity/priority level for each issue you create (and issues found by QA as well). As an example, a database error upon login that blocks further testing should be High or Urgent. A visual glitch that doesn't block testing can have a lower priority.</span></p>
<p class="western"><span size="4">When you feel particularly strongly about a bug, best practice is to file a complete issue description with screen captures or other examples, assign a high severity/priority, and then include the ticket number in an urgent email or phone call. Once we know that ticket 7334 is radioactive, with a bullet, the information to reproduce and start work on it will be right where the team needs it.</span></p>
<p class="western"><br/><br/></p>
<p class="western"><span size="4"><b>Manage Tech Debt</b></span></p>
<p class="western"><span size="4">Also called “software entropy”, technical debt refers to the idea that when code is not completely finished (or the users’ needs change), the developers’ time spent updating and maintaining the existing codebase eventually becomes more than it would require to write fresh new code.</span></p>
<p class="western"><span size="4">Some “tech debt” makes sense in a first release, where the goal is to get reactions from users, then smooth and streamline and optimize. Address long term tech debt by upgrading and/or rewriting your software, module by module. Prioritize the most critical (or most creaky) parts first. Based on the results from the first few modules, fine-tune plans and repeat. The most risky approach is to ignore the issue.</span></p>
<p class="western"><span size="4">Part of planning for success is to manage tech debt in a way that suits each individual project. If in doubt, ask the development team for advice on approaches to this.</span></p>
<p class="western"><br/><br/></p>
<p class="western"><span size="4"><b>Make Device, Browser, and Platform Decisions</b></span></p>
<p class="western"><span size="4">Developers should be able to explain the implications of these choices without condescension. Rely on their expertise and understanding of trade-offs. </span></p>
<p class="western"><span size="4">Many companies reduce risk (and tech debt) by polishing their software on just one platform, before rolling out on all their target devices.</span></p>
<p class="western"><br/><br/></p>
<p class="western"><span size="4"><b>Maintain Control</b></span></p>
<p class="western"><span size="4">At the beginning of a project, control consists in specifying precisely what needs to be built. Most teams will ask for the user stories or “jobs” the software will accomplish: </span></p>
<p class="western"><span size="4"><i>User story: Find the nearest (nouns) in my price range.</i></span></p>
<p class="western"><span size="4"><i>Job: When (event: customer’s GPS indicates they have moved more than N units), I want to (event: notify the server), so I can (goal: continue to serve location-specific data). </i></span></p>
<p class="western"><span size="4">It’s also key to provide a description of all the kinds of data that the code will be working with. These and other system specifications can be used to develop an estimate (expressed as a range of development hours) for each of the chunks of work. </span></p>
<p class="western"><span size="4">More control can be exercised in the choice of which chunks will be built, or which will be built first. Hours spent per ticket or feature appear on invoices, allowing for cost tracking. Finally, as noted, carefully specifying the priority of issues to be fixed allows your project to be wrapped up cleanly.</span></p>
<p class="western"><a name="_GoBack"></a> <br/><br/></p>
<p class="western"><span size="4">Planning how to address these issues will reduce the uncertainty in your software development projects and make it easier for you to manage them to a successful outcome.</span></p>The Important Connection between ERP Systems and In-memory Computing2015-07-31T22:12:05+00:002024-03-28T20:09:57.881775+00:00chrishttps://www.parthenonsoftware.com/blog/author/chris/https://www.parthenonsoftware.com/blog/the-important-connection-between-erp-systems-and-in-memory-computing/<p dir="ltr">The era of big data and analytics is upon us. Not only does this mean that extensive amounts of data will be coming in, it also means that all of it must be dealt with in a way that best fits with company needs. One such approach is through the use of in-memory computing and its speed allowance. Now what happens when you combine it with the ever popular ERP (Enterprise Resource Planning) system?</p>
<p></p>
<h2 dir="ltr">Why is in-memory computing such a big deal?</h2>
<p></p>
<p dir="ltr">Let's take a step back and explore what in-memory computing encompasses. Most data is usually shipped off to storage on a server for future use. Unfortunately, processing all that data can prove to be both challenging and cumbersome given that it's easy for bottlenecking to occur anywhere between access, memory transfer, return to storage and access of the next data set. Needless to say, you could potentially end up waiting for long periods of time. Who wants to do that? This is where in-memory computing comes into play. Since the data is stored in the RAM, faster process and access becomes possible. As a result, you can can get results in near real-time. For the busy person, such speeds are exponentially beneficial especially in terms of improved application performance.</p>
<p></p>
<h2 dir="ltr">What about ERP systems?</h2>
<p></p>
<p dir="ltr">Given its history as an organizational tool used for tracking and managing data from business activities, most people should already know about ERPs. Basically, you have a set of integrated applications that enable you to keep track of all business activities across departments and allows you to plan for future activities through management of resources and identifying tactics and strategies. Sounds pretty handy doesn't it? Who wouldn't want a single system of customer engagement and business activities? And while it’s been around and in use for years, even deeper ERP penetration has been predicted as we move forward. How so? It’s all about versatility and deeper integration of analytics and data.</p>
<p></p>
<h2 dir="ltr">So, what happens when you combine the two?</h2>
<p></p>
<p dir="ltr">Obviously, both ERP systems and in-memory computing are good on their own. However, combining the two makes things even better. A proliferating idea is that in-memory computing is a key to unlocking business value via ERP and CPM (Corporate Performance Management). Essentially, in-memory computing aids in amplifying ERP capabilities through its near real-time feature as it applies to constantly incoming analytics. Keep in mind that in a time where ERP reporting is becoming a necessity, especially in terms of operational complexity, in-memory computing enables the ability to identify any number of things, including any shortcomings. Furthermore, the ability to run transactions at the same time as analytics and even to handle complicated operations in the same time period as less complicated operations, is definitely a bonus.</p>
<p></p>
<h2 dir="ltr">Conclusion</h2>
<p></p>
<p dir="ltr">In their separate entities, ERP and in-memory computing have been used multiple times over and they have proven their worth. As such, it makes sense to put the two together. Each heightens the ability of the other to make the best use of their capabilities. Still, full adoption of the combined system hasn't happened quite yet due to the disruption of “normal” operations. However, that doesn't mean that it's not in the adoption process. ERP coupled with in-memory computing is definitely something worthy pursuing for your business as it will aid in your operations and perhaps your overall company gains.</p>The Impact of Organizational Entrenchment2015-06-26T21:38:47+00:002024-03-28T19:34:48.814939+00:00chrishttps://www.parthenonsoftware.com/blog/author/chris/https://www.parthenonsoftware.com/blog/the-impact-of-organizational-entrenchment/<p dir="ltr">Over the years there's been a big debate between the merits of SaaS (Software-as-a-Service) and on-premise software. But is one necessarily better than the other? Of course it depends on the organization in question. Then again, there are cases in which organizations have switched from one to the other. As such a lot of emphasis has been placed on organizational entrenchment within a company and how said company addresses complications that arise.</p>
<p></p>
<h2 dir="ltr">What is organizational entrenchment?</h2>
<p></p>
<p dir="ltr">Entrenchment refers to firmly establishing something or oneself. In the case of organization entrenchment, it becomes a matter of establishing practices that can and will resist change and are more likely to remain intact for the long haul. Such is important has it sets organizational standards for structure and methodology.</p>
<p></p>
<h2 dir="ltr">So, what's the big deal with SaaS and on-premise software?</h2>
<p></p>
<p dir="ltr">While organizational entrenchment can be applied in different contexts, one of the biggest areas of interest comes from making a decision between SaaS and on-premise software. Basically that each approach has its own methodology and adheres to the practices therein.</p>
<p></p>
<p dir="ltr"><strong>SaaS</strong></p>
<p></p>
<p dir="ltr">Obviously SaaS is a big thing. What you have here is access to provider managed and delivered software that is centrally located and accessible via subscription through the Internet. In this sense, you have access to it from anywhere at any time. Moreover, because of its nature, it's also known as "on demand software" and you only pay for what you use.</p>
<p></p>
<p dir="ltr">In addition, it's generally been noted that SaaS is faster in terms of reaching the goal as well as having lower costs. Furthermore, upgrades, security, etc are the provider's responsibility so the user doesn't have to worry about them. That being said, there's also the potential for capacity issues depending on your network connection and how clogged or unclogged it is. Other issues which could cause potential problems include information security, integrity and availability</p>
<p></p>
<p dir="ltr"><strong>On-Premise</strong></p>
<p></p>
<p dir="ltr">As for on-premise, this particular approach involves software that is run on company owned and issued machines as well as on company grounds. As such, there are few more restrictions to consider when implementing this course.</p>
<p></p>
<p dir="ltr">Sill, it's important to remember that on-premise software has its benefits. For instance, data security problems are reduced because business is kept within a closed system as well as remaining close to the source. There's also a control factor to consider. With on-premise software, you have more control over the software itself, though you may want to have in-house IT staff monitor things. At the same time, it's equally important to be aware that up front costs can be high -you're paying for servers, infrastructure as well as diagnostic and repair costs.</p>
<p></p>
<h2 dir="ltr">Where are the complications?</h2>
<p></p>
<p dir="ltr">In general terms, the method of software delivery has been via either SaaS or on-premise software, but not both.</p>
<p></p>
<p dir="ltr">That being said, disruption to this thought process comes from organizations reverting to on-premise software from SaaS due to any number of factors, including poor service. As a result, on-premise software must go through some changes that don’t necessarily go along with established practices. Thus, there are IT complexities/challenges that must be addressed. Factors such as faster change cycles, shorter development time, and reduced budgets appear to be better served by SaaS. However, if you were to revert to on-premise, it goes without saying that you still expect such needs to be fulfilled by on-premise. In other words, it's kind of like having to bring on-premise up to speed with SaaS in terms of those factors while working within the restrictions of being on-premise. In such a situation, it seems like you have to find a way to way to combine elements -however small they may be- of both SaaS and on-premise.</p>
<p></p>
<h2 dir="ltr">Conclusion</h2>
<p></p>
<p dir="ltr">What's the takeaway from all this? Organizational entrenchment is a good thing, but one should also take fluctuations into consideration.. Here you have the policies and operational practices that dictate how your organization approaches different projects and goals. That being said, there are times when these guidelines do change despite initial intentions to see that they don't. As in the case of revision, it's a matter of being aware of complexities and challenges and the ability to rise up and meet them.</p>SOA vs API: What's the Big Deal?2015-06-05T20:40:14+00:002024-03-28T13:53:41.665268+00:00chrishttps://www.parthenonsoftware.com/blog/author/chris/https://www.parthenonsoftware.com/blog/soa-vs-api-whats-the-big-deal/<p dir="ltr">As far as debates go, the API (Application Programming Interface) vs SOA (Service Oriented Architecture) dispute has been pretty high on list. Here you have API purists who push that APIs are the way to go while SOA proponents have called API an extension of SOA. But are API and SOA really that different? Or are they more similar than some would like to admit? Let’s look at things from an Enterprise IT approach.</p>
<p></p>
<h2 dir="ltr">The Goal</h2>
<p></p>
<p dir="ltr">When it comes to Enterprise IT, the main goal has always been to meet business needs. Understandably this involves things like availability, scalability, performance, security and so on. In other words, you have hardware, infrastructure and applications that aid in meeting business needs by aligning company strategy with deliverables. This is where API and SOA come in. With them, Enterprise IT can be offered as a kind of service as a result of both API and SOA making use of combined services to meet constantly changing business needs.</p>
<p></p>
<h2 dir="ltr">How do API and SOA Accomplish the Goal?</h2>
<p></p>
<p dir="ltr">With SOA, business needs are placed at the forefront. Using SOA means you are using design principles which divide tasks and responsibilities into services which can work in conjunction to meet a need/objective. As such, you can identify the services you need to meet the business need and can thus create tools and resources.</p>
<p></p>
<p dir="ltr">As for APIs, they serve as a form of communication between software components. In other words, it's the actual implementation of the software design via routines, protocols and tools. More specifically, emphasis is placed on broadly deployed APIs and Open APIs (also known as Public API). What's the appeal here? With Open APIs, application programs and even websites can interact with each other and share data via REST, SOAP, and other web technologies.</p>
<p></p>
<h2 dir="ltr">Differences and Similarities</h2>
<p></p>
<p dir="ltr">If you take a look the differences between API and SOA in terms of Enterprise IT, there really aren’t that many.</p>
<p></p>
<p dir="ltr">Probably the biggest difference between API and SOA is the fact that APIs are more open for creativity meaning that there isn't just one way to use them. Moreover, they also support JSON formatting and are easier to work with on an external level. Additionally, whereas APIs can be used for both internal and external use-cases, SOA is predominantly used for internal use-cases.</p>
<p></p>
<p dir="ltr">But in the long run, such differences are fairly trivial.</p>
<p></p>
<p dir="ltr">Think about it. API and SOA share:</p>
<p></p>
<ul>
<li dir="ltr">
<p dir="ltr">Architectural principles, especially in terms of infrastructure, manageability and governance.</p>
</li>
<li dir="ltr">
<p dir="ltr">The need to be secured, monitored, orchestrated, mediated and audited.</p>
</li>
<li dir="ltr">
<p dir="ltr">Both are services. Both rely on other applications and services which are often managed by other developers, organizations or different providers, though API do so in a more open fashion.</p>
</li>
</ul>
<p></p>
<p dir="ltr">And really, SOA even makes use of APis in order to function properly. </p>
<p></p>
<h2 dir="ltr">Conclusion</h2>
<p></p>
<p dir="ltr">All too often it seems like purists will get caught up in the battle rather than realize the similarities. API purists have even gone as far as to call SOA dead, but really with many SOA principles ingrained in API, that's hardly fair. Sure, API have unique attributes, but the bottom line is that both API and SOA have the same goals in mind and ultimately lend themselves to fulfilling an objective be it business needs or otherwise.</p>The Agile Manifesto. . . Should it be Revised?2015-04-24T21:08:38+00:002024-03-28T19:49:42.335963+00:00chrishttps://www.parthenonsoftware.com/blog/author/chris/https://www.parthenonsoftware.com/blog/the-agile-manifesto-should-it-be-revised/<p dir="ltr">Agile methodology has been around for a while and has proven its worth in various situations. That being said, there have been instances in which it hasn’t been as successful. This has lead to people questioning the suitability of agile and more specifically, its manifesto. As a result, a call has gone out to revise the values and principles on which agile is based.</p>
<p></p>
<h2 dir="ltr">What is Agile?</h2>
<p></p>
<p dir="ltr">The Agile methodology refers to a software development process in which collaboration, cross-functional teams and self-organization play key roles. Also included in the process are things like adaptive planning, continuous improvement, early delivery and rapid response to change. In simple terms software is created through breaking a project down into phases and upon completion of each phase, working software is passed along to the client. Add in constant communication with the client and high quality development practices and you’re good to go.</p>
<p></p>
<p dir="ltr">The particular draw to agile development stems from things like superior ROI (Return on Investment), a reduction in potential risks due to constant delivery of working software and constant inspection, an increase in productivity, a sustainable development environment, self-directed work environment and a software development approach that takes the uniqueness of every project into consideration.</p>
<p></p>
<h2 dir="ltr">The Manifesto</h2>
<p></p>
<p dir="ltr">When the Agile Manifesto was written it sought to bring meaning to the agile methodology through shared ideas, values, objectives and motivations. The<a href=”<a href="http://agilemanifesto.org/principles.html">http://agilemanifesto.org/principles.html</a>”>12 principles</a>that resulted do exactly that as well as highlighting standards that every instance of agile should encompass and accomplish.</p>
<p></p>
<h2 dir="ltr">Revise the Manifesto?</h2>
<p></p>
<p dir="ltr">If the manifesto specifies certain values and principles shouldn’t that be the accepted mode?</p>
<p></p>
<p dir="ltr">Not for a large number of developers. There are those who have used Agile and find it doesn’t work for them and then there are those who want to revise the manifesto so agile does work for them. For the most part, the issue involves the complaint that the manifesto details unrealistic viewpoints and how it’s next to impossible to adhere to them. Basically it’s the idea that things need to be updated so they apply to the present.</p>
<p></p>
<h2 dir="ltr">So, if it’s about “real world” instances, what kind of situations fall under that category?</h2>
<p></p>
<p dir="ltr">For one there’s the example of businesses shipping their software needs overseas which makes it nearly impossible to follow agile methodology.</p>
<p></p>
<p dir="ltr">Other instance include cases where people claim to be following Agile, but they aren’t really. In this case, there’s the claim that the core values of Agile have been forgotten.</p>
<p></p>
<p dir="ltr">And then there are cases where people want better specifications of skill, discipline, etc.</p>
<p></p>
<h2 dir="ltr">But is that Enough to Revise the Manifesto?</h2>
<p></p>
<p dir="ltr">While there are some valid points in the aforementioned scenarios, there are others that simply don’t make sense where agile is concerned. For instance, in the case of overseas development work, it’s possible to send templates and requirements, but the practice falls outside the scope of agile. After all key points of agile are collaboration between client and developer on a daily basis and face to face communication. Changing the manifesto to allow for such an situation isn’t very agile.</p>
<p></p>
<p dir="ltr">Moreover, it’s entirely possible that some find agile difficult to use in its current state because they aren’t taking the methodology far enough or that they’re taking it to far. Essentially this means that they might be putting too much emphasis on certain things and not enough on others.</p>
<p></p>
<p dir="ltr">The examples aside, it’s important to note that changing the manifesto means changing the very definition of agile. As is, the principles of Agile work because they support each other.</p>
<p></p>
<h2 dir="ltr">Conclusion</h2>
<p></p>
<p dir="ltr">For now, there are no present or future plans to revise the manifesto. Honestly, the debate has been going for years now and there hasn’t been any change. That being said, there’s certainly enough a push to see it happen. Given that information, one has to wonder if a revision will ever truly come to pass.</p>
<p><br/><br/><br/></p>Why Native App Development is in Decline2015-04-17T20:38:24+00:002024-03-28T19:27:29.230735+00:00chrishttps://www.parthenonsoftware.com/blog/author/chris/https://www.parthenonsoftware.com/blog/why-native-app-development-is-in-decline/<p dir="ltr"></p>
<p dir="ltr">Everywhere you look, there’s at least one or two people playing with their mobile devices. Such activity leads into the commonly known fact that mobile app usage is on the rise. What is that makes an mobile app so popular? Could it be the portability of it, or it is a matter of the newest and greatest app? In any case, things are on the up and up. However, development of said apps has undergone a pretty big transition. Along with improvements in HTML5, cross-platform resources are taking over. What does this mean for native apps? A fairly steady decline.</p>
<p></p>
<h2 dir="ltr">Native Apps</h2>
<p></p>
<p dir="ltr">When operating systems first came into being, there were set specifics about how they could be used as well as the way in which applications could be developed for them. And of course, the ability to design an application for multiple platforms wasn’t even a thing. . . yet. If you wanted the same application for Android, iPhone, Blackberry, etc, you had to develop the application in multiple versions and codebases.</p>
<p></p>
<p dir="ltr">Such is the basis behind native apps. This process also involves the use of platform specific languages and SDKs (Software Development Kit) so that the application is able to run in a certain manner. As a result, an native app essentially “lives’ on a device and can access device hardware and software. As a result, flashy and powerful apps can be expected alongside fast performance, ease of use and consistent look and feel.</p>
<p></p>
<p dir="ltr">Nevertheless, technologies and development practices have changed and improved. People are no longer looking to native apps as the only means to develop mobile apps. More likely than not, they are turning to other options.</p>
<p></p>
<h2 dir="ltr">A Decline in Native Development?</h2>
<p></p>
<p dir="ltr">Why the aversion for native apps? It’s not so much that people dislike native apps. After all, native apps are powerful and secure. However, the disadvantages and risks associated with them have tended to outweigh the benefits. As most people already know, it’s difficult to maintain and support native apps if there are multiple platforms in use.</p>
<p></p>
<p dir="ltr">As for the risks, there are risks in everything, but one has to decide if the risks associated with native apps are really worth it. Such risks include:</p>
<p></p>
<ul>
<li dir="ltr">
<p dir="ltr">Building an app that isn’t desired.</p>
<ul>
<li dir="ltr">
<p dir="ltr">Most likely this won’t happen if you’re careful and pay attention to your target audience. Nevertheless, it has happened because companies focus on their own perspective without necessarily realizing it.</p>
</li>
</ul>
</li>
</ul>
<p></p>
<ul>
<li dir="ltr">
<p dir="ltr">Inability to handle user growth</p>
<ul>
<li dir="ltr">
<p dir="ltr">What if your app stakes off? Can you realistically handle any number of users from 1 to hundreds of thousands? More precisely, are you equipped to support all of them?</p>
</li>
</ul>
</li>
</ul>
<p></p>
<ul>
<li dir="ltr">
<p dir="ltr">Security breaches</p>
<ul>
<li dir="ltr">
<p dir="ltr">Yes, it happens despite the best efforts to keep things secure. More likely than not, it’s because the need for the security precautions were either overlooked or underestimated.</p>
</li>
</ul>
</li>
</ul>
<p></p>
<ul>
<li dir="ltr">
<p dir="ltr">Risk of getting denied</p>
<ul>
<li dir="ltr">
<p dir="ltr">Don’t play by the App Store rules? It’s likely that your app will get denied and unfortunately it might mean significant changes to get the app approved or approval is even possible at all.</p>
</li>
</ul>
</li>
</ul>
<p></p>
<h2 dir="ltr">A Couple Alternatives</h2>
<p></p>
<p dir="ltr">With native apps on the decline, it goes to show that alternative development processes are on the rise. Nevertheless, some of the methodologies have been around for a while and have remained quite popular over the years. So, why are they just edging out native apps now? A lot has to do with functionality and development time.</p>
<p></p>
<p dir="ltr">One such alternative is that of HTML5 apps. Here you have dynamic web pages that emulate native apps. In other words, you can use JavaScript and HTML5 to create dynamic web apps. The appeal of this particular approach comes from its ability to work on multiple screen sizes and multiple devices thanks to a write once, run everywhere mentality. In addition, recent improvements to HTML5 are making it possible to mobile web features to be just as flashy and powerful as native apps without having to sacrifice the simplicity of creating them.</p>
<p></p>
<p dir="ltr">Another popular choice is Apache Cordova. The particular draw to this framework stems from its hybrid nature. Here you have the ability to utilize elements of both native and web apps. And like HTML5 apps, you can write the code base once and it will work on multiple platforms. Better yet, costs are low, development time is fairly quick and there’s less issues given that there’s only one code base to maintain and support.</p>
<p></p>
<p dir="ltr">Keep in mind that such options are only two of many, but have still made a pretty profound impact on mobile app development.</p>
<p></p>
<h2 dir="ltr">Cases in which Native is still better?</h2>
<p></p>
<p dir="ltr">Given the aforementioned information, there must be cases where native apps are still better right? Yes, but it’s pretty rare and really only pertains to specific elements. For instance, if you’re looking for extremely specific features on a specific platform, then native is probably the best approach.</p>
<p></p>
<h2 dir="ltr">Conclusion</h2>
<p></p>
<p dir="ltr">Even though there will be applications that will continue to rely on native application development, there’s definitely going to be a continual decrease in its general use. Thanks to resources like Apache Cordova and HTML5, the way has already been paved for all kinds of cross-platform applications to come. Still, it begs the question, will there be a time when native apps are ruled entirely obsolete? I guess we’ll see.</p>Some Basics of API Driven Development2015-04-03T15:14:36+00:002024-03-28T06:40:04.319687+00:00chrishttps://www.parthenonsoftware.com/blog/author/chris/https://www.parthenonsoftware.com/blog/some-basics-of-api-driven-development/<p dir="ltr">There are many factors that set the tone for developing software applications, but none more than APIs. APIs (Application Programming Interface) literally handles all input, operations and underlying types of an application. Needless to say, that’s a substantial responsibility, but API are up to the challenge. Is it any wonder that developers have taken up an API-centric focus when developing? But what exactly is API driven development? Let’s take a look at some</p>
<p dir="ltr">basics.</p>
<p></p>
<h2 dir="ltr">What is API Driven Development?</h2>
<p></p>
<p dir="ltr">Simply stated, API driven development involves development where API is the central component. In other words, all development revolves around the API and how it aids in the development process. Essentially, you build an API and then build an application on top of it. And given that APIs provide the building blocks for applications, it makes sense.</p>
<p></p>
<h2 dir="ltr">How Does it Work?</h2>
<p></p>
<p dir="ltr">Think in terms of breaking things up into API-centric services. This includes separating (modularizing) the front-end and the back-end of an application. This allows things to be separated into smaller entities that will end up making up the whole application when combined. Furthermore, the division aids in alleviating overly complicated features and functionality. Once things are split up, you can go ahead and start coding each section via an API-centric manner. And thanks to the API, there’s always a communication bridge between the pieces.</p>
<p></p>
<h2 dir="ltr">What’s the Value of all this?</h2>
<p></p>
<p dir="ltr">Why use API driven development? There are definite advantages that should be considered.</p>
<p></p>
<p dir="ltr">For one, there’s the ability to spec out features that much more easily. In other words, you can determine all the requirements for the application. This will also aid in determining the scope of an application. Knowing the scope of the project will aid in the overall development process.</p>
<p></p>
<p dir="ltr">There’s also freedom from having to make systematic rebuilds every year. Let’s say there are features and functionalities that have been/will be depreciated. Due to the separation of API services, it’s possible to simply remove the deprecations. Another option is to use API Versioning. This allows you to create a new version of the application (one without the deprecations) and remove the old application.</p>
<p></p>
<p dir="ltr">In addition, there’s a general feeling of being able to program in any number of ways so long as you have the API and basic documentation. This is especially true given that you use universal languages like REST, JSON and XML to create an application.</p>
<p></p>
<p dir="ltr">Moreover, there’s documentation of everything since it’s pretty much impossible to work with APIs without documentation.</p>
<p></p>
<h2 dir="ltr">Things to Consider</h2>
<p></p>
<p dir="ltr">While use of API driven development is beneficial, there are some factors that should be taken into consideration. They include:</p>
<p></p>
<ul>
<li dir="ltr">
<p dir="ltr">It’s easy to write a badly designed API, so take your time, thoughtful plan things out and stay consistent. Choose the API carefully.</p>
</li>
</ul>
<p></p>
<ul>
<li dir="ltr">
<p dir="ltr">There can be availablity issues as the application is dependent on the availability of the API, especially if there are runtime dependencies. This also includes the use of external servers. If the server is down, then application functionality becomes an issue.</p>
</li>
</ul>
<p></p>
<ul>
<li dir="ltr">
<p dir="ltr">API provides a well defined schema for testing, but if the tests are sloppy or there are no tests at all, it will prove detrimental to the application.</p>
</li>
</ul>
<p></p>
<ul>
<li dir="ltr">
<p dir="ltr">Be carefully with how many APIs and platforms you use. If there are too many, it could come back to haunt you later on.</p>
</li>
</ul>
<p></p>
<h2 dir="ltr">Conclusion</h2>
<p></p>
<p dir="ltr">As with most things, the ultimate choice to use API driven development or not comes down to what works the best for you. Consider the benefits as well as possible detriments and proceed from there. Still, given the value and the fact that API are integral to development, API driven Development is definitely something to look into, especially when it comes to web and mobile development.</p>Open Source on the Rise: Open Source Development Trends 2015-03-23T20:13:04+00:002024-03-28T18:38:39.433269+00:00chrishttps://www.parthenonsoftware.com/blog/author/chris/https://www.parthenonsoftware.com/blog/open-source-on-the-rise-open-source-development-trends/<p>Open source is leading the way in development. For those of us who have been using open-source tools, this comes as no surprise. We've known about the <a href="http://www.parthenonsoftware.com/blog/4-benefits-open-source/"> benefits of open source </a> for years. However, there are still enterprises and people in general who are taking note of everything open source has to offer and how it's already integrated into many of today's development trends.</p>
<h2 dir="ltr">Why is Open Source such a Big Deal?</h2>
<p></p>
<p dir="ltr">The open source development model is founded on the belief that there should be universal access to free languages, resources and frameworks (modified and unmodified) under open source licensing. In addition, open source opens up the playing field for developers of any sort to change and share any modifications.</p>
<p></p>
<p dir="ltr">One of the top reasons that enterprises have chosen an open source strategy is the quality of the code and as a result, the caliber of the end project, application, etc. This stems from an overall emphasis on collaboration, distribution, transparency and flexibility. These attributes have lead to successful ends, and if you put things in perspective, there's a lot of be gained by applying them to enterprise infrastructure and application development and deployment efforts.</p>
<p></p>
<p dir="ltr">Also included in the decision are significant cost savings, security and adaptability along with a sense of freedom from vendors and the ability to choose what will actually work for you.</p>
<p dir="ltr"></p>
<p dir="ltr">Still, more importantly, open source has improved to the point where it can hold its own against commercial options. One might even say that it's better than other alternatives. There's a huge community of developers who believe in open source and are actively working toward the best possible offering. Therein, there are more pairs of eyes on things which also accounts for better quality.</p>
<p></p>
<h2 dir="ltr">Open source trends</h2>
<p></p>
<p dir="ltr">Even if you were to resist the shift to open source, it may be hard to hold out for long given that many of today's development trends carry some element of open source.</p>
<p></p>
<p dir="ltr">Big data has emerged as an important piece of development given the emphasis how much information must be taken into account and how that information will be processed. With that said, effective and efficient collection, storage, management and analyzation are essential pieces of the puzzle. This this particular course has been aided by the use of open source technologies such as Apache Hadoop and other software that addressed distributed, data-intensive applications. It's probably even fair to say that such technologies are getting in the way of big database vendors.</p>
<p></p>
<p dir="ltr">Another big resource to keep in mind is that of Hybrid Cloud Computing. In this environment, you essentially get a two for one. While you can store sensitive information on a private cloud, you also can also use a public cloud for other resources. All of this enables applications to be run using data from both. In this case, using open source has added benefits such as cost savings and flexibility. As for open source options, there are several. From Apache CloudStack to OpenNebula and Red Hat, it's a good bet you'll find just what you need.</p>
<p></p>
<p dir="ltr">Automation is yet another key area to consider. As you're probably well aware, automating tasks and testing has become a big part of development. Here you have a process or processes that allow you to code and test that much quicker with the added bonuses of efficiency and quality. Where does open source come in? Many automation processes have been coded using open source languages, environments and platforms. Common examples include Python, Selenium, Ansible, Jenkins, and so on.</p>
<p></p>
<h2 dir="ltr">What does all this mean for you?</h2>
<p></p>
<p dir="ltr">While it hasn't always been advisable to jump on the bandwagon with other trends, in this case, it might just be what you need. Given the characteristics of open source software and certainly the benefits, you can gain a competitive edge, and if not that, then a fair amount of traction.</p>
<p></p>
<p dir="ltr">Think in terms of not only cost, but also availability, adaptability and freedom.</p>
<p></p>
<p dir="ltr">As I've mentioned throughout this post, cost is a big factor of open source. Obviously, no-one wants to pay more than they have to. Open source frees you from having to think about the money you're spending because it's minimal if not nonexistent. As a result a wide variety of products and services over a large spectrum can be offered for less. And customers will appreciate that.</p>
<p></p>
<p dir="ltr">When it comes to adaptability, think about how open source can be modified. Easier customization anyone?</p>
<p></p>
<p dir="ltr">As for freedom, you have the ability to choose what will work best for you needs without having to worry about vendor lock-in. Moreover, with open source being available for download at any time, you also have more freedom in obtaining resources.</p>
<p></p>
<p dir="ltr">Also think about staying up with the times. Open source is fast becoming one of the leading methodologies in development and as such startups aren't the only ones that stand to benefit from its use.</p>
<p></p>
<h2 dir="ltr">Conclusion</h2>
<p dir="ltr">2014 saw an increase in enterprise adoption of open source software. This trend continues today. With many development trends and processes already incorporating open source, it stands to reason that there will be more instances of its use now and in future endeavors. Given the things to come and the advantages, it's probably a good idea to at least consider an open source approach. After all, it's certainly not a bad way to go.</p>The Relevancy of DevOps2015-03-05T21:57:21+00:002024-03-28T15:16:34.903349+00:00chrishttps://www.parthenonsoftware.com/blog/author/chris/https://www.parthenonsoftware.com/blog/the-relevancy-of-devops/<p></p>
<p dir="ltr">Like most things in IT, DevOps isn’t new. The concept has been around for some time and while it has been an important organizational piece of many software development shops, it hasn’t necessarily been at the forefront of things. However, as of late, there’s been renewed interest and emphasis in DevOps. Why is that? It may have something to do with it being one of the best approaches to create applications, test environments and meet the constant need for more and better applications.</p>
<p></p>
<h2 dir="ltr">Why Does DevOps Matter?</h2>
<p></p>
<p dir="ltr">Everyone knows that communication and collaboration are important features of everyday life. Without them we wouldn’t get much done. The same can be said of the development process. This is especially true when it comes to things like DevOps.</p>
<p></p>
<p dir="ltr">The medley of development and operations highlights the interdependence of Development and Information Technology. this includes a mixture of cloud, open source and business. In other words, it’s about taking an application through the development and testing process with developers and IT working together to see the application reach the market as quickly as possible.</p>
<p></p>
<p dir="ltr">At the same time, certain factors must be considered and accounted for when endeavoring to meet the end goal. Automation, integration and measurement are just some of the areas included in the overall DevOps process. In addition, DevOps goes deeper into the underlying process that will produce rapid software applications. It’s also about improving operational process as they can make a big difference in speed, agility, maintainability, etc. There’s also some upkeep to think about, in terms of fixes and possible failure rates. Of course, lower failure rates and faster time to recovery are the goals.</p>
<p></p>
<h2 dir="ltr">The Main Reasons Behind the Use of DevOps</h2>
<p></p>
<p dir="ltr">As previously stated, much of the use of DevOps stems from demand for continuous delivery of more and better applications. In all honesty, this is probably only increase as time goes by given how technology keeps improving. Also stated previously is the fact that combining IT and Development allows for such a feat to be addressed in one form or another. Still, it doesn’t always allow for consistency or reliability. </p>
<p></p>
<p dir="ltr">Another factor is the use of Agile and other development processes. Agile and DevOps are affiliated through shared goals. Much of Agile revolves around applications formed through collaboration, flexible and adaptive planning, continuous improvement and quick response to change. Added to the mix is an emphasis on cross-functional teams.</p>
<p></p>
<p dir="ltr">Still another factor is increased use of data center automation and configuration management tools. Obviously automation is a big part of DevOps since it allows for manual and/or repetitive tasks to be run automatically. This frees up developers and IT and aids in the facilitation of faster time to market. The use of data center automation means that IT doesn’t have to worry as much about direct access to the data center. Moreover, their tasks can be automated, thus allowing them to aid in paving the way for fast application development and release.</p>
<p></p>
<h2 dir="ltr">Implementation</h2>
<p></p>
<p dir="ltr">As is usually the case, implementation and adoption of DevOps will vary depending on the company and the situation.</p>
<p></p>
<p dir="ltr">That being said, there are some practices that will make adoption that much easier:</p>
<p></p>
<ul>
<li dir="ltr">
<p dir="ltr">Review and gain a thorough understanding of our organization's priorities, strategies and/or metrics as well as business processes.</p>
<ul>
<li dir="ltr">
<p dir="ltr">Having knowledge of priorities, strategies, etc means that you will have a better idea of what direction fits with company objectives.</p>
</li>
</ul>
</li>
</ul>
<p></p>
<ul>
<li dir="ltr">
<p dir="ltr">Assess current resources</p>
<ul>
<li dir="ltr">
<p dir="ltr">Taking inventory of resources allows you to see what kind of resources you have available as well as determining if they will mesh with a DevOps strategy. At the same time you can also determine if additional resources should/need to be obtained.</p>
</li>
</ul>
</li>
</ul>
<p></p>
<ul>
<li dir="ltr">
<p dir="ltr">Streamline processes so that communication can travel across development, QA, operations, etc.</p>
<ul>
<li dir="ltr">
<p dir="ltr">Enabling input from all departments before implementation allows for the communication and collaboration factor at the center of DevOps.</p>
</li>
</ul>
</li>
</ul>
<p></p>
<ul>
<li dir="ltr">
<p dir="ltr">Build a roadmap.</p>
<ul>
<li dir="ltr">
<p dir="ltr">Clearly defining how implementation of DevOps will take place gives you an executable plan.</p>
</li>
</ul>
</li>
</ul>
<p></p>
<h2 dir="ltr">Challenges</h2>
<p></p>
<p dir="ltr">Understandably, DevOps also carries with it some challenges. In specific, there are challenges that come with changing times, changes in technology, etc. Some of these challenges include:</p>
<p></p>
<ul>
<li dir="ltr">
<p dir="ltr">Pressure from the “there’s an app for that” mentality. Basically there’s the unrealistic view that everything can be solved with an app that is is either already in existence or will come into existence in the near future.</p>
</li>
</ul>
<p></p>
<ul>
<li dir="ltr">
<p dir="ltr">Every year brings new/improved development tools. As such these tools need to work within operational capability. However, such tools won’t always work within application ecosystems. Moreover, one has to think about legacy applications as well. Those won’t always work with new/improved tools either. The challenge lies in making everything work together to meet business needs.</p>
</li>
</ul>
<p></p>
<ul>
<li dir="ltr">
<p dir="ltr">Budget can determine a lot of factors. And with budget limitations becoming even more prevalent, solutions need to be reached which meet both business and consumer needs. Keep in mind that expenses can’t necessarily be broken down by department anymore and as such, should be overseen by a team.</p>
</li>
</ul>
<p></p>
<h2 dir="ltr">Conclusion</h2>
<p></p>
<p dir="ltr">Pretty self-explanatory right? Maybe it even seems like a common sense thing. For the most part IT and Development have been thought of as two separate departments, But by combining the two you increase a number of important factors that lead to the end goal for everyone; getting applications out to consumers as quickly as possible. Not only do you gain things like speed and efficiency you also gain input from different people which will aid in the overall process. That being said, it does take some work, but in the long run it will definitely make a difference.</p>
<p><br/>Still on the fence about DevOps? Consider the fact that there are <a href="https://www.parthenonsoftware.com/blog/category/techniques-1/feeds/atom/%E2%80%9Dhttp:/www.devops-summit.org/usa/2015/DevOps_Summit"> conferences all over the world</a> related to the topic and its adoption.</p>Exploring the Differences of Monoliths and Microservices2015-02-06T20:45:39+00:002024-03-28T13:53:42.828970+00:00chrishttps://www.parthenonsoftware.com/blog/author/chris/https://www.parthenonsoftware.com/blog/understanding-the-differences-of-monoliths-and-microservices/<p dir="ltr">When it comes to building architecture plays an extremely important role. Not only does it form a framework for things to comes, it also provides stability. And of course there are multiple architectural methods. From a development standpoint, that includes monoliths and microsevices.</p>
<p></p>
<h2 dir="ltr">Monoliths vs Microservices</h2>
<p dir="ltr">As with most everything, there are benefits and disadvantages to both. Let’s take a look at some basics.</p>
<p></p>
<h2 dir="ltr">What all does Monolithic Architecture entail?</h2>
<p></p>
<p dir="ltr">As the name implies, monolithic architecture refers to a single unit. Aside from being tried and tested to work well, the appeal of monoliths stems from the seemingly simple setup. Since all tasks are handled within one system, there’s no need to worry about about having to separate everything out. Moreover, request handling runs on a single process so programming is easier.</p>
<p></p>
<p dir="ltr">Need some examples? A good example of a monolithic application is a server-side application. This application handles all tasks from HTTP requests to retrieving and updating data on so on. In other words it’s an all-in-one. There’s also Microsoft Word. Big emphasis is put on feature routines, business rules and UI. All of these components are then rolled up into one program and distributed that way.</p>
<p></p>
<h2 dir="ltr">Monolith Benefits</h2>
<ul>
<li dir="ltr">
<p dir="ltr">Easy to develop</p>
<ul>
<li dir="ltr">
<p dir="ltr">It’s one entity so you don’t have to account for additional pieces.</p>
</li>
</ul>
</li>
<li dir="ltr">
<p dir="ltr">Simple to test</p>
<ul>
<li dir="ltr">
<p dir="ltr">Since all tasks run on a single process, it makes things much easier to test.</p>
</li>
</ul>
</li>
<li dir="ltr">
<p dir="ltr">Simple to deploy</p>
<ul>
<li dir="ltr">
<p dir="ltr">Things aren’t as complicated so there’s less to worry about in deployment.</p>
</li>
</ul>
</li>
</ul>
<p></p>
<h2 dir="ltr">Monolith Disadvantages</h2>
<ul>
<li dir="ltr">
<p dir="ltr">Best used with smaller applications</p>
<ul>
<li dir="ltr">
<p dir="ltr">Monoliths don’t have the capacity to handle the complexity of larger applications.</p>
</li>
</ul>
</li>
<li dir="ltr">
<p dir="ltr">Applications can become unwieldy and more difficult to deploy if they become too large and complicated.</p>
<ul>
<li dir="ltr">
<p dir="ltr">If anything becomes too large in and of itself, there can be problems.</p>
</li>
</ul>
</li>
<li dir="ltr">
<p dir="ltr">Scaling can be an issue has applications increase in size.</p>
<ul>
<li dir="ltr">
<p dir="ltr">The entire application needs to be scaled as a whole. This means consumption of resources as an application gets bigger.</p>
</li>
</ul>
</li>
<li dir="ltr">
<p dir="ltr">Even the smallest change requires that the entire system be rebuilt and redeployed.</p>
<ul>
<li dir="ltr">
<p dir="ltr">Everything is linked together and requires that everything be changed even if it’s just a small change.</p>
</li>
</ul>
</li>
</ul>
<p></p>
<h2 dir="ltr">What about Microservices?</h2>
<p></p>
<p dir="ltr">Seemingly the opposite of monoliths, microservices are based off of distributed systems. The key process of distributed systems is dividing things up into tasks, which are then solved by different processes with message passing occurring between all of them. In the case of microservices, those tasks are addressed by services. These services are generally small and form service sets which aid in the overall goal of the application.</p>
<p></p>
<p dir="ltr">Because the tasks are broken up in a microservce, and each service has one and only one responsibility, resources aren’t depleted as quickly. Just keep in mind that there is a minimum of centralized management of the services. This leads into longer-lived applications. At the same time, it also means that larger applications are possible since the tasks have been allocated separately.</p>
<p></p>
<p dir="ltr">As for examples, think along the lines of the eBay, Netflix and Amazon sites. While these websites started out as monolithic applications, they have since made the transition to microservice applications.</p>
<p></p>
<h2 dir="ltr">Microservice Benefits</h2>
<p></p>
<ul>
<li dir="ltr">
<p dir="ltr">Code is easier to understand</p>
<ul>
<li dir="ltr">
<p dir="ltr">You don’t have to wade through a giant mass of code to find what you’re looking for.</p>
</li>
</ul>
</li>
<li dir="ltr">
<p dir="ltr">Greater productivity and speed</p>
<ul>
<li dir="ltr">
<p dir="ltr">Less code is needed, which means it doesn’t slow down IDEs.</p>
</li>
</ul>
</li>
<li dir="ltr">
<p dir="ltr">Independent deployment</p>
<ul>
<li dir="ltr">
<p dir="ltr">Since the services are separate from each other, they can function on their own.</p>
</li>
</ul>
</li>
<li dir="ltr">
<p dir="ltr">Scalability is easier.</p>
<ul>
<li dir="ltr">
<p dir="ltr">There are more resources from which to draw, so there’s greater capacity for larger scalability.</p>
</li>
</ul>
</li>
</ul>
<p></p>
<h2 dir="ltr">Microservice Disadvantages</h2>
<p></p>
<ul>
<li dir="ltr">
<p dir="ltr">Complexity of creating distributed systems</p>
<ul>
<li dir="ltr">
<p dir="ltr">While handling the complexity that monoliths can’t, microservices carry their own complexity as there are more pieces to consider.</p>
</li>
</ul>
</li>
<li dir="ltr">
<p dir="ltr">Writing and running automated tests can be challenging</p>
<ul>
<li dir="ltr">
<p dir="ltr">The extra parts much be accommodated in order of things to work correctly.</p>
</li>
</ul>
</li>
<li dir="ltr">
<p dir="ltr">Elaborate distributed architecture can still slow things down.</p>
<ul>
<li dir="ltr">
<p dir="ltr">Microservices can handle more complexity because they are more complex themselves, however this can create issues.</p>
</li>
</ul>
</li>
<li dir="ltr">
<p dir="ltr">Greater expense</p>
<ul>
<li dir="ltr">
<p dir="ltr">Services aren’t cheap.</p>
</li>
</ul>
</li>
</ul>
<p></p>
<h2 dir="ltr">After all of that, which is better?</h2>
<p></p>
<p dir="ltr">Various ideas have been presented about the suitability of each approach. For the most part, people seem to be more pro microservice and anti-monolith given that scalability is a huge thing, Moreover, complexity can make a huge difference in the decision. That being said, they do have their issues and shouldn’t be considered a walk in the park. On the other hand, monolith proponents have said that monoliths can be the better option provided there is proper software engineering to address and work through issues. Still, there’s another solution that involves a kind of combination of the two. While a monolith application remains at the core, new features can be creating using microservices. </p>
<p></p>
<p dir="ltr">How do you decide? You could easily use either monoliths or microservices to address your situation, but the deciding factors come down to a number of things:</p>
<p></p>
<ul>
<li dir="ltr">
<p dir="ltr">Which one aligns with what you want the best.</p>
</li>
<li dir="ltr">
<p dir="ltr">Are there specific features that you're looking for and if so, which pattern is going to best address that?</p>
</li>
<li dir="ltr">
<p dir="ltr">Which is going to be easier to maintain with the resources you have available?</p>
</li>
<li dir="ltr">
<p dir="ltr">Are you more willing to deal with the drawbacks (should they occur) of one pattern as opposed to the other?</p>
</li>
</ul>
<p></p>
<h2 dir="ltr">Conclusion</h2>
<p></p>
<p dir="ltr">While monoliths have been the norm for some time, microservices have emerged as an alternative to combat certain limitation in monoliths. However, that doesn’t mean that monoliths are completely obsolete. Just because others are gravitating to one more than the other, doesn’t mean that it’s going to be best decision for you. As always, it’s important to look at advantages and disadvantages of each and as much information as possible to make an informed decision.</p>5 Development Skills2014-12-29T21:36:56+00:002024-03-28T06:40:10.611250+00:00chrishttps://www.parthenonsoftware.com/blog/author/chris/https://www.parthenonsoftware.com/blog/5-development-skills/<p><span color="#000000"><span><span>Software has become a piece of daily life. From checking our smartphones to working on a desktop computer, using software has become the norm, even if we don’t always think about it. But what lies behind that software? The developers, of course. Among the various languages, frameworks and other resources needed to create and deliver the final product are some important techniques.</span></span></span></p>
<h2 class="western"><span color="#000000"><span><span>Stay Organized</span></span></span></h2>
<p><span color="#000000"><span><span>Obviously organization is a key piece of practically anything. It aids in maintaining order as well as offering a clear path of action.</span></span></span></p>
<p><span color="#000000"><span><span>Starting to code one piece of software, then jumping to a completely different piece isn’t ideal. It opens up the possibility of a whole range of discombobulation. In addition a gigantic headache and large amounts of stress are probably looming in your near future.</span></span></span></p>
<p><span color="#000000"><span><span>To avoid this, all the pieces of the project should be laid out, outlined and a plan formed. Adherence to this plan is important. Not only will this increase efficiency, it will help with peace of mind. You can ensure that the process is carried out in organized manner. You know what's been done, what's in progress and what still needs to be done.</span></span></span></p>
<h2 class="western"><span color="#000000"><span><span>Don’t over complicate things</span></span></span></h2>
<p><span color="#000000"><span><span>As with anything, it’s generally better to keep things as simple and uncomplicated as possible. Sure, you want to maintain a certain level of intricacy, but don’t go overboard.</span></span></span></p>
<p><span color="#000000"><span><span>Why? It might come back to haunt you later on.</span></span></span></p>
<p><span color="#000000"><span><span>What if something breaks? Have fun weeding through complicated code just to find the area/s that need to be fixed. And what if the fix doesn't work because of some other piece of code? Then you have have to fix that instance and so on and so forth.</span></span></span></p>
<p><span color="#000000"><span><span>Moreover, consider your client. If the software is too complicated they probably won't use it because they literally can't use it. For the most part, clients are usually looking for easy to understand software that they can easily run themselves. If they don't get this, they may not be a repeat customer.</span></span></span></p>
<p><span color="#000000"><span><span>And honestly, simplicity isn’t always a bad thing. Often times it can mean greater maintainability, flexibility, speed and efficiency.</span></span></span></p>
<h2 class="western"><span color="#000000"><span><span>Communication</span></span></span></h2>
<p><span color="#000000"><span><span>Communication is a necessity in every aspect of the world as we know it. On a daily basis we must be able to articulate any needs we have or any troubles we're having and so on.</span></span></span></p>
<p><span color="#000000"><span><span>The same goes for software development. You must be able to communicate clearly and effectively to ascertain any issues, concerns, needs on both the client side and developer side. Moreover, you must be able to correspond with other developers. Even if you aren't co-developing with someone else, you never know when you might need help.</span></span></span></p>
<p><span color="#000000"><span><span>On the other hand, think about what would happen if there was little to no communication. Honestly speaking, little to nothing would get done. In fact, bad communication could lead to a complete breakdown of a project and/or relations with your client.</span></span></span></p>
<p><span color="#000000"><span><span>In a nutshell, good communication skills, in addition to other skills, will take you far.</span></span></span></p>
<h2><span color="#000000"><span><span><b>Never reuse Code</b></span></span></span></h2>
<p><span color="#000000"><span><span>In other words, <a href="http://en.wikipedia.org/wiki/Don%27t_repeat_yourself">Don't Repeat Yourself</a>.</span></span></span></p>
<p><span color="#000000"><span><span>Why not?</span></span></span></p>
<p><span color="#000000"><span><span>Repetition is bad. Avoid it at all cost. Think along the lines of a person constantly repeating themselves. Undoubtedly that can get tiresome. Code reuse follows the same kind of idea.</span></span></span></p>
<p><span color="#000000"><span><span>Code is usually in a constant state of revision -sometimes a lot of revision. If you reuse code, it means that you have to back through all the code and revise each instance of reuse individually. That takes time and effort that could be put to better use elsewhere.</span></span></span></p>
<p>There’s also code inconsistencies to consider. Let’s say you were able to locate some instance of reuse and revise them, but you failed to revise other instances of the same code. What would happen? Obviously things wouldn’t work correctly. Suffice it to say that less code means less chance of failure as well as greater flexibility and better maintainability.</p>
<h2 class="western"><span color="#000000"><span><span>Think in terms of the mind of the client while seeing things through the eye of the designer with the mentality of QA. </span></span></span></h2>
<p>That’s a mouth full. Let’s break it down.</p>
<ul>
<li>
<p><span color="#000000"><span><span>Mind of the client: Try to think in terms of what your client is thinking. This can be difficult, but you should have some kind of idea if you’ve been in constant communication with them. What does your client want? What are they expecting to see in the final product? What kinds of things do they want to see included?</span></span></span></p>
</li>
</ul>
<ul>
<li>
<p><span color="#000000"><span><span>Eye of the Designer: This area encompasses the total design of the project from start to finish. What does your client want the project to look like? What’s going to be aesthetically appealing? What’s going to draw people in? Answering these kinds of questions and putting the answers into practice will enable you to produce an engaging project design.</span></span></span></p>
</li>
</ul>
<ul>
<li>
<p><span color="#000000"><span><span>Mentality of QA: The job of the QA department is to test products for bugs and quality issues. Try to think in terms of negating those issues. If there’s something that stands the chance of being broken, how can you avoid that happening? What is the best way to fix a piece that’s already broken? Is the code up to quality requirements?</span></span></span></p>
</li>
</ul>
<h2><span>The Takeaway</span></h2>
<p><span color="#000000"><span><span>While fairly rudimentary, the 5 aforementioned methods are essential to the development process. The practices don't necessarily make up for actual code, but they do aid in forming the basis and reason for said code. If we were to forget about them completely, it’s likely that a project could fall apart in one way or another. </span></span></span></p>
<p></p>
<p><br/><br/></p>
<p><span color="#000000"><span><span><br/></span></span></span></p>Introduction to Mobile Application Management2014-12-15T22:49:48+00:002024-03-28T12:41:29.705377+00:00chrishttps://www.parthenonsoftware.com/blog/author/chris/https://www.parthenonsoftware.com/blog/introduction-to-mobile-application-management/<p><span color="#000000"><span><span>With the rise of BYOD (Bring Your Own Device) there has also been an increase in the acquisition of work-related applications. While such methodology is a good thing in terms of flexibility and productivity, there are security issues to consider. With sensitive data being stored alongside publicly available apps, the possibility for security breaches increases. Luckily there’s a little resource known as Mobile Application Management (MAM).</span></span></span></p>
<h2 class="western"><span color="#000000"><span><span>What is MAM?</span></span></span></h2>
<p><span color="#000000"><span><span>MAM is a means by which to protect sensitive data from potential threats. This method is accomplished through application management. While an enterprise can't necessarily control the full content of an employee's personally-owned device/s, you can govern the work-related applications on said device. These applications can be both commercial and/or custom-built by or for the organization. The key component is that they are made available in a secure way through a secure environment.</span></span></span></p>
<p><span color="#000000"><span><span>The environment in question is called the <a href="https://www.parthenonsoftware.com/blog/category/techniques-1/feeds/atom/%E2%80%9Dhttp:/www.parthenonsoftware.com/blog/the-influence-of-byod-on-enterprise-app-stores%E2%80%9D"> Enterprise App Store</a> (also known as an Internal App store) and functions in the much the same way as commercial apps stores. In fact, you can use <a href="https://www.parthenonsoftware.com/blog/category/techniques-1/feeds/atom/%E2%80%9Dhttps:/developer.apple.com/enterprise/%E2%80%9D">Apple’s App Store</a> to create an Enterprise App Store for iOS devices and <a href="https://www.parthenonsoftware.com/blog/category/techniques-1/feeds/atom/%E2%80%9Dhttps:/support.google.com/a/answer/2494992%E2%80%9D">The Google Play Store</a>for Android devices.</span></span></span></p>
<p><span color="#000000"><span><span>The big difference is that only your organization (or just select people depending how things are set up) are authorized to access a privately set up app store.</span></span></span></p>
<p><span>So, what can you expect to get from MAM?</span></p>
<p>Right up front, be prepared for some challenges. For one, there's adapting MAM applications for multiple devices based on user demand. Sure, you can set up multiple App Stores based on the device, but who really wants to do that? Moreover, there are certain technology limitations that MAM users will have to work around.</p>
<p><span color="#000000"><span><span>Is it really worth all that trouble?</span></span></span></p>
<p><span color="#000000"><span><span>Yes.</span></span></span></p>
<p><span color="#000000"><span><span>Despite possible difficulties, there are advantages that shouldn't be overlooked. On top of the benefits of productivity and flexibility that come by way of BYOD, there's also:</span></span></span></p>
<ul>
<li>
<p><span color="#000000"><span><span>User Authentication</span></span></span></p>
<ul>
<li>
<p><span color="#000000"><span><span>Obviously only authorized users will be able to access the Enterprise App Store and user authentication is an additional security feature. </span></span></span></p>
</li>
</ul>
</li>
<li>
<p><span color="#000000"><span><span>Tracking and Monitoring Features</span></span></span></p>
<ul>
<li>
<p><span color="#000000"><span><span>App Performance and analytics are just two of many usage tracking that enable the refinement of process as well as improvements to applications. </span></span></span></p>
</li>
</ul>
</li>
<li>
<p><span color="#000000"><span><span>Simplified App Installation with automatic updates. </span></span></span></p>
<ul>
<li>
<p><span color="#000000"><span><span>There's less reliance on the IT department for performing said upgrades and maintenance.</span></span></span></p>
</li>
</ul>
</li>
<li>
<p><span color="#000000"><span><span>Reinforcement of governance policies</span></span></span></p>
<ul>
<li>
<p><span color="#000000"><span><span>By using the Enterprise App Store you are setting guidelines that must be followed in order to continue access and use of application resources.</span></span></span></p>
</li>
</ul>
</li>
</ul>
<h2 class="western"><span color="#000000"><span><span>Considerations</span></span></span></h2>
<p><span color="#000000"><span><span>If you’re thinking of incorporating a BYOD policy that includes MAM and an Enterprise App Store, there are a couple of questions you should keep in mind.</span></span></span></p>
<ul>
<li>
<p><span color="#000000"><span><span>What is the range of productivity for your application? </span></span></span></p>
</li>
<li>
<p><span color="#000000"><span><span>What conditions does the application have to meet?</span></span></span></p>
</li>
<li>
<p><span color="#000000"><span><span>What are possible outside conditions and how should they be dealt with?</span></span></span></p>
</li>
<li>
<p><span color="#000000"><span><span>What does the user need and how does it tie in with enterprise requirements?</span></span></span></p>
</li>
<li>
<p><span color="#000000"><span><span>How can you ensure that devices and apps are used in a way that justifies the resources being put into them?</span></span></span></p>
</li>
</ul>
<p><br/><span>These are important questions that will aid is determining what you need to create and manage a MAM system in a way that is applicable to your needs. It might take some time to answer these questions, and it's okay. You should have a firm idea of what you want and what can be done, before you proceed.</span></p>
<h2 class="western"><span color="#000000"><span><span>Conclusion</span></span></span></h2>
<p><span color="#000000"><span><span>While there are people who chose to see MAM as a glorified app catalog, it still brings a lot to the table. From security features to an application delivery system where you maintain control, MAM offers a way for companies to take full advantage of what BYOD has to offer.</span></span></span></p>Continuing to Go Green: Green Software2014-10-13T15:39:47+00:002024-03-28T13:55:43.579864+00:00chrishttps://www.parthenonsoftware.com/blog/author/chris/https://www.parthenonsoftware.com/blog/continuing-to-go-green-green-software/<p><span color="#000000" style=""><span style=""><span>Green computing has been around for a while now, but there are still many ways in which one can improve their green efforts. With all the talk flying around, one can assume that most everyone knows how a green strategy can be applied to the tech and equipment required for computing. I even highlighted some <a href="http://parthenonsoftware.com/blog.going%20green/">ways to be more green friendly</a> a couple years ago. At the same time, there are other avenues that are equally important, but not emphasized nearly as much. One of these is green software. </span></span></span></p>
<p><span color="#000000" style=""><span style=""><span>Software plays an important role in computing, from its development to its use. Finding ways to increase its green-ness will not only lessen the carbon footprint of software, but also lead to effective performance. To be honest, it’s not exactly easy to think of software as making a big impact on the environment, but one has to take into account CPU and its consumption of power and energy.</span></span></span></p>
<p><span color="#000000" style=""><span style=""><span>In a nutshell green means simple and fast with lower resource usage. Let’s look at some ways that software can be more green-friendly. </span></span></span></p>
<p></p>
<ul>
<li>Use Open Source Software
<ul>
<li>Open source software alternatives feature a collaborative and more effective development process. It is also classified as low resource software which gets eliminates any unnecessary bulk</li>
</ul>
</li>
<li>Think faster code rather than a faster machine
<ul>
<li>For the most part, older machines with less memory and smaller hard drives are bashed for being outdated. However, when it comes to developing green software they might just be the trick. Not only do they produce less of a carbon imprint, they also allow for more emphasis to be put on the code and it’s efficiency.</li>
</ul>
</li>
<li>Think about computational efficiency: effective algorithms, multi-threading and other like-minded methodologies.
<ul>
<li>Choosing the right algorithm can mean a world of difference in the level of performance. Moreover, the use of multi-threading means faster performance. Thus, less time and energy is expended.</li>
</ul>
</li>
<li>Retrace your steps
<ul>
<li>While going back over your work is much easier to say than to actually do there may be areas of code that could be coded to be more green.</li>
</ul>
</li>
<li>Furthermore, one has to consider the possibility that more efficient use of hardware and better techniques could be on the way as the need for high level performance continues to prevail.</li>
</ul>
<p><span color="#000000" style=""><span style=""><span>Like most IT practices, green software is hardly a new concept, but it has certainly garnered a great deal of discussion. There are those who have questioned the plausibility of green software as a whole, but there have been some advances in its exploration. Does that mean all the work is done? Hardly. </span></span></span>G<span color="#000000" style=""><span style=""><span>reen software techniques are still being realized, discussed and explored in every stage of the development process. </span></span></span></p>
<p><span style=""><br/></span></p>What to Expect When Developing Software2014-09-19T21:13:54+00:002024-03-28T09:50:28.613779+00:00chrishttps://www.parthenonsoftware.com/blog/author/chris/https://www.parthenonsoftware.com/blog/what-to-expect-when-developing-software/<p>Often times, a company will decide that they need software or a mobile app, but they have no idea what they need to do in order for this to happen. The usual course of action is to put someone with technical abilities in charge of the project. though they still receive guidance from upper management. A situation such as this can be difficult as upper management will want answers, but they haven't gone though and answered all the questions. Software is one product where you can't do that. You have to go through all the questions. You can't just say "Hey, this is what I want. How much will it cost?" There are a lot more variables that go into getting a realistic cost estimate.</p>
<p></p>
<p>More times than not I receive calls, or emails saying, “Hey Chad, we really want a mobile app for our company, how much is that going to cost?”. In a perfect world, I could read your mind and throw out a number. However, anyone that watches the nightly news for 10 minutes can tell you, we don't live in a perfect world. Telling a development shop that you want an app, is like telling a home builder, “Hey build me a house”, without saying how many bedrooms, bathrooms, stories, what tile, carpet or not and I think you are starting to get the point.</p>
<p></p>
<p>If you truly care about your project you should be investing time in creating the proper documentation to make sure you get what you are looking for. The better you can describe what you are looking for, and how you want it to function, the more likely you are to avoid that nasty project monster called “SCOPE CREEP”.</p>
<p></p>
<p>First and foremost, you will want to ask everyone for user stories. User stories are short descriptive examples of the features they would like to see in the software. The stories also outlines how they would like to interact with said software. These accounts are useful in creating scope documentation and software that is both useful and helpful for your staff.</p>
<p></p>
<p>Second, you will want to create feature lists or what some like to call "wish lists". These lists can be broken down into categories: the necessary features, the desired features and the optional features. After you evaluate the importance of said features, you can begin to pull all of the pieces together.</p>
<p></p>
<p>Now that you have a good idea of what you want, you can start to determine how you want to go about approaching the project. Now is a good time to build scope. Scope is basically written blueprints for the design you want. You will need to defined what technologies you are looking to use as well as the devices (i.e. mobile, pc, tablet, etc) you plan to use in conjunction with software both now and in the future. Planning for future development needs can help in forming the architecture of your software now. If you need examples, there are plenty of good samples via a Google search.</p>
<p></p>
<p>Got that done? Great. You're getting close to being finished. The next step is to create functional wire-frames. This documentation/design element provide further blueprints that pertain to what you want you want, where you want it and what happens with buttons are clicked. Not only does this give a good idea of what how to build want you want, it also allows us to give you a more accurate estimate.</p>
<p></p>
<p>Once you have your scope documentation, user stories and functional wire-frames, the next step is to send all of that to us. We'll look things over and setup a call/s to discuss any questions we may have. After we have a good understanding we will compile the information and provide you with a ballpark estimate. This is going to be an estimated high and low in development hours. Once you have reviewed the estimate there are a few things that can happen.</p>
<p></p>
<ol>
<li>
<p>You can say, sorry that is way over our budget, this isn't going to work out.</p>
<p></p>
</li>
<li>
<p>You can said, we are close but can we cut some scope out to make sure we can afford this. This is where the prioritizing of your wish list comes in handy, maybe some of the desired features, or optional features can be pushed out to future enhancements.</p>
<p></p>
</li>
<li>
<p>You agree with the ballpark and we move forward.</p>
</li>
</ol>
<p></p>
<p>If the latter two scenarios are the case and you'd like to move forward, we will set up a call with one of our technical architects, and estimators who will do a further dive into your requirements and fine tune all the documentation. This may take a little back and forth, but we will get it dialed in. Now that our side understands the project we will go back and create a full line item estimate of what we believe it will take to build your software.</p>
<p></p>
<p>At this point, we will send you a line item estimate for review. This is the time to cut or add to the scope if there's anything missing. If everything looks good, you give us the nod and we will get you going with a Master Service Agreement (MSA) and Statement of Work (SOW). First, the MSA is going to outline the partnership we are taking amongst our companies to build out the software for you. Second, the SOW is going to outline what it is we are doing, and payment details. Once all the paperwork is signed, we are ready to roll.</p>
<p></p>
<p>Now, we will schedule a quick project launch meeting, where you will be able to coordinate with your development team and get your project underway. Once it is underway, you will now direct your communications to your PM/Scrum Master. They will be your point of contact on the project from here on out, unless you have billing issues or any additional projects you would like to discuss, then you can direct your conversation back to your Business Development Rep.</p>
<p></p>
<p>Once your project is completed to your satisfaction you will be given your software for your use. At that time if you have any bug fix needs, or production related items, you will still want to reach out to your PM/ScrumMaster to resolve those issues. For any other needs you can reach out to Business Development and we will be happy to get you taken care of. Should the need arise to send over one of our favorite types of leads “referrals” you will want to direct them to your Business Development Rep.</p>
<p></p>
<p>In the end you will receive the exact project you want in a timely and realistic manner. Yes, some work is required on your part, but it's necessary for us to gain a full understanding of the project so we can then assemble all the pieces. By doing the preliminary work and working with us, you eliminate the guess work and reduce the number of unknowns making it that much easier to get to the desired outcome. </p>Building a Sales Network2014-02-11T00:02:55+00:002024-03-28T15:23:35.602981+00:00chrishttps://www.parthenonsoftware.com/blog/author/chris/https://www.parthenonsoftware.com/blog/building-a-sales-network/<p>As a business developer / Sales person one of the most important things I do day in and day out is build and correspond with my network. The more times I can put my name and the name of my company in front of my network, the more likely they are going to be thinking of me and the company when a potential project comes around.</p>
<p>When you watch the Superbowl, one of the most watched sporting events, have you noticed that the same people advertise every year? Why is it that Coca-Cola, Budweiser, Ford and GoDaddy -some of the most well known names in their industry- are spending millions of advertising dollars for a couple minutes on the television every year? They are already household names but they still feel the need to name brand. It's pretty obvious; they understand that continuous contact with their network is beneficial.</p>
<p>But there appears to be something of a disconnect when it comes to social media. Browsing through LinkedIn and various networking sites, I always come across plenty of sales, marketing, business owners and other people who would thrive through contact with others, but they commit a fatal mistake. They don’t provide any contact information. Why would anyone in these positions not want you to get a hold of them? The most important part of business is your network of potential clients. So why wouldn't you make it easy for people to get in contact with you? LinkedIn is a free way for people to get their name and company seen, you are not paying for this free advertising. So again I ask, why would you not make it easy to contact you?</p>
<p>Throughout my tenure on LinkedIn I have managed to build a good network. I have referred many potential clients to my network. This is how it should work. There should be mutually beneficial interactions occurring at all times. I send you customers, you refer people my way. Even if it is not for the benefit of financial gain, but for something as simple as putting someone with common interests, or even someone needing advice in touch with another person with real life knowledge of their issues, use the tools that are available. Use your network. What use is it to have all of the social media avenues right at your fingertips if you are not going to use them effectively? Anyone who is on LinkedIn and is only networked with close friends or people that they already work with is not doing themselves any favors. In fact, they’re doing themselves a disservice. They are failing to build up a network and thereby might miss out on good opportunities. In other words, use the tools for their intended purposes.</p>
<p>I cannot emphasis how important social media is to building business. The use of free tools such as LinkedIn has eliminated thousands of dollars of print advertising, hours of endless telemarketing and the need for large ads in the phone book. Moreover, it enables another means of network, whereby you can get your name and that of your company in front of more people. It may seem like a lot of work, but believe me, it will pay off in the end.</p>Great Project Management2013-04-15T23:49:30+00:002024-03-28T20:32:08.718367+00:00chrishttps://www.parthenonsoftware.com/blog/author/chris/https://www.parthenonsoftware.com/blog/great-project-management/<p>Project management best practices remind us that if we successfully initiate, plan, execute and close out all our projects, our metrics will illustrate greater results. While such a statement highlights the end goal, there’s much more to project management than simple methodology.</p>
<p>Think of a project in terms of a puzzle. There are several little pieces that will somehow form the bigger picture. It can be frustrating at times as a project rarely goes completely according to plan. From delays, cost overruns and other obstacles, successful project completion can seem unreachable and unrealistic. It’s easy to see how a project can fail, but there is still hope. Such poor management can be avoided. You, as the project manager, can take all those little pieces and transform them into doable tasks and goals.</p>
<p>Consider the following questions: What is the long-term strategy? How will the outcome of the project add value to the strategy? What are the alternatives to your strategy? What is the dollar-value?</p>
<p>Organize your plans and resources. Project management means taking full and personal responsibility for the success of any project and utilizing the best available methods and resources to that end. As such, you are the catalyst for the best resources, the best contracts, managing the project itself, and active communication with all involved parties.</p>
<p>Stay focused on the key benefits of the project. This is an area where turning those doable tasks and goals is especially handy. Not only does this make it easier for your team to focus, it can make an overwhelming project much easier to manage.</p>
<p>Think about risk management tools and techniques. You already use informal risk management techniques as a project manager. However, it is important to formalize existing work with methodology and available project management software. Failing to do so is inefficient and saps up time that could be better used on project development. Additionally, it is important to discuss the risks with the customer in order to determine how they will tolerate it.</p>
<p>Test your project to determine it is working. The continual process of testing and making adjustments is an essential part of project management. Any IT solution that is implemented without the proper amount of testing performed throughout the project is a recipe for disaster.</p>
<p>Make use of process models. These models can have a significant impact on the outcome of your project. If you’re unsure what process models to use check out some tips from <a href="http://www.pmi.org/">Project Management Institute</a> about their project management methodology.</p>
<p>Implementation of these tips and techniques guarantees the best chance of achieving maximum project benefits. Still, they only scratch the surface of advantageous project management. They are plenty more notable steps, but they should get you started on the path toward more efficient and improved project management.</p>Social CRM2013-03-20T23:39:16+00:002024-03-28T17:38:41.652114+00:00chrishttps://www.parthenonsoftware.com/blog/author/chris/https://www.parthenonsoftware.com/blog/social-crm/<p>Social media has become a major part of the world as we know it. Some people can’t even go a few minutes without “checking in”, tweeting, etc. While this can get a little annoying, social media is a powerful tool for social interaction. As mentioned in our <a href="http://www.parthenonsoftware.com/blog/client-interaction/">Client Interaction</a> blog, social media can help with gaining and maintaining your clients. This particular trait is targeted by one of the newest sales & marketing tools, the Social CRM.</p>
<p>What are Social CRM systems? CRM (Customer Relationship Management) systems are organizational sales and marketing tools which have been recognized as one of the most successful applications for small and medium business. Not only does it allow you to keep track of all of your interactions with current, past and future clients, it also offers everything in a concise manner that allows you view all the client information in one area so you’re not scrambling to find everything. Is it any wonder that there are so many different versions? Needless to say some are better than others.</p>
<p>Take all that CRM is and toss in the social media aspect and you have SCRM or Social CRM. How does that make a difference? Using Social CRM systems makes interactions more personal. No longer is the client just a name on the screen, they now have a face and a voice. At the same time, there is potential for even better communication and as a result greater trust in you and your company. Moreover, notifications from multiple social media sites can also be found in one place in the sCRM. In this way, you have access to information about birthdays, events, and so on. You’ll be able to spend less time in the process of searching for clients and customers and more time cultivating relationships.</p>
<p>Still on the fence? CRM systems have worked in the past and continue to work to the advantage of businesses. As for social media, there are plenty of companies who have made a name for themselves, thanks in part of this growing trend. So why not combine two of the most successful applications? With all the potential advantages of Social CRM, it just might be the piece you’re looking for.</p>
<p>Still curious? Check out <a href="http://mashable.com/2010/05/21/social-crm">Why Your Company Needs to Embrace Social CRM</a>.</p>Coaching a Winning Project2013-02-23T00:29:35+00:002024-03-28T16:43:37.917570+00:00chrishttps://www.parthenonsoftware.com/blog/author/chris/https://www.parthenonsoftware.com/blog/coaching-a-winning-project/<p><img height="240" src="https://www.parthenonsoftware.com/collectedstatic/media/uploads/blog/.thumbnails/feb_2013_coaching.jpg/feb_2013_coaching-366x240.jpg" style="float: right;" width="366"/>Project management is an important part of any company, regardless of the type, source or outcome. There's a lot to do, and time is always limited. Any project is a short-term action that has a timeframe and seldom lasts for longer than two years. It stands to reason that project managers must make the most of what have to work with. If you look at it in terms of sports, the role of a project manager is very much like that of a soccer coach. They are given a team to shape into an effective force with rules to follow and limited resources. Everyone would like a dream team, but the best coach is one who can make champions.</p>
<p>During a season, the primary focus is reaching the World Cup. It doesn't matter how many individual games you lose as long as you become champions. You must plan ahead keeping the strengths and limitations of your team in mind. An influx of change is almost always a guarantee. The players (project team) may move to different clubs (projects) or from club to club (project to project) during a season. The same can be said of the coach. They don't necessarily stay with one team for multiple seasons. So, don't focus on things you cannot control, but plan for them. Even if all seems lost, you have a chance to improve the club and make them worth rooting for, regardless of all the changes that have occurred.</p>
<p>In my own experience, I've had new developers added to my projects that need training, take vacations mid-project or are reassigned to different projects. This can be frustrating, but at the end of the day, I understand that upper management knows what they are doing and some seasons are less important than the team as a whole. They are the leaders of the company and as such, they are considering the future well being of the whole company and not just a particular project. It is my responsibility to make adjustments and make the most of the time I do have.</p>
<p>If a company loses a project it's important not to exaggerate the consequences. There are few companies that must rely on a single project to stay afloat. However, if major business operations fail, it is much more difficult to recover. Good project managers understand the temporary nature of the project environment and they know how to use it to the greatest advantage for the company as a whole.</p>Leadership and motivating Project Management skills2013-02-09T00:15:49+00:002024-03-28T17:45:38.337240+00:00chrishttps://www.parthenonsoftware.com/blog/author/chris/https://www.parthenonsoftware.com/blog/leadership-and-motivating-project-management-skills/<p><img height="414" src="https://www.parthenonsoftware.com/collectedstatic/media/uploads/blog/.thumbnails/feb_2013_leadership.jpg/feb_2013_leadership-350x414.jpg" style="float: right;" width="350"/>The skills required of a successful project manager come from every discipline. From accounting to strategic planning, supervision, and personnel administration, some skills are more basic while others are more technical. The combination of these skill sets is ultimately what can propel a project toward success. From effective communication, problem solving, strong leadership and negotiation there are number of ways these such skills will aid in successful project management.</p>
<p>Napoleon Bonaparte once said that “[a] man does not have himself killed for a half-pence a day or for a petty distinction. You must speak to the soul in order to electrify him”. Believe it or not, such a stance can be applied to project management. Great project managers are also great leaders. They impart vision, gain consensus for strategic goals, establish direction and inspire and motivate others. Great managers don’t just “do their job” they embody management. They understand the project and work toward fulfilling the requirements, but they also understand the importance of the people working on the project. Thus, they are just as responsible for the people as much as for the project itself.</p>
<p>Just how does a project manager go about becoming an effective leader? The following general management skills form the foundation of good project management practices:</p>
<ul>
<li>Communication</li>
<li>Organization and planning</li>
<li>Budgeting</li>
<li>Conflict management</li>
<li>Negotiation and influencing</li>
<li>Leadership</li>
<li>Team building and motivating</li>
</ul>
<p>Excellent leadership and organizational skills are the two main ingredients to successfully seeing a project from start to completion, which is, of course, the main goal and responsibility of a Project Manager in any field of the business world. These individuals are responsible for organizing and designing a business project from the ground up. They also maintain the constant process of analyzing the project to spot obstacles or problems before they arise. Good managers are able to keep the plan going without a hitch and when there is one, clearing it up before too much damage is done.</p>
<p>Subsequently, project managers are responsible for task delegation and keeping their team up to date so every goal can be accomplished successfully. Moreover, they, themselves, must keep up to date on all available resources. Since their decisions shape the end product, they cannot rely on half-data or incomplete information. Awareness of all aspects of business will make informed and quick decisions that much easier so the project can run more smoothly.</p>
<p>Amongst the skill required of a project manager, leadership, motivation and team building skills are vital to the success of any project. The project manager sets the tone for the project team and walks the team members through various stages of team development to become fully functional.</p>