Helping others, help themselves

I’m going to cover some management/leadership/mentoring items in today’s post. There are two statements that I have learned from two of my previous bosses that have continued to stick with me that I’m going to share today. One is “What does the book say?” and the other is “Don’t feed the ducks”.

“What does the book say?”
I really like this statement. As a leader it’s important to teach people how to do things for themselves as well as teaching them in a manner that helps them really learn a subject. The saying goes, “Give a man a fish and you feed him for a day. Teach a man to fish and you feed him for a lifetime.” I look at the “What does the book say?” statement as having the same meaning as teaching a man to fish. To help someone learn you need to guide them to the answers and not give them the answers. If you can teach or better yet lead someone to the answer rather then just giving them the answer you are making that person much stronger and more knowledgeable. It forces a person to put in the work to find the answer themselves. During the search for the answer, the person will be learning about the topic while trying to find the answer they seek. That information will stick with the person much longer than if the answer was just given to them. The person will also be gaining valuable self esteem because it is much more gratifying to say, I put in the work and came up with the answer myself versus, I was given that answer by so and so who knows much more than I do on this subject. Next time you are thinking about asking someone for an answer you are seeking I recommend thinking twice about doing that and instead doing the necessary work to try to come up with the answer yourself. If you put in the work but still can’t find the answer then seek out someone that can get you the answer you are looking for. When you do, you will be able to have a great discussion on where they got the answer, the places or methods you used to try to get the answer, why you failed, and you will also understand the answer because you have done the research to try to find the answer.

“Don’t feed the ducks”
“Don’t Feed The Ducks”, what the heck does that mean? Let me first start by giving you some background on how I was introduced to this phrase. When I was an IT Support Analyst, I was in the position of not only developing and creating products but I was also on a team that provided the last line of support for many intranet applications. During this time, I helped many people solve their problems and when you do that people inherently want to contact you the next time they have a problem that needs solving. As I helped more and more people I would get many people contacting me directly instead of going through the normal support procedures. I, being the nice guy that I am, continued to help the people that contacted me directly until it started to affect my daily job functions. My boss at the time got wind of all the direct contacts I was receiving and called me to her office. This is where I was first introduced to the phrase “Don’t Feed The Ducks”. The gist of the phrase is just what you would expect. If you have ever had the unfortunate chance to feed ducks then you will know exactly what this phrase means. For those of you that haven’t, it works like this; when you feed a duck it will follow the food. So if you continue to feed the duck it will continue to come back for more and more and more until the duck realizes you have no food left. While it feels good to help people out, the more you help them the more they will continue to come back to you for help and answers. If you continue to feed them the answers and help them do their work for them they will continue to come back to you. This will in turn cause you to not get your work done. A better way to handle a situation in which someone comes to you for help is to help that person help themselves by using the phrase I covered above “what does the book say”. Now, I don’t suggest you not help people rather help them find the answers they are looking for instead of giving them the answer. You might think that you have to answer or help everyone out every time they need you but it will really affect your ability to do your job and it certainly doesn’t help others learn anything.

Hopefully these two statements will help someone else out as much as they have helped me out over the years. After all, in order to create a better society it’s better to educate then to do everything yourself.

Posted in leadership, management Tagged with: , , ,

Logging with NLog and Papertrail with C#

In this post I’m going to spend some time discussing logging with NLog and Papertrail within C#. Logging is a must have item in any software program for a variety of reasons. Logging can help you determine when issues are occurring in real time and what is causing the issue. Logging is also useful for tracking user actions and for security auditing. This post isn’t about providing reasons for why you should be using logging, rather it is to provide some examples on ways to use logging with NLog and Papertrail.

If you aren’t familiar with Papertrail I highly recommended you check out their site. They have a free trial to get started so there’s no excuse not to try it. If you have a distributed system or utilize more than 1 server for your application then you will love Papertrail as it aggregates all your logs in one place and you can easily search through all the logs.

As great as Papertrail is, you probably don’t want to use it in development or staging. So what do you do when you are running your app in one of those environments? Your best bet is to log to text files when in development and staging and then update your app.config files to write messages to Papertrail when in production.

Here is a sample configuration when working in development and staging. You can read up on all the rules and configuration settings for NLog on their github page

Here is an example configuration in production:

Please note that your papertrail settings will be slightly different as you will need to replace the port number with the port number that papertrail provides you when you create your account. One thing you might be wondering is how to update your config files to change the configuration when moving from staging to production. There are many methods for modifying config files but in this case I’m going to show an example of using rake tasks to update the config file. Remember, the below are just examples and they are not meant to be used in your rake file, however you can feel free to use this logic as a starting point for your own rake tasks.

Hopefully the code above makes sense. As you probably noticed, the Nokogiri gem is being used. If you decide to copy the code above make sure you install the Nokogiri gem or the code will definitely not work. There is definitely some refactoring that can be done with the code above but for simplicity sake it made sense to just hard code some things within this example.

That’s it for this post. Hope it was helpful.

Posted in C#, Tools Tagged with: , ,

Technologies for Remote Workers

At my current company we all work remotely and are located all over the United States. We even had some employees located in Canada at one point. Being that we can’t all be together on a daily basis it became extremely important to find tools that we could utilize to do our jobs on a daily basis while still providing a water cooler type environment. Here is a list of tools and solutions we have found to work great for us and why they work great for remote workers.

First and foremost is Github. I shouldn’t need to explain why it’s important to use a tool like Github for developers. It really works great for us because we also have different codebases so using any other tool for managing our code was just inferior.

The next great tool we use is Trello. It’s super easy to use and it provides real time updates of the projects we are working on. Multiple people can work on the same task and collaborate within each card/task that is created within a board. The best part about it is that management can be apart of things and get automatic updates on the status of each card or just the ones they are interested in. This is super important because it helps others in the company know what you are doing on a daily basis and really showcases that status of a project. You can use Trello for anything as well, even for personal todo items like your significant others honey do list.

The best tool we use for creating that water cooler environment is Hipchat. We can keep in touch with everyone all day and it provides a quick means of communication to discuss topics, issues, etc… Hipchat is also free for up to 5 people so if you are a small team you can benefit from using Hipchat for free.

To go along with Hipchat we also use Google Hangouts which is another great way to keep in touch and not forget what your colleagues look like when you get together in person. Hangouts is a great tool for sharing multiple screens at the same time.

A newer tool we just found is called ScreenHero. ScreenHero is awesome and really provides a great experience for pair programming as you can take control of a persons screen and code up anything you want just like if you were sitting right next to the person sharing a keyboard only this is better because you don’t have to share keyboards! The only downside to ScreenHero as of right now is that you can only share one way so if you want to switch over to the other programmers computer you have to start a new ScreenHero session.

Another tool we rely on is Dropbox. We have a team account and this allows us to share large documents privately and securely with each other. It’s also great for backing up all your important business files which can be a godsend if your hard drive crashes.

That’s all for today. If you aren’t using or have been thinking about using one of these tools I would highly recommend you give them a try.

Posted in Remote Working, Tools Tagged with: , , , , ,