Allfreelancework.com
 
REGISTER/LOGIN PRODUCTSEMPLOYERS FREELANCERSFORUMS POST JOBSGRAPHIC DESIGN RESOURCES HELP

 

AllFreelanceWork.com is an 8 year old Freelance Projects Board offering freelancers Freelance Jobs Search, Free Portfolios,& articles. AllFreelanceWork is also a great small business resource for starting a home business & looking for home business opportunities (no scams). AllFreelanceWork is filled with freelance resources, including small business startup tips, self-employment articles, how to start a freelance or small home business, articles about self-employed health insurance offers, promoting & marketing your small business, finding small business & freelance business opportunites for graphic designers, web designers, writers, screenwriters, programmers,artists, editors, & other careers & professions.

Spotlight Freelance Portfolios


New Freelance Portfolios 

Add Your Freelancer Portfolio

 

AddThis Social Bookmark Button

Search Career Schools

Zip Code:

Subject:

Degree:

Online Campus Both


Home > Articles > Freelance Developers >Does a Freelancer need Software Engineering?

Does a Freelancer need Software Engineering?

Tarek Negm

There is no right or wrong answer to the question above, this may sound strange a bit but I say that the answer for that question mainly depends on another two questions:

  • How big is the project the freelancer is working on?
  • Is he working alone?

If the freelancer is working on a small project, maybe taking a week or two max, then he definitely doesn't need software engineering in this case. He probably will waste more time documenting the project than doing the actual implementation. But here I am talking about really small projects, like for example developing a small calculator. Moving to large projects, the developer cannot just go on programming the project. Normally, he will have to break the project into different phases, where each phase will represent a milestone for the client to see. Then to ensure efficient implementation he will gather the client requirements, document it and then present it again to the client to approve it. After approving the requirements the developer will have in his mind the technical specifications of the project (this part is not put on paper by developers usually). Then he will start implementing the project. Actually, by doing this, the developer has gone through some software engineering methods, like requirement gathering and analysis, then preparing the software specifications document, which is the information he has in his head.

Another important thing is whether the developer is working alone or not. If the developer is working with a team then software engineering is a must. I am not saying working alone makes it unneeded, but as I explained above, if the developer is working alone, he may not need software engineering. Instead, working in a team with out having the project correctly managed using software engineering techniques will impose more overheads on the developers. These overheads will be imposed due to lack of fruitful communication between developers; they will probably be engaged in very long conversations that may end up with no result or a result that would have reached in a very little time if they were somewhat more organized. Also, the lack of a common and agreed upon guide for developing the project will be a big problem, to give you an example of this case, consider two developers working on one project and they are developing two inter-dependant modules. If they don't have a prior design to the project, they are most likely to develop conflicting interfaces, as we said before each module uses the other one, so how would anyone of them know what does the other need as an output from his module or what functionality he may want from his module. So they will probably implement two modules that won't work together. Then they will have to revise their code, re-implement it, sit together to agree upon what each one needs from the other (communication overhead).

So to answer the question that is the title of the article I can say that, excluding the very small projects like the small calculator, a freelancer needs software engineering. He needs to ensure that his requirements comply with that of the client. He needs it to organize the project into phases. He needs it break the project down to components. And he needs it for avoiding the overheads described too. Moreover, he needs it to document the project. Documentation is now a primary issue in software industry. Before, people didn't really bother about documentation, but now, it is an important deliverable in the project with the code. This is due to the rapid technological advances that occur each day now, which makes a client making a software worry about how to upgrade it or add to it advanced features in the future.

Software engineering to a freelancer is important because a freelancer is involved in all project phases. He is not only a developer that gets some requirements and codes it; he is also the project manager and the business analyst. Being familiar with software engineering techniques is a virtue to a freelancer. Clients dealing with professional freelancers aware of such techniques will definitely look for them again if they have other projects.

In this article and the following articles I will present a case study of a product I was involved in developing it in a team of 4 members. The product is a News-Ticker program running on the user's machine, displaying news headline from user defined sites. And the user has the ability to launch-from the program- the browser to view the news he wants. The project may sound simple, but as we go into the details you will see how simple requirements like the one above turn to make a big project, with many user features. I will begin by presenting the project requirements in the beginning as we got it initially from the user, then move to the requirements gathering phase in the project, then our analysis to these requirements, then how we put the software requirements specification document, then implementation. In each part I will be explaining the phase I am in, in software engineering and what should I do in it, and what we actually did.

Initial Requirements: When we first met the client his requirements were simple and straight forward; he said: "I want a news-ticker, something professional I can sell, the news-ticker allows me to enter the news sites I want news from, and it displays the headlines of all these sites, and if I want to see a certain piece of news, I want to be able to click on it and open the browser on the its page"

Very simple as we can see in the beginning, but usually the client's requirements are not that straight forward. The client -usually not involved in computer stuff- usually has contradicting requirements. In the above description there is no contradiction, but are these the final requirements? Of course not. The more you talk to the client, the more he adds requirements. This is because the client has an image of his product in his head, but he doesn't express it completely from the first time, any human does this, he may forget some things or adds new things he finds that he needs. That is why a professional freelancer asks the client questions and engages with him in a conversation about the project. He tries to get the most out of him. He doesn't sit with the client only one time to get the requirements, he sits with him as many times as he sees appropriate. When he feels that the product he has in mind is what the client wants, he should start working. The thing here is that the freelancer should not waste the client time with too many meetings, he tries to make his meetings as minimum as possible, by asking direct questions and useful ones. A professional freelancer also should be intelligent enough that when he finds that an additional requirement to the project that the client did not require but he knows that it will satisfy the client and he can easily do it, he should suggest it.

Giving examples of the questions we asked to the client:

1- Do you want the news-ticker as a stand-alone application or you want it in web page?

He replied: no stand alone, this will allow me to view headline without having to open a browser each time.

2- How many news sites do you have in mind as input for the program?

(this may sound strange, but look what you get from the answer) he replied: no limit, I want to be able to add a news site dynamically, each time I want, and I want to be able to categorize these sites (new requirement) so that I have, financial sites alone, sports sites alone ..etc.

3- How do you like the news headlines to be displayed?

He replies: I would love to have two options, scrolling vertically or horizontally (new requirement). I also want to be able to change the font and color of the text by which the headlines are wrote (new requirement).

These were sample of the questions a freelancer should ask. The client usually doesn't have any technical background and he assumes that some things he has in his head will be present in his program by default! So a freelancer must get these things out of his head and put it on paper. The questions should be non-technical at all, just normal questions as the ones above. Simple questions that are made intelligently will definitely get the most out of the client.

After this very first meeting with the client, a freelancer should come out with a general idea of what the project he will be working on will look like. He knows the initial requirements of the client, but all in his head. At this point, the freelancer should go back home, and open the notes he just taken from the client and begins analyzing his requirements and drafting the first use-case model for the project. A use-case model is simply a user-oriented approach to system analysis, where the freelancer will identify the users of the system and the tasks they perform with the system. Also this includes information about each task so he can identify which is most important and should be implemented first.

At this point the project started to the freelancer. So what does he have to do now? The very first thing is to identify which phase is he in and to plan his next three or four iterations.

Last paragraph was very vague, I know, that is why I am going to explain now the important concepts in software engineering that I used in the last paragraph, the first one is "iterations". Every project should be divided into four main phases:

  • Inception phase
  • Elaboration phase
  • Construction phase
  • Transition phase

Each phase of the previous phases can have as much iteration as needed. The number of these iterations differ depending on the size of the project. But by the end of each iteration, the freelancer should have a working version of the product he is working on. The iteration is a complete cycle including requirement gathering, analysis, design, and implementation and testing of the product. The goal at the end of each iteration is to have a working version of the product that the freelancer can add more functionalities to; such that, by the end of the all iterations the freelancer will have his product having all the required specifications.

Getting back to phases; in the inception phase you stress on gathering requirements mostly, you try to -as the title of the phase says- start the iteration by identifying what you want to do in it. In the beginning of the project, usually the first two or three iterations involve the client, to get more requirements from him or to ask him for clarification about a requirement, these first three iterations are usually in the inception phase. The inception phase doesn't mean you will not implement or design anything. But the case in this phase is that the freelancer should have a very simple version of the application running with very basic requirements. The iterations in the inception phase usually have very little progress in the implementation of the project. This is of course because the freelancer is still getting everything in his head.

In the elaboration phase there is less stress on requirements gathering and you start analyzing these requirements. You start looking and getting a feel of the project, now you know what you want to do. So how can I plan doing it and what do I need to do it?. These are the kind of questions you will ask your self at this phase. This phase also includes the design of the project. As a result of analyzing and planning the project, you begin the design.

the construction phase, you complete the design of the project and you start implementation. At this phase, programming gets the upper hand. Normally when you reach this phase, you should have passed several iterations in the beginning, in them you finish implementing the basic functionalities. So in the construction phase, you begin implementing the complex functionalities, which is why the stress in this phase is upon implementation. Needless to say that implementation includes programming and testing.

In the transition phases, you should have finished implementation and you are about to produce the final version to the client. In this phase, the implementation is still involved for bug fixing; in case you found a bug before handing in the project. This phase is the one in which you finalize the product before production.

Now, moving back to the case study we are doing here. After returning from the first meeting I mentioned above, we held a meeting to begin work. And this I will discuss in my next article, in which I will apply the above concepts of phases and iterations to the news-ticker program, and show how we divided the project into phases and iterations.

Please, if you have any questions, don't hesitate to send me a mail on the address below.

Tarek Negm
teenegm@yahoo.com


Please suggest a site here

Elance Freelance Logo

Contracted Work

Billing Orchard
Freelance Billing Help

Graphic Design Portal - Graphics Hub
Graphic Design Portal

Adobe Photoshop Tutorials
Adobe Photoshop Tutorials

sister sites :

Freelance Self-Employed Jobs Directory

Graphics Software Information

All Work At Home Ideas

Tutorials Directory

   
AddThis Social Bookmark Button  
 

All Freelance Work is a freelance jobboard, small business community, consulting business article base, and freelance self-employment business information zone (and also great for people who have home-based businesses). All Freelance Work has been around since 2000 and is the home to over 170,000 freelancers. With 100s of freelance articles and 30,000 registered employers of freelancers, we have helped 1000 of contracted independent professionals find the perfect consulting jobs. Spend some time on this freelance site and see why so many freelancers keep coming back to All Freelance Work day after day. We welcome all self-employed professionals and we welcome all employers looking to hire our independent professionals. (Employers Can Search or Browse for Portfolios from the bottom or top of this page).

CONTACT US ------ ADVERTISERS ------ FAQ ------ ABOUT US ------ PRIVACY POLICY ------ TERMS OF USELinks -----> folios--Adobe Photoshop Tutorials--All Work At Home Ideas--Freelance Jobs --Graphic Designers Resources--All Advertising Online--Artists Helping Children--Blue Sfear--ContractedWork--Family Travel Destinations -- Schools and Learning -- Find Dentists --Web Design Resources -- Graphics Software & Photoshop Tutorials -- Web Design -- Web Designers -- Web Design Portfolio

ARE YOU LOOKING FOR A FREELANCER - BROWSE THROUGH OUR FREELANCER'S PORTFOLIOS BELOW:

Freelance Graphic Designers Portfolios -- Freelance Animators Portfolios -- Freelance Multimedia Artists Portfolios -- Flash Artists Portfolios -- CAD Professionals Portfolios -- Freelance Copyeditors Portfolios -- Proofreaders Portfolios -- Creative Direction Portfolios -- Freelance Creative Directors Portfolios -- Fashion Designers Portfolios -- Film / Video / Audio Artists Portfolios -- Game Artists Portfolios -- Freelance Desktop Publishers DTP Galleries -- Illustrator and Illustration Galleries -- Free-lance Cartoonists Galleries -- Free-lance Industrial Designers Galleries -- Free-lance Interior Designers Galleries -- Marketing and Promotional Designers Galleries -- Muralists Galleries -- Faux Finishers Galleries -- Free-lance Photographers Galleries -- Powerpoint Artists Galleries -- Free-lance Presentation Artists Galleries -- Free-lance Translators Galleries -- Free-lance Web Designers Galleries -- Writers Galleries -- Journalists Galleries -- Contracted Web Developers Galleries -- Database Developers Galleries -- Contracted Web Copywriters -- Web Animators Portfolios -- Contracted IT Testers -- Contracted Tech Trainers -- Programmers Portfolios -- Contracted IT Networkers --Database Programmers -- Contracted Tech Writers -- System Administrators and Admins --Engineers -- Contracted Data Processors -- Contracted CPAs -- Contracted Accountants -- Financial Planners -- Contracted Bookkeepers -- Contracted Lawyers and Attorneys -- Financial Analyzers -- Investors -- Contracted Legal Assistants -- Contracted Paralegals -- Contracted Managers and Strategists -- Contracted Analysts -- Contracted Brand Strategists -- Contracted Customer Service Agents -- Contracted Business Development -- Self-Employed Advertisement Managers -- Self-Employed Marketers -- Self-Employed Sales -- Media Buyers -- Self-Employed Web Promoters -- Self-Employed Public Relations Agents -- Self-Employed Architects -- Self-Employed Engineers -- Event Planners -- Self-Employed Musicians -- Self-Employed Politics Advisors -- Recruiters -- Self-Employed Scientists -- Self-Employed Coaches and Trainers -- Entertainers -- Self-Employed Fitness -- HR Human Resources -- Self-Employed Real Estate Agents -- Self-Employed Retailers -- Self-Employed Trainers -- Self-Employed Data Administrators -- Self-Employed Transcriptionists -- Virtual Assistants

All website design, text, graphics, selection and arrangement thereof, and software are copyrighted works of AllFreelance, © Copyright 2000v- 2007.