Table of Contents

    Videos

    Generic software development

    View times: 43
    Submitted by: Varun Gupta

    Abstract

    [Context] Freelancers could catalyze the software development process by providing their niche skills to generate high quality outputs. They could help companies (including startups) to foster innovations by suggesting creative ideas and providing their expertise in implementing them (for instance, designing solutions, coding solutions etc.). Freelancers could effectively and efficiently work as a virtual member of the software development team. The company must make informed decisions about which task to allot to the freelancer, which freelancer to select, pricing the task, and evaluating the submitted work. On the other hand, the freelancer should make an informed decision about evaluating the monetary value of the task to be charged, trusting the requester, analyzing the skills requirement of the task (finding matches between skill requirement and skills processed), selecting the best task, and maintaining the highest level of reputation. However, the literature does not provide freelancers and the companies the guidelines that support their decision making. However, if freelancers are selected carefully for the most suitable task, the companies will benefit a lot in terms of improved software development metrics. [Objectives] The objective is to provide the research community the research trends in freelancer-supported software development. This helps to understand that which software development areas have higher concentrations of research efforts, which area has the support of empirical evidence to support management decision makings, and which area requires the research attention. [Method] The systematic study is conducted by planning the mapping protocol, executing the protocol, and reporting the findings using various visualization tools like bar charts and pie charts. The search process was planned to be executed using set of inclusion and exclusion conditions on four bibliographic databases (IEEExplore, Springerlink, Sciencedirect, and ACM digital library). The relevant papers are selected by applying inclusion and exclusion conditions. The google citations of the relevant papers are subject to the inclusion and exclusion conditions again to include the more relevant papers. Finally, the systematic schema was created and populated after analyzing the studies abstracts. [Results] The results indicate the following (a) The research focus is on generic software development (78%) rather on individual life cycle activities. (b) The number of empirical studies is limited (25%). (c) A number of studies proposing solutions and evaluating on live cases in industrial settings are missing from the literature. This is in comparison to the validation approaches (72%) i.e., solutions tested in laboratory settings. (d) At present, the literature has limited ability to provide the software companies (including startups) with the guidelines (in the form of opinions and experience reports) for involving freelancers in the software development process. (e) The reported challenges include Collaboration and Coordination (33%), Developer Recommendation (or selection) (19%), Team Formulation (14%), Task Recommendation (allocation) (14%), Task Decomposition (11%), Privacy and Security (Confidentiality) (11%), Budget Estimation (8%), Recognition (8%), Trust Issues (8%), Market Dynamism (6%), Intellectual Property Issues (6%), Participation of Crowd Worker (6%), and Capacity Utilization (3%). These challenges are highly interactive, and each challenge impacts all other challenges. (e) Recent focus of the researchers (total 7 studies in 2019) is on generic software development handling the collaboration and coordination (3 studies out of 7), Developer recommendation (2 studies out of 7), and task recommendation (2 studies out of 7). [Conclusion] The freelancer-driven software engineering research area has got the attraction of the researchers, but it will take a long time to gain maturity. This puts an urgent call for more empirical studies and evaluation-based solution research that could help companies (including startups) to foster innovations. Further, the research focus should be well distributed among the various development phases to address the unique challenges associated with individual activities. The accurate management of the freelancer in the software development could help companies and startups to foster innovations and remain competitive in the marketplace.

    1. Introduction

    Freelancers the self-employed people who have a short term, task-based association with the employer and thus they are not a part of the company workforce (i.e., they are not the employees). Their association with the company is only until the allocated task is successfully completed and thus they do not have long term commitments (or working associations) with the company as expected from the full time employees. They have an obligation to complete the task with high quality standards within the agreed deadline, in exchange for the money (agreed price of the outsourced tasks). During the time the freelancer has been executing the outsourced task, they are free to undertake more freelancing tasks with different requesters (different companies), with different contractual conditions. In other words, the freelancers undertake multiple projects in parallel. Freelancers do not have strict and lengthy written employment contracts as exist in full time employment. The outsourcing of the tasks (also termed as projects) in the freelancing world (gig economy) works as follows:

    (a) The company requests for the services of the freelancers. This could be accomplished in either of the following ways:

    • Publishing task description, deadline, price, and other conditions on the freelancing platforms or on the company website or on social media or on the platforms managed by the company itself. This approach requires open call for freelancer participation and is thus crowdsourcing-based freelancing.

    • The freelancers in the professional networks of the software company (or startups) are directly approached with the outsourcing request. This approach is usually undertaken if the deadline for execution of the project is too strict that prohibits the idea of outsourcing to the crowd. This approach does not require open call for participation of freelancers in undertaking outsourcing tasks and is thus non-crowdsourcing-based freelancing.

    • The company could also maintain their own panel of expert freelancers which could be approached in crowdsourcing or non-crowdsourced manner, which is termed as panel-based freelancing model in [1]. Authors in [1] have classification the freelancing association models into task-based, panel-based, or hybrid. Either of the models could be executed in crowdsourced or non-crowdsourced manner.

    (b) Freelancers registers their expression of interest in undertaking the outsourced tasks.

    (c) The company performs the selection of the freelancers for assigning the task for execution. The selection is quite simple in non-crowdsourcing-based models. In such a model, the approached freelancer (which is capable as per company previous working relations) and the requesting company undergo negotiations. If such negotiations are successful, the task is assigned to the freelancer.

    In Crowdsourced models, the freelancer selection for the pool of interested freelancer list could be accomplished in a variety of the ways as mentioned below:

    • Screen the profiles of the interested freelancers by analyzing their reputation and their capability to produce high quality work. The ratings, previous reviews, sample of previously executed tasks etc. could be helpful. The freelancers could also be interviewed to make final decisions.

    • Evaluate freelancers based on the brief abstract solution provided by them, finally leading to their selection. The abstract solution is the partial solution about the task to be outsourced. To accomplish this, the company must request for abstract solutions at the time the request for the participation was registered on the platform.

    • Evaluate the solutions given by freelancers and select the best one for the reward. This requires the company to request for the complete solutions of the task at the time the request for the participation was registered on the platform. The best solutions are rewarded. This crowdsourcing takes the form of the competition, but it is usually undertaken for the tasks that are not computationally hard and effortful (for instance, logo designing). As the software engineering tasks are effortful, computational hard problems to solve and complex, a competition-based approach is likely to be less feasible here.

    (d) The freelancer submits the work, which is evaluated by the company. After the positive outcome of the evaluation, the freelancer is rewarded with the money (outsourcing task price).

    Thus, there are different ways of inviting interest, screening applicants, selecting and evaluating the work. However, the researchers categorize freelancing as either crowdsourced or non-crowdsourced. In the crowdsourced model, the company sends an open call to a crowd of freelancers. Freelancers could collaborate (usually never happens), take part in a competition, or undertake microtask independently. In the non-crowdsourced model, the company selects one freelancer to independently work on the problem (task) to generate a solution. Freelancing activity in software engineering is challenging, as the freelancer should have perfect skills and competencies to handle the technical task (skill match). It is very effortful to invite the interest of a freelancer, select a freelancer from the big pool (or select tasks from the big pool), negotiate the terms and conditions, communicate during the task execution, evaluate submitted work, and trust that payment will be made. The entire process is highly uncertain and risky. This is because the submission of the work and its quality is probabilistic.

    Software companies need to continuously innovate their products (or services) to maintain competitive advantage in highly volatile markets i.e., by continuously providing more and more benefits to the software users. The companies also continuously try to do process innovation to improve the software development processes that lead to the benefits to the firms which could be passed on to the users. Thus, the process innovation could also help the company to improve their products and increase the value they provide to its markets. The growth of the companies in the markets helps them to enhance their resources but their organizational processes become more and structured. For instance, the big software company will have a very organized organizational structure with well-defined processes for everything. This limits the ability of the companies to innovate as the rigid structures will resist the changes required to innovate. Further, technologies and customer needs are changing so fast that the big companies may find it very costly (or even harder) to employ the software engineer with niche skills for undertaking the task in hand. These companies may also wish to employ the specialist for short term basis if the requirement for the specialization is for short term only. The startup phase of the companies is more challenging because of the need to continuously innovate because of resource limitations and an ever-changing environment [2]. However, this phase has very flexible organizational structure and processes which are most favorable for supporting the innovation activities. The outcome of the discussion is that the companies (starting from their startup phase) must continuously innovate by overcoming the restrictions imposed by resources and agility of the organizational processes and structures. Innovation not only require the gathering of the creative ideas but also their implementation and release in the markets to generate value to the customers. For instance, the company may have a brilliant idea about a new product feature, but they need to implement it by executing software engineering process which include generic activities like designing, coding, testing, and release. The resource limitations and flexibility issues with the organizational processes and structures will be effectively managed by outsourcing the innovative idea implementation tasks to the freelancers. Freelancers could also be meaningful sources for suggesting innovative ideas to the companies that could be implemented inhouse or outsourced to the freelancers [3].

    Software development involves many effortful, complex, and hard activities like requirement engineering, designing solutions, coding solutions, testing solutions and release, which must be executed continuously (evolutionary software engineering). Each activity imposes different constraints like skills requirement, environment challenges, coordination issues, collaboration issues, need for documentation, etc. The software engineering task to be outsourced should be assigned to the freelancers with the necessary competencies required for the task to be successfully executed. The employing of freelancers is a good solution provided that the effort of managing freelancing is exceeded by the cost and time reductions it brings to the development.

    The software companies expect from the research community the effective solutions that could help them to involve freelancers in suitable software development activity and empirical guidelines that could help them to take decisions in the directions. The support of empirical evidences will foster the decision making process of the company management about different aspects including (a) hiring the freelancer vs. undertaking the task in house; (b) identification of the software engineering activity that should be outsourced to freelancers; (c) establishing price estimated; (d) deciding the model for freelancer associations; (e) decision about the crowdsourcing platforms etc. The overall objective is to include freelancers in the software engineering activities to foster innovations in the company to remain competitive in the marketplace.

    This entry aims to undertake a systematic mapping study to understand the trends in freelancer-supported software development by structuring this area around software development activity focused, challenges and issues reported, type of research undertaken by the researchers and the temporal trends (publication trends). The objective is to explore this area to maximum breadth, using an efficient mapping protocol to identify the research gaps or the areas that require urgent research focus. This needs the research to bifurcate the complex domain of freelancer supported software engineering into meaningful information to identify the state of art. This state of art will help to identify the research gaps that could motivate the researchers to bridge those gaps by providing empirical guidelines, tools, and techniques for fostering freelancer involvement in various software engineering activities. This will help the software companies (including the startups) to adopt the research solutions provided by the researchers as per the working context unique to their companies to improve software success rates and overcoming resource limitations.

    Providing a holistic view of the research area justifies the execution of the research study as a systematic mapping study over a systematic literature review. This is because systematic mapping studies are well suited to provide classification and counting of the broad research areas rather providing empirical evidence-based on the synthesis of the literature [4]. The systematic mapping study conducted in this entry is based on the guidelines disseminated in [5].

    The entry is from 10.3390/pr8101215

    References

    1. Burke, A.; Burke, M. Cowling, on the critical role of freelancers in agile economies. Small Bus. Econ. 2020, 55, 393–398.
    2. Chauradia, A.J.; Galande, R.A. Freelance Human Capital: A Firm-Level Perspective; Senate Hall Academic Publishing: Dublin, Ireland, 2015; pp. 85–98.
    3. Gupta, V.; Fernandez-Crehuet, J.M.; Gupta, C.; Hanne, T. Freelancing Models for Fostering Innovation and Problem Solving in Software Startups: An Empirical Comparative Study. Sustainability 2020. Under Review.
    4. Gupta, V.; Fernandez-Crehuet, J.M.; Hanne, T. Fostering Product Innovations in Software Startups through Freelancer Supported Requirement Engineering. Results Eng. 2020, 8, 100175.
    5. Edison, H.; Wang, X.; Jabangwe, R.; Abrahamsson, P. Innovation initiatives in large software companies: A systematic mapping study. Inf. Softw. Technol. 2018, 95, 1–4.
    More