Roles of Team Members I suppose you have managed the group, friendship, supervisor, topic parts of the project, made up your mind, and start taking the actual steps. When I told you to pick up and arrange everything, I recommend you do so in the summer holiday, so you do not need to waste lots of time during the term trying to manage all those issues, pushing yourself and your nerve to the edge. If you have not managed those topics in the summer, you might regret this. Because, you had lots of time in the summer to check the topics of interest to you, you had time to have long talks and conversations with your friends. It shall be clear to you that it is really important to have friends in your college / faculty / school older than you. You can really gain good experience by talking to them. You can also make use of the internet in searching for brand new / hot ideas for your project. Never be ashamed to share an idea that is being implemented somewhere else, and never claim it was your idea. You really do not need to do so, because life is really so much simpler than this. Mention the source, and mention your addition. Try communicating with people working in the same field, sharing you the same interest(s), it is really lovely to meet people from different places to share you resources, material, and experience. One of those guys I have met; online, before, talked to for a while, still mailing till now, and he affected my career a lot. He is Marty Modell. I was facing a situation where I was losing hope, control on my career, finding it hard to manage the requirements of new projects, especially because I faced a great lack of professional and technical practices. One of my main challenges was the difficulty to find real life scenarios to apply and implement scientific and research theories (believe me, this will be also the main challenge in your graduation project), I sent him an email, asked him to send me some of the details he dealt with while he was in the field. He replied me so kindly, though he sent me nothing; because he wanted me to go get my stuff, he helped me in period of my career. He is one of the guys you do not find every day. I am telling you this because many of us take people either for granted, or denies them at all. I will not do your graduation project; neither will leave you while I can help; in case you contacted me. I hope one day you can make use of any of the tons of online available contacts. You should have defined the capabilities of your Graduation Project Team by now. If you are lucky, you will find different variety of skills:
Never underestimate any of those qualities, because all of these are applicable, and highly needed in the graduation project. The successful Graduation Project Team is not the one that holds all previously mentioned qualities, but it is the one that shows the inner strengths, and hides points of weakness. Shortly, previous qualities are important because: · Graphic Designers: Either Multimedia, Graphic, or Web Designers are important. · Multimedia Designers: refer to designers with the capability to produce short/long movies, animations, panorama simulations and those lovely materials that amaze all of us. They are really so helpful in graduation projects, despite the fact that they can be a graduation project themselves. Following are the result of one of the best students FCI-Mansoura have seen in Multimedia, you can take a look [i]: FCI - Mansoura Lab FCI - Mansoura Class Graphic Designer: 2D and 3D design are also important. If you believe in your talent and want to have graphics as your graduation project, you are welcome to do so. Check the following work; by the same student mentioned before: Faculty - First View Faculty - Second View Faculty - Third View Student Affairs Department - First View Student Affairs Department - Second View Student Affairs Department - Third View Web Designer: s/he is responsible for adding the amazing lovely interface we see in today's web sites. If you are a web developer, then you will appreciate the role that Web Designers play to highlight your effort in a lovely way. Regarding Web Designers, I met two different friends of mine that have two different points of views. The question was: "Shall I design my Web site before programming it? Or Build it and leave design to be the last phase?" And I had many answers regarding this topic, each claiming; of course, to be the right one. It does not matter what you do first, but what matters to me is: Use Master Page in your Web application, if you built the system before you finish the design; while you are implementing a master page, it is just a CSS file on the go. If you designed the master page in the first place, then Hooray! You are ready to go. Never implement scattered pages in your Web application, because if your Web application is a successful one, it will contain endless pages, with unbearable amount of work to edit, in case you wanted to change the site template [ii]. Programmers / Developers I have never understood the difference between Programmer and Developer. I have been told that Programmer is the one who programs a new system, while Developer is the one who develops an already existing system. I did not like that difference, because it is meaningless to me. Developing already existing systems involves programming as the main activity, so every developer is a programmer, but not every programmer is a developer. Again, I do not like the idea, because programmer is developing a system; that did not exist in the first place!!!! So, I will leave this point and head directly to the next point: Specificity. You might believe in specificity more than I do, or you might not. I met people who prefer to classify Developers as: Database Developers: are interested in database server side programming. That means they build databases, tables, stored procedures, triggers, and database server side functions. Database server side programming is not a recommended practice because it adds a heavy load on the database server. Database server is the server that holds Data Base Management System (DBMS). Data server; server that holds the data files, might be the same server as the DBMS server, and might not. Adding business logic into the database server makes it: Loaded, and not easy to share and change business logic, but still, applications need to have SOME of its business logic stored on the database server; at least in the form of: Stored Procedures [iii]. Application Developers: It is easier to tell the difference between Application and System to ease the understanding of the difference between Application and System Developer [iv]. Simple, System is a collection of Applications. So, the application tends to do specific task(s), automate one or more processes, with the domain limited to Application Domain. Generally, Application is the main component of the system. System Developers: Systems are collections of one or more applications that need to integrate inter-operate, and collaborate in order to achieve system goals. Systems Domains are much wider than Application Domains. System Developers should have built and developed applications for a while, so they become aware of the tricks, hints, and most repeatable problems that face Application Developers. System Developers focus on the overall view of the system, and mainly the most suitable techniques to integrate different applications into one large system [v]. Web Developers: are developers that build Web based applications. If you do not agree on the presence of Web developers in this list, I do not agree too. If we add Web Developer, we shall also add Desktop Developer, SharePoint Portal Developer [vi], and other types of applications, but this is not the case. Web Developers are added as a separate category because one day Web development was new, needed different considerations and concepts within programming (different than desktop applications) due to: Less Rich Web based interface when compared to Desktop Applications, Stateless Web protocols [vii], Server side Security; that might inhibit the ability to write to hard disks, store data, the need to centralize the processing and business logic on the server side, and the need to know the difference between server side and client side controls. Web developer can build Applications, and Systems, so Web developer is actually either an Application Developer and / or System Developer, but as I told you before, we have to take a quick snapshots of history, to be able to reach to today, exactly as you might need to take a look at N-Tier architecture to know more about Web Development [iix]. Different Developers Categories map to different Graduation Projects. When the Graduation Project Team is interested in Database Developing, they better suit themselves in a project that highly requires an intensive database programming, with the fact that Database Programming might not be so interesting to many, and it focuses on Forms (User utilizes to enter / edit / append data) and Reports (User utilizes to view stored data in non-editable format) as the main user interface for interaction with the system. System Developers need to take care of the integration, and interoperability challenges. The need to pick a good, clear, powerful real life scenario, and start handling immediately. System Analyst I will not talk a lot about System Analyst, so you might think this guide is turning to be an educational guide; all I wanted till now is to share information, and hope you will do the same with me too. But, one of the main System Analyst qualities is the ability to see what cannot be seen, analyze it, and present it in an understandable format. System Analyst plays an important role in the project, because s/he is the one who has all the answers regarding the characteristics, qualities of current / proposed systems as a graduation project, s/he can fill the gap between system users, graduation project team members, and supervisor. S/he must, really, be patient, with a great ability to present data by figures. System Designer Again, I will not spend much time now on System Designer; not because s/he is not important, but because I am talking about her/his importance in the project more than her/ his characteristics. System Designer fills the gap between analysis and programming phase by turning the analysis diagrams into Entity Relationship (E-R) Diagram, Database tables, Forms, Reports, and User Interface. By doing so, graduation project team, supervisor, and system end-user (in case there is any) feel so comfortable because they are almost near the target, they can edit, make modifications, agree on the final system requirements, define points of strengths and weakness in the project before the real implementation start. Believe me, if you achieve what I have just talked about now, you will feel so restful later. Technical Writer I do not know much about what Technical Writer exactly does in large software development organizations, but when I say "Technical Writer" here, I mean the person that is capable of turning all those non-self describing diagrams presented during the analysis, and design phases into a nice document that:
It is not an easy job, I know. It needs time, more contact with the supervisor, more practice, and training, but you will be good at it while time goes by on you doing it. Have you ever wondered why the author of reference -X- has added a figure right here? Was it useful? Does the figure include data/information that is not mentioned in the paragraph? I think you need to learn from real life examples to enhance the Graduation Project overall Technical Writing. Documenter If you are wondering: (What shall Documenter do now, we have a technical writer) I'll tell you that you are following the article, and thank you for that, and there is an answer (I will not go through the case you have not asked the question, shall I go through such a case? ) Graduation Project Team need to document every single step they take, every single move they make from the minute they started thinking about the project, till the minute they are about to print the final documentation. They need to document meetings, they can generate reports of those meetings, they need to document the methodology they used, people they met, resources they have used, activities they have done / are doing. Lots of things to document, but the most important thing to me is: The ability to present the introduction, and summary chapters. Those are non-technical related chapters. Those are common English chapters to present what the graduation project is about, and this is important. If the graduation project team has a wonderful technical document without the English to tell what is all this about, it is missing the user interface. Also, if the graduation project team has a wonderful document without technical details, it is missing the technical (and most probably supervisor) interface. Technical document and document complete each other. Presentation Skills If the group holds one with the blessing of presentation skills, this is great. But, one of the main important things graduation project teams gain on the long run, and after the extensive effort of meeting the supervisor weekly, arguing about completed tasks, discussing modifications, and so on, is the increment of presentation skills. I encourage weekly meetings to give the whole group members the chance to present, discuss, and defend the project, express themselves, and enhance their presentation skills. Communication Skills There must be a link between all graduation project group members. If this link does not exist, graduation project team must be aware they are facing serious problem. Successful graduation project team is not the team that does not argue with each other, is not the team that does not have different point of view, but it is the team that knows the person to tell every single detail, trust this person's capability to talk to everyone at anytime, and manage any kind of situation. This person does not have to be the leader; it can be some ordinary person in the group. I try my best to make sure to have someone like this in every group I supervise. Communication skills should get enhanced for the rest of the graduation project team members all over the project. It is important to deal with the rest of the group. Graduation Project is not just about making the project, but it is more about dealing with a team, to successfully achieve a task: Graduation Project. Leadership Skills It is important to have a Leader for every graduation project team. This leader is not the most well known famous cool guy, or the cutest girl. S/he is not the one with unlimited authorities over the rest of the group, but s/he is the one who is capable of:
Financial Support Financial Requirements of graduation projects differ from team to team based on the nature of the graduation project. You might need to host your web site on the internet; you might need to purchase hardware equipment. You might need to print 20 colored copies of your documentation. Financially supported graduation projects have better chances of success than non-financially supported. Summary This article discussed the roles of each team member. You can take this list as guidance while composing the graduation project team, or later to assign a task for each one in the project. Distinctions between roles are not so clear and sharp as they are presented here. But the fact still: Roles shall be clear, because they determine Responsibilities. -- [i] You need Real Player OR Apple Quick Time Player to play those files. Panorama gives you the ability to watch, control presented places, get inside, leave, and that stuff; based on the presented extent. [ii] What I write here might seem silly to you, you might think what on earth do I need all this, it is just a graduation project, and I will let it go, then I will start learning and managing real life scenarios and situations. My advice to you: Take Care, Graduation Project is a lovely amazing wonderful chance to try whatever tools and techniques you want, you might do not get this chance later!! You might pay money later for a chance like this!! You might lose this money!! And remember, there are things in life that comes only by experience; I believe programming is one of those things. Take your Time, Use your Chances. [iii] Though we will go through more specific tools and technologies in the coming articles, I do not tend to go through the Oracle vs. Microsoft and Java vs. C# Hassle. We can have conversations and talks about points of strength of each technology, but this is not the main concern of this series. [iv] By the way, the difference between Application and Program is that: Application is a RUNNING Program. Programs installed and exist on the PC turns to be Applications when they are executed and loaded in the PC memory. [v] You can think about System as being a large scale enterprise / organization that holds different applications within. MobiNil; The Leading Mobile Operator in Egypt and my beloved Mobile Operator, is an example of a large system that holds many applications within; like: Purchasing, Inventory, Sales, Marketing, Human Resources (HR), and lots of different applications. Those applications need to be under one system: MobiNil. By the way, Organizations are non-profit enterprises. [vi] SharePoint Portal is; no doubt, most common todays fashion. SharePoint Portal Server is Microsoft's product to enable organizations to facilitate collaboration, provide content management features, implement business processes, and supply access to information that is essential to organizational goals and processes. For more information, please check the following link:http://www.microsoft.com/sharepoint/default.mspx [vii] In Desktop Applications, developers never faced the Stateless Protocol real meaning. While building a desktop application, the whole client machine is yours. You can store whatever data you want; either in the attached access database file, or by using the pre-installed DBMS (might be as small and free as SQL Express), BUT when comes to Web, there are two main acronyms you must be aware of: Stateless and Statefull. Those two acronyms are used to describe the protocol that your Web server (the PC that holds the online running application; you will develop this application by the way) runs. Protocols are the cornerstone of your application, because when you think about building a file share application, you use FTP (File Transfer Protocol) as the core of the application, and so on. So, you need to be familiar with the protocol characteristics to be able to build the right application. Statefull Protocol is the protocol that maintains user status. FTP is a statefull protocol, because it remembers the folder you are viewing now, the folder you viewed before this one (Up Level), so the FTP server can tell exactly where are you (regarding the folders on the server) right now. Stateless Protocol is the protocol that does not maintain user status. Hyper Text Transfer (HTTP) Protocol is a stateless protocol, because every time you request a Web page, web server sends it to you without remembering who you are, how many times you requested that page, and what actions shall this page include for each specific user. So, Does it seem a problem to you? Let me show you an example: When you type in your Web browser (Please make it Firefox, because it is really amazing) http://www.gmail.com (The greatest mail service provider ever existed), you will find the Log-in page, now you type your User Name and Password, hit Sign-in, but you are directed to a next page that knows nothing about you, because HTTP is a stateless protocol, so you will view a page with all the emails on the Google! Mail server (This does not happen), or you will view the Log-in page again. The Log-in page needs to transfer your authentication data to the Display Mails page, so this page displays your; and only your, mails. This is what we call: Maintain User State and you can imagine the same scenario wherever you go online. While you are browsing a forum, while you are viewing an online magazine, what so ever. So, How Do we keep User status? The answer include: Session, Cookies, Passing Parameters among web pages. [iix] Software Architectures include: 2 tier, 3 tier, and N-tier. For More information, Check "Mapping Different Software Architectures to Different Integration Techniques" Research Paper under My Publications Section. |