Freelance Software Development Tips



Freelance Software Development Tips

The first set of tips we'd like to share involves communicating with your client. As a freelancer, this is one of the most important things to get right! I find clients appreciate the following practices:

  • Be reliable: Be a reliable communicator, and answer emails and questions promptly. Also, avoid letting your clients wonder what you've been up to by sending regular status reports and/or letting them know when you achieve a goal.

  • Be polite: Be polite and professional, but just as importantly, be friendly. We are human, after all!

  • Be honest: Don't lie, and always keep your word. Don't make promises if you know you aren't going to fulfil them. For example, don't promise to implement a certain feature at the end of the project, if you already know that you will have troubles completing the project within the estimated deadlines, without that feature.

  • Don't hide problems: Notify your clients of any problems as soon as possible, if the problem is serious and/or is going to emerge anyway, sooner or later.

  • Keep track of your time: Keep track of your time, and share it regularly with your clients, if you're paid by the hour. If you work on a flat rate per project instead, it can help you figure out the difference between estimation and actual effort.

  • Offer technical advice: If you notice clients making a wrong technical decision, be sure to point that out to them rather than letting them flounder. Debate the decision, but remember that, in the end, the client always has the final word.

  • Ask questions: Don't be afraid to ask questions; this can save you and your clients much headache down the road. In case of doubt, always ask, and avoid solving ambiguities based on what you think the client wants. When a requirement is not properly defined, or is missing important details, ask her to provide more details, or give her your version, so she can immediately spot any mistake.

  • Deliver what your clients expect, rather than what you think they expect: In software development, there's often an expectation gap—the difference between what clients expect and what they really get. Eliminating ambiguities and avoiding assumptions when something has gone unspecified are good ways to minimize that gap.

    For example, if a requirement states that a user shall be able to register by providing an email address and a password, and another instead says that a user shall be able to sign in by entering a username and password, you may notice that there's an incongruence: registration requires an email (but not a username), whereas login expects a username. Should you use email during login, or should you also ask for a username during registration? Nobody but the client can answer that question.


Read full article from Freelance Software Development Tips


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts