Freelance software engineers design and develop applications for clients on a short- or long-term contract basis. In this role, your job duties may include coordinating with systems analysts and programmers to determine the scope of the project, developing new or modifying existing software according to your client's needs and expectations, and analyzing computer specifications and layouts to build a better system. You also troubleshoot and update the application when necessary. Freelance software engineers may work remotely from home or they may occasionally travel to their client’s office to perform job duties. You may work primarily with one client at a time, or you may choose to contract with many different clients.