Delivering a project and presenting to a multi-level audience

(Ridenour, 2014)

(Ridenour, 2014)

Often times at work and internships we are asked to work on a project and do a presentation at the end of it. Projects can be of different scope and complexity. The timeline and the delivery also differs according to the scope as well as when it is needed. It is always important to estimate and come up with how much can be done before setting a delivery date. If you need to hit a deadline, for example at the end of an internship, you can also work backwards and narrow the scope depending on how much time is available during the internship.

At school I was taking a software studio class where students could choose their own projects. Since we only had two weeks time before the deadline, we had to choose our project wisely and narrow the scope. I had four people in my team and we brainstormed various ideas for the project. Finally we settled on the idea of creating a website which would help students find study partners. Students could sign up to our system at the beginning of the academic year and we would help match them with other study partners depending on their schedules. Even though this is a simple idea it could have quickly grown big if we had not planned ahead with our deadline in mind. We kept things simple and divided the tasks and we were able to deliver on time.

However quite opposite to this, things did not work out quite as well during my first assignment at work. We were building a simple interview platform. We started thinking about how we could automate the interview generation process. Then we thought about giving our program managers the ability to edit the interview questions themselves. The project scope grew so much in size that we lost sight of the original problem that we were trying to solve. We wouldn’t have not come across his problem had we thought about the timeline and planned carefully ahead.

(Presentation for client)

(Presentation for client)

Presenting to a multilevel audience comes with opportunities and risks. As an engineer it is a great chance to show what you have done. People will know you through the products you create. Presentations you give about your projects can add to your credibility as an engineer and build your brand. It is important not to go too much into technical detail especially when there are non technical people in the audience who might not understand. I always begin my demos by telling a story. You can talk about the features and functionalities by talking about them in the context of a user story. The basic rules of good presentations are: keep it simple, rehearse the presentation, don’t memorize but use your notes very sparingly, dress for success, don’t go too fast, or too slow (Feierman, para. 11).

References:

Feierman, A. The Art of Communicating Effectively. Retrieved November 30, 2014 from
      http://www.presentation-pointers.com/showarticle.asp?articleid=64

Presentation for Client [Online Image]. Retrieved November 30, 2014 from
      http://www.dreamstime.com/royalty-free-stock-photography-presentation-client-image28967347

Ridenour, D. (March 11, 2014). Ensuring Mission Delivery for Government Projects [Online Image]. Retrieved November 30, 2014 from
      http://www.jamasoftware.com/blog/ensuring-mission-delivery-government-projects/

Advertisements

Handing off a project to a client; what are the risks and challenges?

You and your team have worked months and months or even years on your project. You have been part of the project that has evolved from nothing to some thing real. It went through different life cycles of a software development. Now you have reached a point when your project is fully developed and is ready to be shipped to the client. What will be the future of the project? There can be only two possibilities: It can be a successful project or it can be a total failure. Well, you definitely do not want an unsuccessful project after all your hard work, commitment and dedication.  So, when handing off a project what are the risks involved and challenges faced ?

handoff

(Egeland, 2014)

Every project has some kind of risks. One of the biggest risks that is involved is delivering an incomplete product. Due to missing, incomplete or changing requirements and specifications, the end product may not align with the customer needs and this will dissatisfy the customer(Argento, 2009, p. 3). Another risk is delivering low quality product. If the software did not go through complete testing and validation, chances are it will carry too many bugs with it. Another risk is not meeting the scheduled expectations for delivery due to ineffective planning and managing.

Blog8-Img1

(Project Delivery Services)

Along with risks, there are some challenges faced by the project. The main challenge is getting the right project requirement to make sure it is aligned with stakeholder’s business needs. The other dilemma is to make decision about when to stop testing the software and release it to the customer(Yang et al, 2008, p.813). If there is any delay, it may result in a loss of market share (Yang et al, 2008, p.813). Another challenge is traceability that demonstrates responsiveness to customer(Grant, Five challenges of product delivery that kill results). It shows that whenever customers asks, you can point them to the code, docs, release, etc. Traceability lowers the risk of re-work. (Grant, Five challenges of product delivery that kill results).

So, can these risks be mitigated or even avoided ?  If you truly practice agile development in your project, risks can be identified and addressed early as agile development focuses on constant feedback, on going collaboration, conversation with stakeholders to clarify things and to make sure developers and testers get the information that they need(Grant, Five challenges of product delivery that kill results).  Team members can bring up any blockers or risks during the daily standup meeting. Sprint Retrospective is also a good opportunity to talk about things that needs improvement or to identify risks(Krishnamurthy, 2014, para. 6). “Agile fights overly optimistic schedules” (Thomas, 2008, para. 15).  “Agile Project Planning uses Agile Estimates and measured velocity to put together an empirically sound schedule” (Thomas, 2008, para. 15). Agile gives the ability to review, assess and improve current processes within each phase of the software delivery lifecycle(Argento, 2009, p. 6)

References:

Argento, R. (August 2009). Lowering business costs: Mitigating risk in the software delivery lifecycle.
Retrieved November 16, 2014 from
https://jazz.net/library/content/articles/insight/lowering-business-costs.pdf

Egeland, B. (21 October, 2014). Image of handing off project. Retrieved November 16, 2014 from
http://blog.aecsoftware.com/

Grant, T. Five challenges of product delivery that kill results[Video file]. Retrieved November 16, 2014 from
http://www.jamasoftware.com/five-challenges-product-delivery-recorded-webinar/

Krishnamurthy, V. (2014, April 18). Managing Risk in an Agile Project. Retrieved November 16, 2014 from
http://www.techwell.com/2014/04/managing-risk-agile-project

Project Delivery Services [Online Image]. Retrieved November 16, 2014 from
http://www.eurotherm.com/products/programmable-automation-controller-system/project-delivery-services/

Thomas, S. (28 May, 2008). Agile Risk Management. Retrieved November 16, 2014 from
http://itsadeliverything.com/agile-risk-management

Yang, B., Hu, H. & Jia, L.,  “A Study of Uncertainty in Software Cost and its Impact on Optimal Software Release Time”, IEEE Transactions on Software Engineering, vol. 34, no. 6, November/December 2008       http://ieeexplore.ieee.org.libaccess.sjlibrary.org/stamp/stamp.jsp?tp=&arnumber=4553721

What five technical skills are employers seeking? What five soft skills put you on top?

(Vulcan, 2014)

(Vulcan, 2014)

Going through an interview is not as easy as it used to be few years back. Companies have higher requirements; they make you go through rounds of interviews for testing both your technical skills as well as soft skills. There is more competition and interviews are challenging. So, what are the technical skills and soft skills that employers are seeking?

Here are the top 5 technical skills that employers are seeking:

  1. Good knowledge of at least one programming language
  • Any developer needs to be fluent in at least one programming language. If you have a good grasp of at least one language, it becomes easier to pick up other languages because there are many common themes between that every programming language.
Kolakowski (2014)

Kolakowski (2014)

  1. Experience with object oriented design
  • Object oriented design has become the de facto design paradigm for most projects. Object oriented design greatly helps with code maintainability, ease of reuse and separation of concerns. Due to the ability of inheritance you can group the main tasks in the base class and have the concrete tasks only deal with the particular implementations.
  1. Problem solving skills
  • Every developer has to have great problem solving skills. Breaking down a complex problem into smaller tasks and tackling those tasks is an essential skill in problem solving. A solid foundation in math and algorithm classes can help a developer get good problem solving skills.
  1. Ability to write good quality code
  • Bad quality code can lead to poor readability for other upcoming programmers as well as for the programmer who wrote the code themselves in a few months. Similarly it can lead to more bugs. Bad quality code generally adds to the complexity of the code base and makes progress difficult. Hence it is really important to write code that is maintainable, well tested, simple and reusable.
  1. Learn fast
  • It is incredibly important to be able to learn fast in the tech industry. Language features are changing constantly. Similar frameworks come and go. It is important to be able to remain on top of things by learning fast.

Here are the five soft skills that can put you to top:

GradQuiz (2014)

GradQuiz (2014)

  1. Collaboration
  • A team can perform at its best only with collaboration.
  1. Ability to communicate well
  • Even though a programmer’s main job is to code, having a great communication skill can be a great advantage at work place. You can put your ideas forward and influence decisions.
  1. Ability to work well with programmers
  • Many times, you wont be the only one in the project. You will be working with several others. Thus it is important to be able to able to coordinate and work well with other programmers.
  1. Ability to work in an inter disciplinary team
  • Often a team consists of designers, product managers, program managers and engineers. It is important to be able to work well with an interdisciplinary team.
  1. Integrity

– People will respect and value you if you are a person of integrity.

These skills are the critical tools you need to succeed in the workplace which you can learn, cultivate, develop, and maintain over your lifetime(Hansen & Hansen, para. 46)

References:

GradQuiz(2014).  What employers want from you – Part 2 – Passion. [Online image]

      Retrieved November 4, 2014 from

      http://www.gradquiz.com/studentvine/2014/01/what-employers-want-from-you-part-2-passion/

Hansen, S., R. & Hansen, K. What do employers really want? Top skills and values

      employers seek from job-seekers. Retrieved November 10, 2014 from

      http://www.quintcareers.com/job_skills_values.html

Kolakowski, N(2014).  What are the next big developer skills. [Online image]

      Retrieved November 4, 2014 from

      http://news.dice.com/2014/05/21/next-big-developer-skills/

Vulcan, N. (2014). Top 10 Skills Employers Are Looking For [Online image]

      Retrieved November 10, 2014 from

      http://www.careeraddict.com/13084/top-10-skills-employers-are-looking-for

Social Media and Branding

Do you have any active social media presence? Any profile on Facebook, Twitter or Linkedin account? If you think social media is not your thing, then chances are you are going to become obsolete quickly. Today is the era of mobile and social networks. Everyone you know probably spends more than 2/3rd of their waking hours using the Internet either via laptop or smart phones. And social networks are everyone’s favorite places to hang out in the Internet.

Social Media

Social Media (Online Image 2)

Facebook that was founded in 2004 has become mainstream, its popularity has exploded and now almost everyone on the planet owns a Facebook account. Other popular social networks like Twitter and LinkedIn followed Facebook. Given the popularity of social networks and also given the fact that most people spend majority of their waking hours on the Internet, it has become vitally important to have a good social presence.

Social media is an investment that gives users a way to promote themselves to their audience and thus increase the opportunities to sell a product or find a job (Dasilva et.al). Say you are looking for a job, it is utterly important to have a LinkedIn account. Having a great LinkedIn account is the best way to create a professional stamp on the Internet. Recruiters frequently scour LinkedIn to find possible candidate for open positions.

LinkedIn is not the only media where you cultivate your online brand. If you are a developer it is very important to have a Github account where people can see your projects and can have a direct access into code you have written. Having some cool projects on Github is a great way to make you more marketable.

Other social media like Twitter and Facebook, although are not always for professional use, are also vital to your brand. You can use your twitter account to create a positive brand for you in the Internet. Say you are passionate about robotics, you can share pictures of you participating in robotics competition, side projects etc. on Twitter. This will help establish your credibility as a robotics enthusiast. Similarly what you share on Facebook can help establish a positive image for you. The people you have as friends on Facebook can be your next co-founder, angel investor, employer, referrer etc. so it is important to create a positive image for you on Facebook too.

Social Media Brand

Social Media Brand (Online Image 1)

Today, not just individuals, but even the leaders and companies are realizing the necessity of including the social networks on their brand strategies in order to interact with their users and reach their audience (Dasilva et.al.)

In conclusion, it is important to be selective when choosing what to share on social media. You should curate your posts meticulously. Having a good social presence can enhance your brand and reputation and help you become more successful professionally.

References:

Dasilva J. P., Arratibel A. G, Aierdi K. M., Galdospín T.M, Castillo I.M, Mardaras L.I, González MM. R, Santamarina D. R. (2013): “Companies on Facebook and Twitter. Current situation and communication strategies”, at  Revista Latina de Comunicación Social.

[Online image 1]. Retrieved October 26, 2014 from
http://www.brandinfection.com/2011/12/10/brand-building-with-social-media-–-5-key-benefits/social_media_brand_influence/

[Online image 2]. Retrieved October 26, 2014 from
http://www.wakondamarketing.com/4-reasons-brands-shouldnt-rely-solely-on-social-media-to-communicate/

LinkedIn profiles, how to use them, how to market yourself, how to network

Along with the growth of social networks, LinkedIn has positioned itself as the go to network for work relations. Launched in 2003, the professional network giant has seen an exponential growth in its user base and today more than 300 million people use it actively (LinkedIn). This also ushers us into a new era of the Internet where you can connect instantly with many people across the globe.

The world's largest professional network

(Image of the world’s largest professional network)

In the past if you wanted to apply for a job, you would have to go to the company’s website and drop your resume. Based on the giant resume pool, the recruiters would pick a handful of potential leads and then contact you to schedule interviews. Now LinkedIn has eliminated the need to do that. Recruiters can directly search for users matching a certain profile. They can directly see your work history, accomplishments and recommendations in your profile and contact you.

Over 70% of the companies use LinkedIn to find the right candidate. A recruiter found Jeff Epstein on LinkedIn and hired him to be the CFO of Oracle (Dutta, 2010). This makes it very important to have an up to date profile in LinkedIn. I always make sure that my LinkedIn profile has all latest work experiences listed. Under each experience, I give a brief description of the key highlights of the work done. This helps the recruiters not only see my job’s assignments, but also my key accomplishments during those assignments. I also usually ask for recommendations with colleagues and my manager so that they can also add to the richness of my profile. It is also important to put information about the college degree, courses taken, certifications etc. This helps the recruiters to see the skills you got through formal education. Also you should add all relevant skills into your profile. Your friends and colleagues can endorse you if they have seen you demonstrate a particular skill.

Marketing yourself

(Image of LinkedIn Exposure)

LinkedIn has excellent value for personal branding. This is the place for selling yourself. Make sure your LinkedIn profile reflect your strengths. Join groups on LinkedIn based on your interests and get involved in discussions. The more you are active, the more is your value.

It is also very important to grow your network. Many of the inside job openings are found through contacts and your personal network. Similarly, you can get referrals through your network which most of the time guarantee at least a first round interview for jobs. To grow your network, you have to start with your friends and immediate colleagues. Then you can add all the people you know from college, high school, etc. Also every time you meet someone, you can get their names and connect to them in LinkedIn. You can also explore and follow the Company pages.

In conclusion, LinkedIn has changed the way that companies hire professionals. You can have a great profile by always keeping it up to date. Also getting recommendations and endorsements on skills makes your profile better. You can connect with your friends and colleagues and grow your social network. And most importantly, build your personal brand.

References:

Dutta, S. (2010). What’s your personal social media strategy?. Harvard Business Review, 88(11), 127-130.

[Image of The world’s largest professional network]. Retrieved October 19, 2014 from

      http://scitechconnect.elsevier.com/resources/author-connect/linkedin-optimizing-professional-profile/

[Image of LinkedIn Exposure]. Retrieved October 19, 2014 from
      https://www.pinterest.com/ryanwheelwright/improve-linkedin-exposure/

LinkedIn. Retrieved October 19, 2014 from
      https://www.linkedin.com/about-us

Agile tasks lists, what does “done” mean in Agile ?

Agile development is all about breaking down each project requirement into tasks. Agile method does not deliver the project in a big chunk. It’s all about doing the steps feature-by-feature with potentially shippable software every sprint. (Waters, 2007)

All the tasks that are necessary to build the shippable software are put in a product backlog. Thus, a product backlog is just the list of features/tasks to be developed that will keep on evolving throughout the life cycle of the project. As the project progresses, new features/tasks will be added, deleted or replaced to the backlog depending on the changes in the project requirements. Hence, task to do is never complete in Agile.

In each sprint, there will be number of tasks selected from the sprint backlog that needs to be accomplished in the current sprint. Each task is estimated in hours. In my current project, we use a tool called ‘Poker Planning’ for estimating the task. We involve each member of our team during estimation and try to keep the tasks small. If the task take longer than a day, we further break it down so it is easier to estimate.

The team is continuously collaborating and communicating with the clients, developers and testers. Every time there are new changes or a task is completed, members of the team continuously integrate their work(Abrantes & Travassos, 2011). This gives instant feedback about the health of the project. Their activities are discussed daily in a daily standup meeting where they bring up topics such as issues faced by a team member, the possible solutions, task completed, etc. At the end of the sprint, the tasks are accomplished and new tasks are created again for the next sprint. And the whole process is repeated.

Task board

(Diagram of Task board)

So every sprint, each feature is completed which means it is fully developed, tested and accepted by the product owner before counting it as “DONE”. Unless each feature for the current sprint is really complete, there is no moving forward to a new feature (Waters, 2007). Each sprint must deliver a shippable product. It should not be in a state where there are some features that are incomplete or partially tested. That doesn’t necessarily mean that it would be appropriate to ship the product after every feature, but the features in the current sprint are complete and has the shippable quality. You need to make sure that the features developed in each sprint or iteration is “Done”.

Definition of Done

(Diagram of Definition of Ready)

We use burndown chart to track the status of each sprint. The burn-down chart gives a deep understanding of product status. It shows remaining effort and tasks for a given period of time.

Thus, in Agile, the entire team is continuously assessing the plan throughout the development lifecycle. Every sprint delivers complete feature that is fully developed, reviewed and tested.

References:

Abrantes, J.F.; Travassos, G.H., “Common Agile Practices in Software Processes,” Empirical Software Engineering and Measurement (ESEM), 2011 International Symposium on , vol., no., pp.355,358, 22-23 Sept. 2011

[Diagram of Task board]. Retrieved October 12, 2014 from
http://www.mountaingoatsoftware.com/agile/scrum/task-boards

[Diagram of Definition of Ready]. Retrieved October 12, 2014 from
http://blog.xebia.com/2009/06/19/the-definition-of-ready/

Waters, K., Agile Principal 7: Done means Done ! Retrieved October 12, 2014 from
http://www.allaboutagile.com/agile-principle-7-done-means-done/

Waters, K., Sprint 4: Sprint Planning (Tasks). Retrieved October 12, 2014 from
http://www.allaboutagile.com/how-to-implement-scrum-in-10-easy-steps-step-4-sprint-planning-tasks/

What is an Agile Sprint Retrospective?

Although Agile development involves constant feedback and improvement throughout the project’s life cycle, there is a special time slot allocated to do this. It is called Sprint Retrospective, which is the final thing done in a sprint after the sprint review meeting.

Scrum process

Scrum process (Jeevan, 2013)

It is a meeting where the entire team who was involved in the iteration, including the team lead, the product owner, and the development team participate. “The retrospective is a special, cadence-based forum which allows the teams to not defer immediate improvements, and puts additional discipline and visibility around a coordinated, long-term team improvement effort.” (Iteration Retrospective)

The purpose of sprint retrospective is to discuss three primary questions:

  • What should we keep on doing?
  • What should we stop doing?
  • What should we try in the next Sprint? (An Overview of the Scrum Process)
Sprint Retrospective

(Diagram of Sprint Retrospective)

The sprint retrospective meeting usually lasts no more than an hour. There are many ways to conduct an agile sprint retrospective. The Scrum Master facilitates the meeting. Every one is encouraged to speak up and be an active participant.

There can be several topics that can be included in the discussion. The team can review the sprint burn-down chart and discuss the results. The chart shows progress of the project on a daily basis. The sprint retrospective is a good opportunity to talk about team communication and collaboration.The team can raise any issues that they think will need some improvement in the upcoming sprints. This can include any processes such as development process and code review process, or tools such as electronic tools, artifacts and technical tools.(Layton). During the retrospective, the team can identify possible solutions and brainstorm how to implement the improvements (Simple Retrospective Agenda)

The issues will be generated from the discussion and the facilitator prioritizes them using some technique to work on the next sprint. The meeting will end up with the retrospective summary report as a deliverable. The report can include an overview of the sprint goals and result; challenges faced by the team; items that needs to be improved; items that will be addressed in the next iteration.

“The sprint retrospective meeting is an action-oriented meeting, not a justification meeting” (Layton). The agile sprint retrospective helps to continuously improve the process through ideas and feedback from the team and applying them for the next iteration.  Since each member of the team is involved in the retrospective, it gives encouragement to the team to take responsibility for the sprint. It is one of the best opportunities for finding ways to improve the productivity.

References

The Agile Team and what is a Backlog? What are they for and why are they important?

The Agile Team consists of a cross-functional group of individuals which is necessary to define, build and test the product that will meet the requirements of the customers.(“Scaled Agile Framework”, 2014). Unlike traditional approach where each team member is assigned tasks by the manager, Agile team is self-organized and self-managed. “Self-organizing Agile teams are composed of  individuals manage their own workload, shift work among themselves based on need and best fit, and participate in team decision making. Self-organizing teams must have common focus, mutual trust, respect, and the ability to organize repeatedly to meet new challenges.” (Hoda et al, 2013).

There are several roles in the agile team, which have different names depending on the methodology being followed. A typical agile team structure consists of a scrum master, a product owner, developers and testers.

capture-scrum-team-pic

A Scrum Master facilitates the meetings and team interactions. A Product Owner is responsible for defining and prioritizing the requirements, accepting or rejecting the completed work and communicating project status to stakeholders.
backlog

When a product owner defines the requirements, it is added in a product backlog. Backlogs are lists of features/tasks to be developed. Each feature in the product backlog is prioritized by the product owner. In the sprint planning meeting, the product owner selects items from the product backlog to the sprint backlog during the next sprint (Paasivaara et al, 2009).  The sprint backlog contains a detailed list of all the tasks that your team must complete in order to finish the user stories for the sprint. “In the product backlog, your team estimates user stories with the relative unit of story points. In the sprint backlog, your team estimates tasks in hours (Comparing the product and sprint backlogs).
The items in the backlog are goal-oriented where they focus on the “what” rather than the “how” (Mansour). It can have any format such as a text file, a database or Excel document. As the project progresses, new features/tasks can be added, deleted or replaced to the backlog depending on the changes in the project requirements. Basically, the backlog is a to-do list for your project that provides an understanding of the project’s goal and gives the direction to accomplish a project. “The backlog is a living artifact and is never complete.” (Mansour).

The agile development gives importance to all the team members and have them participate in team decision making. So the agile team is empowered to continuously assess the plan throughout the development lifecycle. Hence, the team is highly motivated and takes responsibilities of their roles. Instead of focusing on ‘my task’, their focus is on the overall goal of the product.  As there is more communication with the customers, the team listens to the needs of customers and respond immediately. The backlog lives as long as product lives and will continue to adapt as the team learns more about their customers and market opportunities.

References

What is Agile and what are user stories ?

There are over 55 software development methodologies known so far. Choosing an appropriate methodology for your project depends on the size and type of software applications(Jones, 2013, para. 2). The following figure shows various stages of a typical SDLC:

sdlc_stages

A traditional approach called the waterfall has sequential development stages where you start from one stage, complete it and then move on to the next stage. You cannot go back so if there are any changes in the requirement, you will have to redo the whole thing from the beginning. So this approach is very inflexible and risky as defects were discovered at the late stage. Several other methodologies such as Spiral, Extreme Programming and Rational Unified Process were created to overcome the drawbacks of the waterfall model.
In recent years, one of the newer methodologies called Agile is becoming very popular, and many software companies are moving towards this approach. Agile is an efficient methodology for developing and maintaining high quality software by following an incremental and iterative approach.
Agile-model

“Agile methods are based on adaptive software development methods, while traditional SDLC models are based on a predictive approach”. (Stoica, Mircea & Ghilic-micu, 2013, pp. 70).  The traditional SDLC depends fully on requirement analysis and detailed planning at the beginning of the cycle. The agile model has no detailed planning as the team adapts to dynamic changes in product requirements. (Stoica et al, 2013, pp. 70). In the traditional approach, testing is done after the coding is completed whereas in agile, it is done in every iteration.

In the agile model, people and interactions are emphasized rather than processes and tools. There is more interaction with the clients, developers and testers, minimal documentation and a continuous delivery of working software. A software is developed in stages by dividing the release schedule into a series of iterations. Team members coordinate their activity with a daily standup meeting that runs at the beginning of the day for less than 15 minutes (Ambler & Holitza, 2012, pp. 24). The feature that must be implemented is converted into a user story. “A user story is a simple description of a product requirement in terms of what that requirement must accomplish for whom.” (Ambler & Holitza, 2012, pp. 25). A user story must have the following parts: Title: <a name for the user story> As a <user of persona> I want to <take this action> So that <I get this benefit> (Ambler & Holitza, 2012, pp. 25)

Agile can be used from smaller to medium projects. In case of large projects, since there is a lack of necessary design and documentation, it is difficult to assess the effort required at the beginning of the SDLC. The agile model can be used when new changes are needed to be implemented as it delivers software in an incremental manner making it less expensive to remodel.

References