Friday, August 26, 2016

Communication for Dummies



I have been doing this computer thing for a dozen years now.  I started out as a developer and migrated over to the dark side, aka application security.  I have read lots of blogs and books on various security and software topics.  I have attended a number of conferences including Black Hat, BSides and OWASP.   I always come away with really awesome ideas on new processes and technologies.  I am always excited to get back to work and implement these ideas to help my organization.  I put in all of that hard work and finally unveil the final product and… nothing.  Well shit, none of the speakers at the conference or authors of the blogs or books I read talked about how to actually communicate these new ideas to the people who have to use the new process or technology.  Think about all of the conferences you have attended and all of the blogs you have read.  How many times have you read about how to effectively communicate these ideas to the developers who have to implement them?  

Communication is a key area that I’m actively working to improve, both personally and professionally.  I realized a long time ago that I have a slight temper and this affects my ability to communicate effectively.  There are times when it takes every bit of patience I have not to tell a developer their code is complete horse crap.  This isn’t effective and won’t help get vulnerabilities fixed.  The approach that should be taken is that of a teacher, but not a teacher that gives you detention for not turning in your homework.  As security professionals we should take this approach more often rather than scolding users, developers, operations, etc.  Instead of scolding a developer for not using parameterized queries to prevent SQL injection the better approach is to educate them.  Sit down and fix a couple of the vulnerabilities together while teaching the developer how to use parameterized queries.  

Avoid confrontation whenever possible.  Getting into a debate about whether a piece of code is vulnerable is not effective.  Instead, emphasize that while there might be no clear way to exploit the vulnerability, the code does not meet secure coding standards and that is the ultimate goal.  If developers follow secure coding standards, then there will never be a debate about whether or not code is vulnerable.  My organization conducts annual security training which stresses secure coding standards and we also have a policy that codifies the use of secure coding standards.  Because the organization has bought into using secure coding standards it is easy to leverage this mandate while in discussions with developers.  

Keep your ears open and your mouth shut.  Sometimes the best communication is not to say anything at all and just listen.  Seek out those in more senior positions and observe how they communicate with people.  Pay attention to how they respond in tense situations when another person is losing their temper.  I can remember observing a mentor of mine when he was being confronted with people looking for a confrontation.  My mentor stayed calm and collected.  He stayed on topic and would continue to offer different solutions looking for a compromise.  The person who is losing their cool might have a point so pay attention to what they are saying.  This will help diffuse the situation.

As for those cool ideas you got from the conference you just attended, make sure to have a plan for implementation.  Don’t just go to the developers, hand them a spec and say they have 3 months to implement this.  Explain your vision and why this idea is critical to achieving the organization’s goals.  Come up with short term goals so you can get some quick wins and explain the long term goals of the project.  Most importantly, don’t let the developers think you’re not invested in this project as much as they are.  If the developers see you working hard towards the end goal they won’t have an issue working with you.    

No comments:

Post a Comment