Blog

  • Coworker Turkeys, Hams, and Undesirables

    Coworker Turkeys, Hams, and Undesirables

    It is the time of year where we eat a lot of turkey and ham as well as talking about being gracious to those around us.  Thus, it seems like a good time to look at ways to handle challenging coworkers.  I have worked with all types over the years and hope that the lessons I learned can help you in these situations.  Of course, these challenging coworkers are not all bad.  Many of them make coming to work entertaining.

    The Turkeys and Hams

    Let’s start with the easy ones first.  These are the employees that are competent and personable; they are just not average.  This different focus may be a love of things like gardening, fanaticism about anything (including and particularly sports teams), or annoyances like loud talkers or those that share too much.

    I personally find these co-workers to be a great reason to go to an office.  Yes, they may annoy you at times or even distract you from your work, but life is like that.  We watch TV shows like “The Office” that highlight these characters and help us forget about our worries.  Why not embrace these people as the spice of life that they are.  Just quietly excuse yourself when they are too “spicy” for you to be productive.  If that doesn’t work, look at your phone like it just vibrated and then mumble about a deadline or a meeting you need to attend.

    The key to dealing with these co-workers is to deal with them in moderation.  Try not to get locked in an elevator with them.  In that case, you are on your own.

    The Undesirables

    These are the coworkers that are more than an annoyance.  They are incompetent, offensive, or downright poisonous.  In any case, they are the ones you are sure you would be better without.  Although this is often the case, I do have to warn you about judging your coworker.  Sometimes there are non-work issues that have turned a reasonable person irrational, or politics at work that are the actual problem.  These situations can be a great opportunity as you might be the person that acts like the princess and the frog.  You don’t have to kiss the person, but maybe your personality or interaction is what turns that frog of a coworker into a prince, or at least a good coworker.

    Complications

    Oh, that life was as simple as I have made it out to be in the prior sections.  Unfortunately, it is not.  Sometimes we have employees or managers that are that annoying coworker, or maybe we get stuck on a team with them.  They might even be tied to us in a way that we fail or succeed based on their abilities.  You do have options in these cases as well.

    First, try to keep the interaction simple and focused on work.  It may be hard to ignore the things that make a coworker undesirable, but your job is not always fun either.  Productivity and success at work may be able to offset the negatives.

    Another approach is to be open and honest with the coworker.  Let them know what bothers you and maybe discuss how you can be bothered less.  When you assume the burden instead of putting it on them, you are more likely to get them to help you.  They might even stop the annoying behavior altogether.  For example, I know people that seem chronically rude that turned around almost overnight and have seen bad habits disappear quickly.  It just took someone telling the coworker what the problem was.

    A Perfect Job

    One last thought.  If you happen to work in a job that has none of these people there, then that makes you the one.  Do not be worried about this though.  As I noted earlier, the turkeys and hams of the world give us something to talk about at work.  They give us a reason to go to work, if for no other reason than to witness what that turkey does today.

  • Software Design – Measure Twice and Cut Once

    Software Design – Measure Twice and Cut Once

    It takes very little time in the software business to see that implementation is king.  Software design and similar pursuits that lack a deliverable outside of documentation are pushed aside far too often.  One may look at the poor success rate of software projects and draw a connection.  In this post, I plan on doing exactly that.

     

    Software is Complicated

    The first thing we must agree on is that software has gotten complicated.  There are all kinds of tools that help with coding and implementation.  However, these do not eliminate the challenge of building a useful and stable system.  The lines of code written by humans may be dropping, but the overall size of modern systems is growing all the time.  Thus, software design is needed to plug all of those pieces together and provide a path for the implementation team to build a cohesive system.  There are tens of thousands of “moving parts” in most modern systems and that means the same number of potential points of failure.

    The Vision Problem

    Code complexity is just the technical part of the problem.  The more significant reason for spending time on software design is due to vision.  A client, end-user, stakeholder, and developer all have their vision of a solution.  Some of the differences are due to gaps in knowledge.  For example, a subject matter expert has a deeper understanding of the problems to be solver than other team members.  This is not an issue unless we skip the step where that knowledge is transferred to others.
    A more substantial challenge is that we do not know what we do not.  Thus, there must be a conversation around software design.  The designers and implementation team needs to be on the same page as the end users and stakeholders.  When this does not happen, it is like giving someone directions to meet you, but they use a different (and incorrect) set of instructions.  When the destination or goal is not the same, then failure is almost guaranteed.

    An Old Problem

    The astounding aspect of this situation is that it is an old problem.  Even worse, it is one that has been solved.  The idea of measure twice and cut once goes back a long time.  However, that is precisely the purpose of software design.  In this case, the action is implementation instead of cutting, but it is nearly as final.  When you make the wrong cut on a piece of wood, you need to get new wood.  You can not “un-cut” the wood. Code is more forgiving; you can undo an action.  Unfortunately, we often realize that we need an “undo” far down the road from the mistake.  This leads to a lot of back-tracking, lost work, and potentially a duplication of effort or worse. A good design is likely to point out mistakes earlier when they are far less effort to correct.

    Not An Agile Problem

    I would be remiss if I ended this post without mentioning the Agile process.  The goal of Agile is to reduce overhead related to design and documentation, not eliminate it all together.  A proper Agile approach still includes planning; it just limits the scope to the upcoming implementation.  This can cause issues and turn up problems later than desired.  However, the trade-off is a more fluid approach to creating software and turning a presentation approach to something more like a conversation.  Agile assumes that we cannot correctly create a complete design from step one, but it does still embrace software design.
    Next time you are pressured to dive into implementation have confidence in pushing back.  When you fight for the value of good design, you improve the chances of project success.  After all, that is the ultimate goal of everyone on the team.
  • Security Suggestions and Keeping Safe From Hackers

    Security Suggestions and Keeping Safe From Hackers

    The news is filled with stories about hackers and data theft.  Although they are not to be ignored, hackers can be avoided or thwarted with some common sense.  Let’s look at a few of these common-sense steps and some additional ways you can protect your self and site.

    Secure Passwords

    This is a common warning.  Nevertheless, the vast majority of passwords are anything but secure.  Studies have found that there are a large number of “default” passwords used.  These include tough to guess ones like “password”, “123456”, and “qwerty.”

    This password laziness is being combatted by rules applied to a lot of sites.  This is where your password is required to include things like upper and lower case letters, a number, and maybe special characters.  This is a great way to define all of your passwords.  I find converting sentences to be great.  For example, you can start with, “My three kids are Billy, Sara, and Michael” becomes “m3kaBSaM.”  Note that I just took the first character of each word in the sentence and adjusted case while throwing in a number rather than word.

    Avoid Phishing Attacks

    These attacks are prevalent, but also easy to avoid.  They typically take the form of an “important” email from a co-worker or financial institution.  Some emails ask you to call a number and then that call will be a way for the scammer to get your information.  This is solved by not calling or at least not providing private information on a phone call to someone you are not sure of.  The other approach is to include an attached file that runs a program when opened.  Do not open attached files unless you are sure of the sender.  Even in those cases, make sure you have anti-virus software installed that will scan emails.

    These attacks are more effective than one would expect.  However, they prey on our lack of patience with email and our tendency to open and click on any attachment.  If you are more intentional in how you process your inbox you will see these attacks for what they are.

    Going Deeper

    When you have a website or application to secure it requires more than avoiding hackers.  In these instances, the hackers are likely to come to you.  Thus, steps need to be taken to secure or harden your server.

    The good news is that there are a number of step-by-step guides freely available on the Internet.  There are even some great security portals like the Open Software Security Community.  While most of these tutorials are well-intentioned, take a close look at the site before embracing any of the suggestions.  The best sources are from security companies and vendor sites.  When in doubt, do some checking to make sure the site is legitimate.

    There are some general steps that all of these sites will recommend.

    • Remove identification data to make it harder for hackers to learn about your system
    • Limit ways that the site or application can be accessed
    • Use strong passwords and accounts
    • Configure security measures like firewalls and anti-virus to the recommended settings
    • Keep all software up-to-date

    These steps alone can make your site less a target.  This is important as no site is 100% secure, there are always holes.  When you make yourself less a target either by being hard for hackers to find or difficult to attack then they often will move on to easier targets.  This is the old idea of not being able to outrun a bear, just being able to outrun the other people the bear is chasing.

    Be Safe

    As we said at the top, common sense is the best approach to Internet security.  Hackers are not near as scary when you take these steps to reduce your risk.  If we all follow the steps above we would make life a lot more difficult for the typical hacker.