Friday, October 23, 2015

SharePoint Ports and Protocols

The following is my list of ports and protocols for SharePoint communications between servers based on my experience. Many are optional and rely on how your network is set up. The items can be configured with custom ports.

WFE = Web Front End
APP = App server
Search = Search server
UP = User Profile
AD DS = Active Directory Domain Service
BDC = Business Data Connectivity

Sorry for the image... it was difficult to fit the table on this page, so an image was the best choice I had to be compatible across devices.


Wednesday, October 14, 2015

Being a Woman in a Leadership Role

This article is part of a series. You can start at the beginning: Leading Development Teams on Large Projects.

Although this article is about being a woman in a leadership role, I firmly believe that these qualities are essential for any good leader and that you can remove gender from them. I just think there are certain areas that are stronger for a woman and stronger for a man. So the areas we are not as strong in, we just have to hone in on those and build up those skills and then eventually, we all end up on level ground.

There are three areas I want to talk about in this article:
1.       Communication
2.       Decision Making
3.       Be Yourself


I touched a little on this in the last article, Resolve Team Issues Quickly. A woman’s approach to leadership is slightly different than a man’s. I think most women are in touch with their feelings or at least try to be. We always want to talk things out. It’s in our nature and how we were raised. I think this quality helps in leadership because it helps to get everyone talking – communicating, which seems to be the number one issue that comes up as a problem in IT amongst employees. Don’t get me wrong, I think men are capable of this too, but I think if a man wants to be a good leader, he will probably need to work a little harder fostering good communication skills.

Decision Making

There’s this stereotype of women – we can’t make up our minds. We want the couch on the left, no, the right, maybe if we turn it sideways, no, turn it the other way. Oh, let’s just paint the room a whole different color and maybe that will make the couch work. Yeah, I admit. I’m guilty of that with one exception: I’m not like that at work. This is something I’ve had to work hard at. The ability to make decisions and stick with them is important when you’re in a leadership role. This very important skill can single-handedly diminish all your good intentions as a leader if not done well.

When it comes to making a decision, I first listen to all my teammate’s points of views and their supporting evidence as to why they think it is the best solution. We meet as a group and I listen to each of the suggestions individually and fully. The whole team hears the arguments. A lot of times the team has differing opinions. So it’s up to me to make the final decision. When I make my decision, I center on what is best for the company and our customers first. Then I consider how well will this idea work for long-term maintenance by other developers or architecture-wise as a system. My responsibility as a leader is to be thinking about the big picture. Then I make the decision based on that. I explain to my team why I’ve made that decision. I know that some people may say you don’t need to explain your decisions, but I’m a member of the same team. I feel it’s important to communicate the reasoning behind your decisions. This way, you get your team’s support and understanding, while at the same time you teach them how to make important business decisions if they ever get into a leadership position.
The hardest part is not to waver after the decision is made. To become uncertain in yourself, shows weakness in leadership and to a team that’s full of men, that can lead to a mutiny of sorts – a slow takeover by someone who is strong-minded, but ultimately not the leader. You are the leader for a reason, stand behind your decisions and trust in your ability. Actually, this is true for men too. If you reverse the situation, say instead you have a man leading a team of women. The result will be the same. The women will take the man down at any sign of weakness. The ultimate message is to believe in yourself and stand behind your decisions, no matter your gender.
What about wrong decisions? Sometimes that happens. It’s happened to me before. Your approach just didn’t work out. Admit to the team that the approach didn’t work based on factual reasons. Demonstrate where the decision went wrong. Then, have the answer to what has to happen next. How can we turn it around and make it work? Have the answer in hand already and you will still be considered a good leader. If you can’t think of the answer, consult with your teammates and brainstorm solutions. Then rinse, lather, and repeat the decision making process I outlined above. Remember through the process, it’s a learning opportunity, for you and the team, and you will all make better decisions in the future as a result.
I find that sometimes people new to my team will be doubtful of my abilities, but my ability to make good decisions and use facts to support them usually ends up in turning their opinions around. I’ve heard before that if you’re a man, you don’t have to prove yourself with facts, but I don’t find that to be true in my experience. I think all good leaders have supporting evidence and reasoning to back up their good decisions. If you want to get ahead genuinely, you have to know your stuff whether you’re a man or a woman.

Be Yourself

It sounds simple, but in actuality, we all tend to wear masks when we are at work, school, parties, etc. Think Carl Jung’s Persona mask here. “Because of his more or less complete identification with the attitude of the moment, he deceives others, and often himself, as to his real character. He puts on a mask, which he knows is in keeping with his conscious intentions, while it meets the requirements and fits the opinions of society, first one motive and then the other gaining the upper hand. “[1]

To be fully satisfied in your accomplishments as a leader, you have to do them as yourself with your own beliefs, conscience, and values. My personality is gentle. I am not a harsh, demanding person. I don’t draw hard lines. I am generally happy, kind, and I have a good sense of humor that I use to my advantage. I like to put my team at ease and build a friendly rapport amongst the team. When I work with other teams, I try to understand their point of view. They probably are just as busy as me with just as many obstacles. My approach is very different than a man’s approach to leadership, but it works for me and that is my point. I try to let myself shine through. Consequently, my gentle approach leads to a lot of support by my team members and other teams. They trust that I only have good intentions. I treat everyone as equals and they treat me as an equal too. I can be a woman with my woman ways (in other words, I don’t have to act like a man) and my peers respect me for who I am.

I used to work for a company that didn’t put women in leadership roles, and I truly felt jilted as I saw men promoted above me that weren’t as knowledgeable or didn’t work as hard. But then I realized the truth – I don’t owe that company for any of my accomplishments. I am in control in this situation. There are many other companies that promote a person for their abilities, whether that person is a man or a woman, and all that is left is to seek them out.
[1] The Basic Writings of C.G. Jung as translated by R.F.C. Hull. © 1990 by Princeton University Press.

Tuesday, October 13, 2015

Resolve Team Issues Quickly

This article is part of a series. You can start at the beginning: Leading Development Teams on Large Projects.

When your team is first coming together on a project, issues between team members may begin to surface. Not everyone codes the same or has the same values or thought processes. Sometimes things can get heated between team members.  As the Team Lead, you’ll want to nip these issues in the bud as quickly as possible because if you ignore them, they will fester and completely obliterate any good intentions the team has/had. How well your project turns out is a direct reflection on how well you built your team. You absolutely can’t build a successful project if your team can’t work well together.
If there are problems between team members, talk to them individually first and find out what the problems are. Usually when I do this, knowing both sides, I realize there is miscommunication going on. Maybe it’s because I’m a girl and I have an easier time communicating my feelings that I can discern this miscommunication. My next step is to bring everyone in the room together. First, I say what one person’s issue is, then I say what the other person’s issue is. Finally, I point out where the miscommunication I observed is. I do not beat around the bush at all. I think women have a tendency to try not to hurt anyone’s feelings, but men are not like this. They say straight up what’s going on, get it off their chest, then punch each other in the arm and go have a beer together. Well, maybe it’s not exactly like that, but my point is not to be too touchy feely here. Be direct, be honest. I like to ask the troubled parties what their ideas are to resolve the problem and if they have none, I come prepared with my own ideas and ask if those will suffice. Sometimes, they just need a few ideas to springboard their own resolutions.  
At many companies, contractors are hired to supplement teams on projects. I interview my contractors before bringing them on, because if the contractor is the bad apple, the whole team gets spoiled. I trust they have the skillset the vendor says and when I interview them I focus on their personality, sense of humor, and thought processes to ensure they will fit on my team. As soon as they become part of my team, they are “one of us” and it’s up to all of us to deliver a rock-solid project. If issues arise between a contractor and another team member, I follow the same process as above. I treat everyone as an equal team member.
So what about issues that can’t be resolved? Occasionally, there are just team members that don’t play well together. I have a three-strikes-and-you’re-out rule. I will try three times to resolve issues between team members. On the third time, I’ll explain that this is the last chance we have to resolve the conflict. I’ll explain directly and clearly what the consequences are if the issue cannot be resolved. For example, maybe a team member gets removed from a project or depending on the issue, written up. Or in the case of a contracted employee, he gets removed from the company and replaced with a different contractor. I make sure everyone knows exactly what will happen if this final try at resolution doesn’t work so that way it’s no surprise when the consequences come.
< Go back to Assign a "Number 1"

Monday, October 12, 2015

Assign a "Number 1"

This article is part of a series. You can start at the beginning: Leading Development Teams on Large Projects.

In Star Trek: The Next Generation, Captain Picard is head of the ship. He makes all the important decisions, but he can’t be on duty 24x7. That’s where Commander Riker, aka Number 1, comes into play. He is second in command. Both the Captain and crew equally respect and trust his ability to lead in the event Captain Picard is unable to. The same is true in development teams. I lead multiple projects simultaneously. I can’t always be available to all my teams. I do like to take vacations once in a while! For each project team, I assign a “Number 1” – a person the team can trust to lead when I’m not available. If the same team members are on numerous projects, I pick a different “Number 1” for each project. In this way, I can mentor my team members and help them grow their leadership qualities and empower them to move ahead in their career. I keep the person informed of everything I can so he can take over and make informed decisions when necessary. I don’t always tell the entire team everything that happens behind the scenes. There is often a lot of drama and politics that aren’t conducive to productivity so I usually keep that stuff to myself. However, I may share it with my “Number 1” so that if he gets the opportunity to lead in the future, he is not blind-sided by these unavoidable annoyances. I’ll also keep him informed of architectural decisions that may be beyond his skillset. This enables me to teach new skills to my team member and, again, help him grow.

I usually consult with the person before I announce his “Number 1” position to the team because not everyone wants to be in that position. If a person is resistant, I will point out specific qualities I think he has that will make their leadership experience successful. This shows him I know his abilities and that I have confidence in him. He, in turn, gains confidence in himself. If he still doesn’t want the position, I won’t pressure him, but I will approach him again on future projects.
I believe leading a project gives a person valuable insight to being a good team player and consequently builds stronger teams. It also helps to further the person’s career by growing skillset and challenging him to learn more which results in happiness, satisfaction, and a sense of purpose. The result for me as the Project Lead is that my team trusts my ability to make decisions and to support their needs as individuals. Plus, they become my champions to my boss which helps me to further my career at the same time. It’s a win-win situation. This is why I try to give everyone a chance to lead.

Sunday, October 11, 2015

15-Minute Daily Stand-Up Meeting

This article is part of a series. You can start at the beginning: Leading Development Teams on Large Projects.

At my company, we gravitate towards the waterfall development methodology though we do adopt some agile practices. For example, I hold daily stand-up meetings that last only 15 minutes. Sometimes I will hold these meetings over instant message if any team members are working from home, but I always have them. The daily meeting is the most important way to keep everyone informed, hold the team together, and keep progress moving forward. There are three questions I ask each team member at every meeting:

1.       What did you work on yesterday?
2.       What do you plan to work on today?
3.       Do you have any blocking items?

Asking these questions quickly tells me the status of the project, how far along we are. It also tells me if someone is not working on anything and can help another team member out or if I can assign that person a new task. Finally, it tells me if anyone is having problems meeting their goals. As the team lead, this is where I need to step in and find ways to clear any obstacles so the project can move ahead and with the daily meeting, I know the issues as soon as possible. Building trust with your team is largely based on how you perform at removing obstacles, so it is best to act quickly on these items.
Another benefit of this daily meeting is that I can keep the team informed of any important decisions, directions, or changes on the project. Sometimes during long-running projects, upper management or business owners forget what the original goals were, so part of my job as team lead involves continuously reminding management and business owner what the project goals are and the progress the team has made. Sometimes, that’s not enough though and the direction gets changed anyway. The daily meeting enables me to quickly communicate and negate any rumors the team might have heard.

Leading Development Teams on Large Projects

At my company, I am the Lead Software Engineer. In addition to leading my team as a whole, I also lead multiple smaller teams broken out by projects. The projects that we are working on right now are very large. One project is running into its second year. The challenge with running large projects is how to keep everyone on track while keeping them motivated to charge ahead. Through this series of articles, I’ll discuss three tools to help successfully lead a development team on large projects with the result that teams bond together and continue to deliver solid software:

2.       Assign a “Number 1”

Finally, I’ll talk a little about being a woman in aleadership role and the challenges it presents. Know, though, that these tips are for anyone, not just women. Good leadership goes beyond gender, but I do think it takes a little effort to help others believe that too sometimes.
I started writing this article with the intention of keeping it all together for one post, but quickly realized there was a lot to say. Therefore, I broke up this article into smaller bite-sized pieces and will release them over the next few days so that it’s easier to stay focused.
Start with the first article, the 15-Minute Daily Stand-UpMeeting.

Thursday, October 1, 2015

Button Won't Postback with IOS 9

I had a problem today where an application with an older code base, ASP.NET 2.0 had compatibility issues in Safari 9. The application was a login application and with the release of Apple's IOS9, the submit button wouldn't postback. Therefore, no users with Apple devices with the new IOS could login.

The key to getting the button to activate was adding a configuration setting to the web.config file to allow the Apple Web Kit version 601:

        <case match="AppleWebKit/601">
          EcmaScriptVersion = 1.5
          supportsCallback = true

After adding this setting, the button works on IOS9 with Safari 9 and users could login again. You can continue to add cases for additional web kits as needed.