Starting a software development Project and Team

Starting a software development Project and Team

1. Get the Requirements

Get the following information as follows:

– What are the Programming language skills required? Java, JavaScript, SQL and etc..

– What is the Project output? Working software, Documentation, level of testing and etc…

– What are the Project inputs? Document, 3rd Party Software, Another System, New Hardware and etc..

– What is the project duration and schedule?

2. Get the right persons that has skills to build the project

In a software development team, A certain structure of persons involved are as follows.

A. Project Leader / Project Manager
– Acts as the overall owner of the project. Calls on the huge project decisions and is main contact point of the stakeholders. Much better if he also has great technical skills to review and check his colleagues work, So he wont be too dependent on the developers. His/Her overall work scope is to know and check the work of the Senior/ SME ( Subject Matter Expert ) , the Developers and the Analysts/QA Engineers.

B. Senior Engineer / Subject Matter Expert on the Technical Level
– It is required that a team must have at least one or more Senior Engineers or Technical Experts. This person will be responsible for the all the difficult or critical software / hardware tasks. He will also act as a mentor or coach to the other engineers or developers as well. He may not handle scheduling and deliverable negotiations, but will be an important team member and has a decision regarding technical matters, that concerns the deliverable and schedule.

C. System Analyst / QA Engineer
– will not take on a developer role but will act as requirements analyst or a quality engineer on the user perspective. Must check the project output if it corresponds correctly to the requirements given.

D. Software Developers
– In a project, a certain software developer may be required, depending on the project needs. This software developer may have a various skillset on any level or a specialized skill such as; GUI/Screen designer, Back-end developer, Database developer, Software tester and etc. If an efficient Project Leader, Senior Engineer and System Analyst is on the team, a Developer’s work may be of much less of a burden. All they have to think about is the implementation of the project module.

3. Prototyping

After getting persons to work on the project, It is required to test the System software prototype against the existing hardware. Insufficient Hardware needs ( such as capacity and etc.. ) may put the project to risk. Also make sure that the input software, and the System works on the team’s hardware setup.

4. Pitfalls on creating software development teams.

Most IT / Software Project Managers fall short on identifying the roles of each developer/engineer. There are times that the Manager acts as the SME and also the Analyst, which will cause a burden on his part. On most cases, all huge mistakes will fall on the Project Leader/Manager. The engineers limitations are only on the assigned tasks given to them, provided they are already capable of their assignments.

Another pitfall is the total reliance of the Manager to its members, where he does very little decision making by himself. An important decision maker is needed, who has the entire project overview to make the software project successful.

Why do managers fail?

( It has been around 5 months since my last post here )

First of all, Management requires experience. 3-5 years experience is enough to manage a team of 3-5 people, and around 10 years to manage a team of 20 people or more. Most of the time, managers in IT fail on People Management. Here is a reason; People Management deals on the science of Psychology and experiences dealing with people in different situations. In IT, most people are promoted as Managers for their technical skills and work experience, but their people skills were not measured. It seems that work experience is related to become a good manager, which is not always the case.

Here are the basic rules that a Manager should always keep in mind, and who he/she has to be:

1.) Must anticipate and see the overall picture – Somehow this skill requires experience.

2.) Knows how to breakdown huge tasks – This is very basic. Can even be acquired from training.

3.) Knows how to stand firm and deal with people – This one is mindset. Can be taught but needs experience to be fully practiced.

4.) Last, is to remain humble and approachable – Again this is personality and mindset. Has a very huge impact even your good at all other basic rules mentioned.

5.) Really nice to have: Technical skills and coaching – have this on top of 1-4 and your all good. Although only having this will make you a one man team.

6.) Communication skills – This one is also based on experience ( Speaking, vocabulary and writing skills ), and closely related to 3.) and 4.)

Then why do managers fail? Again, It comes in the failure in any one of these basic rules. It seems so easy and so basic, Managers tend to forget it ( They are human after all ). Again, it comes to experience, hard-work, and thinking out-of-the-box is the key to become a successful Manager.

Note: A-S-S kissing will get you nowhere. It works sometimes, but it is bound to total failure at some point.

Here are some really good links and references:

This one is the best so far: http://www.josebonnin.com/common-reasons-managers-fail/

From an well written, executive style point of view: http://www.bizcoachinfo.com/archives/10315

One single best common reason: https://www.linkedin.com/pulse/20140628010845-61216387-the-1-reason-why-managers-fail

Other tips and observations: http://businesstips.ph/top-12-reasons-why-managers-fail/

 

Improvement points at the start of project

Some lessons learned and improvement points to be implemented at the start of a project phase. And also always keep in mind the AGILE way.

Requirements / Implementation
1.) Measure each module / function by quantity and complexity
2.) Identify reusable functions / components as early as requirements phase
3.) Create a stable version control / stable release

Documentation
1.) Create a documentation template
2.) Avoid unnecessary and repeating documentation
3.) Identify special cases that that does not adhere to the template

Testing
1.) Avoid repeating test cases
2.) Automate testing if possible
* ( Do code unit test for logic check , not manual data )

My take on the Agile Manifesto

From my personal experience as a software developer, and having gone through several projects, I have my own share of challenges and struggles. Software development is a complex science and has takes some techniques to create a quality end product. The development team must be equipped with the right skill set and the Management must posses an even better process to lead the team. Given that the project team members has the capability to develop the project software, there are these reoccurring challenges for every software project.

To enumerate, these are:
1.) Just the exact / tight schedule
2.) Unexpected requirements
3.) Late requirements
4.) Unclear requirements
5.) Expectations of Delivery
6.) Technical issues / resource issues

Given the traditional Waterfall model on software delivery lifecyle, The requirements should all be clear at the start of the project. But in reality, it is rarely the case, since exact requirements should be realized, even if it’s in the middle or almost end of the project phase.

Requirements are sometimes bound to change. While final/total requirements is still on process, the work of the software development should commence at the earliest possible time. So that the software should be released in earliest possible time, ahead of any competitors ( if any ). And most important of all, The software should be WORKING.

The solution, or the way to develop software in this circumstance is to adopt to the AGILE way. AGILE is a simple mindset to adapt. This can be used in any software project. Given if it is a start-up, maintenance, using the Waterfall Model, or using SCRUM.

AGILE method is used to address the re-occurring problems of software development, that could not be catered by adhering strictly to the Waterfall process. AGILE method follows the very basic law/manifesto that is created by a group of Software Engineers/Developers as the first signatories.

So here’s the AGILE Manifesto:

=====================================================
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan

That is, while there is value in the items on
the right, we value the items on the left more.
=====================================================

I personally believe that the AGILE way of software development is the most efficient way, to be used on top of other software practices such as Waterfall and other methods. Although we should maintain the foundation of the Waterfall process, but the project team should check the AGILE law and see if it can solve the problems the team is facing. Software development process using the Waterfall model started way back in the past and is documented as early as 1956 ( according to wikipedia.com ), but as software systems / teams / IT industries have evolved in recent years, it seems the reoccurring problems of software development can be solved by applying the AGILE law, on top of an existing Software Development Model ( such as Waterfall )

And last… I randomly checked the AGILE manifesto signatories. And there’s one signatory that just sums it up.

quote: ” Paul Armstrong: (PPM (Pty) Ltd) Common sense rules …” unquote:

Here is the original AGILE manifesto website created in 2001
http://agilemanifesto.org

Key Skills to Become an Efficient Manager

I compiled some important skills that are required to become an efficient Team Manager. These skills are appropriate to any Engineering or Project team.

These are my own set of required skills based on my experience and opinion.

– Communication is Vital
– Be an effective communicator, either by writing or by speaking. Be firm on your words and decisions. This skill is one of the most important when managing a team.

– Know your role
– Know what role will you take on. Set your own tasks and set your team’s tasks. Take active roles on areas you consider yourself an expert.

– Know your team
– To make your team run in full steam, know your team. Know each and everyone’s strengths and weakness. Then you will know where each person will fit in the project.

– Get a Mentor
– For new managers, and even experienced ones, it is better to get a mentor to teach you new skills and techniques.

– Be a Coach
– Guide and Coach each member of the team. Develop each member and maximize their potential. Lift up the team spirit. Get a health check/status of each person everyday.

– Get Relevant Experience
– Experience lets you deal with different situations and problems. You can also listen and gather from the experiences of others, and take it as your own.

– Organize your team
– Organize the team routine and culture. Align each and everyone’s understanding and skills.

– Create a Team Process
– Identify and create a effective working process.

– Identify the External Resources
– Know who to approach even outside the team. Get to know other skilled people.

– Trust the Common Sense
– Decide by logical reason, quick thinking, and common sense.

– Always anticipate
– Be ahead in thinking. always perceive events in advance.

– Trust the Team
– Believe in your team. Don’t doubt, but still keep an eye on their back.

Its quite a lot, and yet there are more skills needed…   http://m.wikihow.com/Learn-to-Manage-People

IT Career 2015 – Why go for IT?

Why go for an IT career?

A Career in IT ( Information Technology ) has a lot of potential in the succeeding years. Information technology is the Data and Network infrastructure that binds the world together. It moves the information and knowledge in the fastest way we could ever imagine.

In relation to our daily lives, information technology lets us send a message across anywhere in your area, your country or around the world in mere seconds. And not just that, it lets you send this message anytime of the day, with a very minimal failure time. A single message or a signal is not just a text, but is also a picture, an entire document, a video, a bank transaction, or even machine program code, that builds another IT system.

Information technology is heavily used in almost all industries such as banking, tourism, telecommunications, finance, healthcare, retail, manufacturing, animation, transportation, media, and research. In all industries in the world, there is a need of an IT System.

Due to the complexity of the Information Technology projects, there are several key roles in an IT team. These are:

1.) Technical Specialist
– Individuals that has a technology specialization. Examples are: Database Administrator, Network Infrastructure Engineer, Operating System Specialist and System Deployment Specialist. These are the people who make sure that the full IT System is running on complete cylinders.

2.) Software Developer
– These are the implementation specialists that develop and create Software infrastructure. Basically the logic and behavior designer of an IT system. They have high understanding of the programming language used.

3.) Test and Quality
– QA ( Quality Assurance ) / Test Engineers check and inspect Software and IT Systems if it has errors and flaws. They make sure the System is in good quality. They must posses skills that such as attention to detail, and can come up with out of the box or logical test scenarios.

4.) Documentation
– Complex systems needs good documentation for future reference. Manuals and systems specifications are also required.

5.) Support Staff
– Administrative and and other support roles that the team will need, which may be technical or non-technical.

6.) Project Leaders and Managers
– The driving force and leaders of the IT team. They posses great experience and knowledge of the entire project. Must be technically skillful on the technology domain. Posses great leadership skills that can carry people to deliver. Better yet if this person can lead other leaders as well.