Sunday, 26 October 2014

Soft skills - An overview of major software aspects

The "darkest" required aspect of sofware development! (or at least I believe so). But in the end it is a very important aspect -just like the others- because it relates to communication, and the ability to obtain the required information at the right time.


These are some important soft skills for software development:

  • Communication abilities. Needless to say how important it is! developers must find a way to effectively communicate with the team and vice versa. Something I always suggest, is to write what we want to communicate, it is usually easier, and then start a discussion with the team.  Communication abilities, include the effective way to answer emails, which can led to a complete entry, but the thing is to always focus on the key questions of the email, and answer then, once that that happens, then you can continue with less important topics like "personal" questions. For example, let's suppose that you arrive late one day and you receive an email asking about why a component is not working properly and the reason for you to be late. You should start answering the reason why the component is not working properly, and then at the very end of the email, the reason for you to be late at the job.
  • Team work. You'll usually find yourself working in conjunction with other members of your team, so it's important to know how to be a good team player. Be polite, be respectful, keep focus on what you're doing, be assertive, be on time, and be inspirational to the other members. Put your personal feelings on one side and be professional, try to understand your team-mates. Some concrete advise for example, is to be very communicative, for example, if you're taking a day off, you're probably telling your boss about this, but you should also tell this to the members you're working on, so they can get organized. Take an active part when you're being asked about code conventions -or any  convention: arriving late, taking day offs, changing lunch time, etc-. That is the only way to keep a team happy and effective.
  • Negotiation. When you're in charge of a piece of the system, sometimes you can be asked to do stuff that is very complicated and that cannot be delivered on time. In this cases, you must communicate this, and id possible, analyse what you are being asked to do, and come up with another option. This apply usually to developers, but also for project managers, when they're being asked to include a lot of features, they should find a way to balance the due dates vs the work that has been developed.
  • Education. Unfortunately -or fortunately?- education has a lot to do with soft skills. Usually your parents are the first ones to teach you how to handle situations. Of course, having a "bad" education is not the end of your career, you must also read books related to this topics to get a full understanding on how to be an excellent developer. And another thing to keep in mind is to use common sense. If you're in a complicated situation, what can you do to improve it? is it your fault? what options do we have? And keep yourself positive, don't let other people bitterness change the person you are. Think always on a polite way to handle situations, if you receive a rude email or someone is acting awfully, you shouldn't do the same, keep focus on the goal of the project and find a polite answer to the request they're making.
  • Ownership of your tasks. You should always take full responsibility of your tasks, this means that you should find a way to get all the things you need to complete the task. A good example is scaling communication ways. If you're in need of some information, and you send an email, if you're not receiving an answer in a reasonable time, you should then try chatting, if that doesn't work, then try calling, and finally, if that also doesn't works, you should talk directly your request. This is why daily scrum meetings are important. If you get stuck on something, you'll find a way by letting everybody knows about your need. There are many other things like, checking your own progress, and see if you're not going to deliver on time, make everybody knows the reason. Don't forget to do on-line research whenever is needed and try to find interesting ways to solve the problem.

These are some consequences when the team doesn't have soft skills:
  • Critical errors because of a bad communication of issues
  • Loosing a lot of time in questions that were not addressed at the right time
  • Big differences between: what is really needed, what it's being done, the project specification and what the customer requests
This are questions that can save a project:
  • Do we really, really need all the features for the first release?
  • Is there an existing software that can help us in developing the project?
  • Is everybody in agreement with the project specification
  • Is it possible to divide in more releases the project?

And that's it folks, this series is coming to an end! I hope you enjoyed it. Let me know if you have questions or if you want me to talk about something in particular for future entries.

No comments:

Post a Comment