Ardent Development Podcast http://ardentdev.com Tue, 12 Dec 2017 03:16:38 +0000 en-US hourly 1 https://wordpress.org/?v=4.9.1 https://i1.wp.com/ardentdev.com/wp-content/uploads/2017/11/cropped-siteiconf.png?fit=32%2C32 Ardent Development Podcast http://ardentdev.com 32 32 Derek Hatchard and Ron Smith talk with practitioners and thought leaders in the software development industry in search of inspiration and insights that apply across disciplines including programming, testing, product management, project management, people management, user experience, and security. Ardent Development Podcast clean episodic Ardent Development Podcast podcast@ardentdev.com podcast@ardentdev.com (Ardent Development Podcast) Inspiration and information for people who love creating software Ardent Development Podcast http://ardentdev.com/wp-content/uploads/powerpress/ardentdev-artwork-1400px.png http://ardentdev.com 139008458 #001 – Emotional Intelligence and Leadership with Mike Hayes http://ardentdev.com/001-emotional-intelligence-leadership-mike-hayes/ http://ardentdev.com/001-emotional-intelligence-leadership-mike-hayes/#respond Wed, 22 Nov 2017 23:03:21 +0000 http://ardentdev.com/?p=545 Mike Hayes is a certified coach, teacher, and speaker with the John Maxwell Team and the president of Changing Leaf, a leadership development company dedicated to developing better leaders. He’s also the co-author of Dreaming Big Being Bold 2: Inspiring Stories from Trailblazers, Visionaries and Change Makers. In this episode, Derek Hatchard and Ron Smith … Continue reading #001 – Emotional Intelligence and Leadership with Mike Hayes

The post #001 – Emotional Intelligence and Leadership with Mike Hayes appeared first on Ardent Development Podcast.

]]>
Mike Hayes is a certified coach, teacher, and speaker with the John Maxwell Team and the president of Changing Leaf, a leadership development company dedicated to developing better leaders. He’s also the co-author of Dreaming Big Being Bold 2: Inspiring Stories from Trailblazers, Visionaries and Change Makers.

In this episode, Derek Hatchard and Ron Smith chat with Mike about emotional intelligence, leadership, and ways to make positive changes in your career.

Mentioned in this episode:

Enjoy the show and be sure to follow Ardent Development on Twitter.

Transcript

Derek: Today on the Ardent Development Podcast, we are speaking with Mike Hayes. Mike is a certified coach, teacher, and speaker with the John Maxwell Team and the president of Changing Leaf, a leadership development company dedicated to developing better leaders. He’s also the co-author of volume 2 of the book Dreaming Big and Being Bold: Inspiring Stories from Trailblazers, Visionaries, and Change Makers. Recently, Ron sat down with Mike to interview him for his ManagingProjects.ca website and we thought that Mike would be an ideal first guest for the Ardent Development Podcast. And with that, I’ll turn it over to you, Ron.

Ron: Welcome, everybody. This is the first episode of the Ardent Development Podcast. We have Mike Hayes from Changing Leaf from Moncton, New Brunswick. So, welcome, Mike.

Mike Hayes: Thanks for having me. Good to hear you guys.

Ron: Good to hear you.

Derek: Welcome, Mike.

Mike Hayes: Thank you.

Ron: So, listen, we were chatting last week about this whole concept of you’re working with people who are going through a transition, coaching them, and they’re in a new role and we had talked a little bit about what you would say to them, how you would coach them, and after this conversation I started thinking well what about those people who are in a role and they’re just passed up for these opportunities.

Ron: They can’t figure out why. Can you unlock that mystery to some degree of, cause you see this. You see this with people that say why does Billy get this promotion. You know I’m working hard. In fact in some cases I may think I’m working harder. I don’t get it. Can you unlock that for us for a little bit.

Mike Hayes: Yeah it’s a fantastic question and it’s one that I think many people and different organizations are struggling with right. Like how do I know I make that leap from the position I currently have to go up to the next rung of a ladder.

Mike Hayes: And I guess I’ll just speak from my personal experience working in a larger organization for over 20 years. I was that person who was moving up in the organization and having the opportunity to contribute at higher levels. And I was doing that while my peers were observing this happening and I remember them asking me like how come you’re getting selected to go and be part of these initiatives.

Mike Hayes: And I’m like, well, one of the things that I’m doing is taking control of my own development. I’m not waiting for the organization to say well here’s how we plan to develop you and here’s a training session that you can attend. I didn’t wait for any of that. I started reading books on leadership I started attending conferences I started to watch TED talks and what I was learning I was sharing and bringing that into conversations with leaders and organizations and they could see that I was bringing more value to the conversation. And I think that was part of the reason why I was able to have the opportunities that I had is because it took control of my own my own development and I think…

Ron: You didn’t worry about you didn’t worry about you know who’s going to pay for my books. Who’s going to pay for my subscription to. You know you just did it.

Mike Hayes: Yeah. Yeah absolutely because I saw the value in it. I am also like a lifelong learner. I have a what I call an AOL which is an attitude of a learner. And when you have the attitude of a learner you can just gain so much knowledge from from everybody that’s around you. I think sometimes when people look at opportunities to learn they think well that only happens if I go to a classroom that only happens if I attend a webinar. And those are great great things to go to. By all means. But sometimes they’re not the most convenient for people and there’s learning opportunities in books and you can select mentors that are famous people and learn from them like John Maxwell and Patrick Lencioni and Liz Wiseman like these people are available for us to learn from. But the question becomes Will you invest in yourself and add more value to yourself so that you can add more value to the organizations and the people that you’re you’re working and leading in. And if the answer is yes then I think people are going to make that leap because they’re taking the initiative themselves.

Ron: So what I’m wondering is what stops people though from from doing that because there’s you know like when I was younger I think I had that view I had that I had I had the sense of I should go to my manager and I and you know I was interested in Oracle certification one time and I went to my manager and I said you know what I’ll do all this study I’ll do all I’m really interested in this field there’s a DBA who is willing to mentor me.

Ron: Would you pay for my books or would you pay for a test. When I go to write it and you know the manager said Write me a business case. Why that’s important. And I mean I thought oh my. And so that hit a bit of a brick wall or I felt that, I never wrote a business case. I just went and bought the book.

Ron: And you know I’ve never got certified in Oracle but it was it was early in my career and I think that was one of those moments when I said like you phrased it very well are you going to take control of your own destiny to some degree and not not let the answer be a no because your manager said Oh we don’t have budget for that this term.

Mike Hayes: You know what no stands for, eh, Ron? It’s an acronym N-O stands for next opportunity. OK. So when you get a No it just means OK well you know the next opportunity I’ve got to find another way around this. It is when people experience a barrier or an obstacle, you have a choice there you either accept it and stay where you are and do nothing or you find a way through it, over it, under it, around it. But if you really want what’s on the other side of that barrier you’re going to find a way.

Mike Hayes: I often tell people as well that you know if what you are facing and what you’re dealing with in your organization is not more complicated than space travel then there must be a solution there just has to be right because we’ve figured out how to do space travel. So if it’s not more complicated than that then we just need to find we know there’s a solution we just haven’t discovered it yet. But you asked the question like why what prevents people from making that leap. I think you asked that question. And you know one of the things I think is people make assumptions about their growth and one of the assumptions I think they make is that they assume that they’re automatically going to grow. Because I’m working in an organization, I’m gaining experience. I’m automatically going to experience growth as a result of that and sometimes that’s true.

Mike Hayes: If you have the right leader above you that is putting you in positions to work on projects where you can experience growth and use your strengths and in new ways. But if you don’t have that leadership above you that’s positioning you for growth, growth is not automatic. People don’t automatically get better.

Mike Hayes: They get better with great intentionality.

Ron: Sometimes they get stagnant. Like I talked to a recruiter friend of mine one time and so my background is I.T. so we were talking about computer languages and how much experience of this and that you have.

Ron: And they had made a comment to me Well if you’ve been working in the mainframe field for 20 years OK I’ll put four down I’ll put four down at four years experience and use a little bit tongue in cheek. Of course the people with 20 years experience of mainframe they should know it in and out.

Ron: But their point was that you know after that four year mark of working on a technology stack you’ve done most of your learning by then and then after that you’re just getting better at it. But your learning slows down you know. So do your growth opportunities and that kind of thing.

Ron: But I wonder, Mike, so break this out. So I started the session with saying how come Billy or Sally or Jane on my team seem to be recognized by my manager and what am I missing? You know speaking about…

Ron: So take the analogy or the example that I’m getting passed up. I’m still working hard. I’m solving just as many technical hurdles. What am I missing, as a developer? Talk to us about that a little bit.

Mike Hayes: Yeah. Well as a developer you’re you’re what I’m going to refer to as an individual contributor. And so in organizations we have all kinds of people who work on teams that don’t have people reporting to them but they’re doing a job they’re doing a function and they’re contributing individually at a high level. They’re they’re high performers and we can count on them to deliver quality work time in and time out. So these are these are great people and organizations need these strong individual contributors to get the work done. But when you when you’re making the leap to say a supervisor position or lead hand or a management position then you have people reporting to you the skill set is entirely different and simply because you’ve been a rock star as an individual contributor in your role for several years it doesn’t necessarily mean that you’re actually going to be able to inspire people and you’re going to be able to engage people and you’re going to be able to resolve conflict with people. The skill sets are entirely different. One of the skills that that I think people need as they are moving into that management role and they’re going to be dealing with you know the many different people many different personalities.

Mike Hayes: The school I would recommend people investigate and develop an emotional intelligence you know emotional intelligence is a set of emotional social skills that not only increase your awareness of who you are as a leader but it also increases your knowledge and ability to express yourself in productive ways that makes you a collaborative thinking partner with people and it gives you the ability to develop meaningful trusting relationships so that as you’re working with people you’re making decisions you trying to solve solve problems. You’re able to do that in a way that manages your stress manages the stress of the group and the team and you’re going to be able to achieve great work and get it get great results because of your ability to work with people. But in absence of that skill set of engaging people and building trusting relationships if you solely rely on your track record as an individual contributor you’re not going to make it you’re just you’re not going to do it.

Ron: So I can picture kind of a grid then. And I think I agree with what you’re saying so. So let’s take the scenario. I’m a manager and I’ve got a whole bunch of people that report to me they’re all technical They’re all part of a technical team and it’s pretty easy to measure throughput. It’s pretty easy to measure technical competency but so if you’re going to fill in the rest of the matrix though in in them determining who is it that as a manager I want to promote into a role of leadership.

Ron: I would look beyond that. In fact so much so I think that you know if you didn’t have some of these things on the EI spectrum, that you may you may be passed up.

Ron: Can you break out a couple of those that that that might relate to that in the example that I gave a developer who’s… they’re very very technical but then perhaps an example or talk about that a little bit to say OK I’ve got a manager that I don’t really feel like I’m connecting with yet I can sense that or that managers connecting with other people in the team more what are the steps if someone goes through to try in to try and bridge that gap. Because it’s not it’s not intuitive to a lot of the folks especially in my field.

Mike Hayes: Yeah it is a great question and one of the scenarios I’m thinking of and I’ve worked with a lot of clients who are in this position where on a Friday they were peers with their group. But then on Monday they step into their promotion for the first time and now they are managing the people that they had worked with. And you know it’s the dynamic shifts right. So it’s really funny because some of the some of the peers they worked with are really graceful about it and they they want to support that person in that role and maybe they have good relational history with with each other. So it makes the transition easier. There’s some people on the team that are peers that were going for the position as well and they’re kind of like you know it should be me that’s in that role so that’s a different dynamic to manage. But if we focus on the on the the individual contributor who’s now a manager on that Monday for the first time right. I think the secret to success is to come at that with some great humility. You know, your day one as a manager, you’re there to learn. You’re there to develop. You’re there to make things better for the people that you depend on to get the work done.

Ron: Somewhat of a somewhat of a servant’s heart for the for the team to try and help them with their job and to get things for the team when they need them as opposed to an elevated authority.

Mike Hayes: Yeah yeah. You what you’re not there to do is to bark orders and to tell people what to do. I mean you do need to give direction for sure you needed to set direction clearly and you need to ensure that you’re making assignments and delegating the work in a way that is utilizing people strengths and resources but you’re also there to encourage you’re there to provide coaching feedback. You’re there to listen and understand you’re there to connect with people. OK. And by connecting what I mean is that you’re there to build trust with them by following through on your commitments. You’re there to care for people you know to to care about the challenges that they’re experiencing and you’re also there to offer your help and assistance. I think one of the things that a person in a management or leadership role needs to do with this need ask themselves two questions. How can I help you? What are your priorities and how can I help you?

Mike Hayes: And if you did those two things on day one you walked in your position you said Help me understand where your priorities are and how can I help you. You would go a long way to connecting with people and getting things done through people.

Derek: Now one of the functions that I know I’ve seen a lot in developers promoted to manager is because they were so good at their last job they were a high performing IC, individual contributor, and they’re now a manager. And then when it starts going wrong or when there’s a tight deadline or you know production is down they are in there and they’re fixing it and they’re saying no one can do it as fast as I can. I can do it as well as me and they don’t coach and mentor their team and they don’t pay that, take that investment, don’t take time to invest in the people around them to make them all better and may end up burning themselves out. And then being a terrible manager. Their teams are miserable and their teams don’t know where they should go or what they’re supposed to do as they sort of pick up the easy work and then when the when the hard work comes around the boss takes it and then they feel demoralized.

Mike Hayes: Yeah without question. And if it perpetuates you create this dependent relationship and you’re absolutely right Derek. The rest of the workforce looks and goes well, I’m not going to I don’t have to do this hard task here because I know that you know my boss is just going to come along and take it away from me anyway so I just let them have it from the start. So that if you really want to create is an interdependent relationship where you know everybody that’s working on the work says I really need my manager for support. And then the manager is looking at the team saying I really need your team. I really need this team to perform because this team makes me a better leader and how we all work together is by me providing the space for you to to to make mistakes to not do it as well as I do the first time you know and that’s where that humility comes in again to be able to just be OK with it not being done the way that you’ve always done it and to give people that opportunity to learn and to do it their way up with their own style and approach to get to the result. But it takes time.

Derek: I think that I think that is such an important point. I have a friend who does he is a phenomenal manager and one of the things that he does is he finds the best people he puts into the into a role and he lets them do things their way. So he he still oversees of course but he does not expect his his team to do things exactly the way that he would do them and it makes him such an effective leader and it makes the people on this team feel so empowered. I mean I found it really inspiring to watch. I think that’s such an important point and I don’t know if that comes naturally to a lot of new managers.

Mike Hayes: I don’t think it does. I think the tendency is to say I think they feel the pressure to perform. And as a result of feeling that pressure to perform they they quickly slip into oh we got to be perfect. I’ve got to prove myself I’m in this new role so I gotta deliver results and if I don’t deliver results quickly and in an almost perfect way then I’m going to be you know I’m going to be in trouble here. So there’s a tension there of allowing people to do it their way while they’re learning and maybe sacrificing a little bit of time as they as they learn. And that tension between trying to build the trust and get things done. Yeah it’s it’s a it’s a little bit like a dance I guess you could say.

Derek: Mike, lot of the things that you’re talking about would really connect back to emotional intelligence. One of the things that’s what one of the one of the challenges in the software industry is that a lot of people are attracted to I’m going to sit at my computer and do my solitary task for hours on end. The computer doesn’t really require a lot of emotional intelligence in order for you to be successful.

Mike Hayes: Sure.

Derek: And then as soon as you start working with a bunch of humans it becomes critically important. And so it’s maybe not on the radar of a lot of individual contributors who are whether they’re developers or testers or in some cases even product managers because they know they have specific deliverables that they are creating as opposed to people that they are nurturing and growing. And I know that you do emotional intelligence coaching when you when you do that and you get people people who are you know stepping into or have just recently stepped in management type of roles. What are some of the big revelations that people see I’m really curious like what are the what are the lightbulb moments that really stand out to you when you deal with people.

Mike Hayes: Well I think there’s a couple of things with the emotional intelligence assessments I do one of them is like the first level of assessment is a self assessment. And it’s it’s that leader you know being honest with themselves and looking at who they are so that they can elevate their awareness on their strengths and their areas of development. So there is a self-assessment component but there’s also a 360 component to the assessments that I do where people can select multiple raters from the people that they work with their peers to their team to their manager above them, their friends and family as well. And that’s where we get some really interesting data because a person might rate themselves as being you know really really strong in empathy. And then you have this group of multi raters that will say you know what you’re not overly empathetic especially when I’m like are approaching a deadline or something like that right. So we see the gap we clearly see the gap in the results. And then I think that surprises people with that gap. But what’s really interesting Derek is what happens then is what does that person do with that information. And I can really tell quickly how the person is going to be successful or not based on their response or reaction to that. And the leaders who are secure in themselves and they’re humble with it and go wow you know I didn’t realize that’s how I was showing up in conversations with people at work. I didn’t realize that’s how I was showing up in my family.

Mike Hayes: I want to change this I want to do something about that. The people take that opportunity and humbly accept the challenge to grow are the ones who are going to be successful. The insecure leaders though they get defensive and they try to justify it. Like no way I’m not like this at all. You know what I mean they have these blindspots and I’m like oh boy you’re in for a long road, man.

Mike Hayes: You know the people are not making this stuff up.

Mike Hayes: That multi rater group that you selected, they didn’t all get together on a conference call or in a meeting and say we’re going to really sabotage this person. No this is how you’re showing up and this is how people perceive you. If you want to grow and you want to succeed you’ve got to pay attention to that feedback and do something with it.

Mike Hayes: Yeah. Absolutely.

Ron: I’ve got I’ve got a question for you here. There’s been a topic and I think this does relate to emotional intelligence.

Ron: Connect the dots for me if it does what I’m envisioning you know who should be put into a leadership role. This whole concept of staying calm comes into play for me. Is this like when when that the wheels are falling off on a project deadline something urgent is happening. This whole concept of staying calm so you see some managers that literally you know they they might think it’s their job to walk around and yell at people until the problem gets resolved. So there’s this term that I’ve come across a lot of clients will say this.

Ron: You know I want to see a sense of urgency but I think what gets mixed up at times is that gets translated to the team thinks that people should be panicking. They should be standing on a table yelling. And so I’ve seen this in lots of different occasions. But my sense is that you know you want people in those leadership roles that can stay calm they can do things quickly urgently. But this whole panic this whole panic and I often think, I see this in the development region a fair amount, is the people are just getting mad and they’re saying I can do this and shove aside. But I but I have a very difficult time saying that they are someone that’s actually going to get promoted into leadership and I wonder do you have any experience with that stuff or can you connect that with EI.

Mike Hayes: There’s definitely a concrete connection to EI for sure one of the components of the model deals completely with stress management. And there’s a component called stress tolerance. So it’s really the individual’s ability to perform in challenging circumstances in circumstances where there’s things that are unknown as well, too. So how does a person rise to the occasion and still get the work done in absence of critical information that’s needed or in a time sensitive situation right. How do they deal with those changing priorities. Because as projects are being managed and dealt with there’s changing priorities that take place and there’s deadlines to meet and there’s a lot of stress that comes with that. So when when a leader is practicing emotional intelligence and they have a high level of stress tolerance and have the ability to just be calm.

Mike Hayes: What that does for the team is that it sets the tone and the pace for the team to perform and they look to the leader and they go OK well my leaders not freaking out here. I shouldn’t be freaking out either.

Mike Hayes: They take their cues from the leader but I also think as well, too, think of a word like a hope as well, too. I think in times of and challenging times of stress and challenging times of uncertainty, people are looking to the leader for hope that we’re going to be OK for the future and that’s where this other component of the most intelligence comes in which is called optimism. That whole ability to remain hopeful and resilient despite setbacks some that we might be experiencing. And it’s it’s that whole ability to create this environment that you know it is challenging right now but we’re going to be OK. And I want to really make it clear for the listeners as well too that I’m not talking about like a Pollyanna kind of you know optimism that is just like we’re going to be really cheerful all the time. I think the really great leaders also will come alongside their their people and recognize the struggle they’ll acknowledge it and they’ll say…

Ron: It’s not false hope just to get someone feeling better about their day.

Mike Hayes: You’re absolutely right. And you can there’s a way to speak to people that you’re still calm but you acknowledge and recognize that there’s a struggle right now and you do it in an authentic way. But you also offer that hopeful message that this is how we’re going to get through this. And things are going to be better tomorrow right.

Ron: You’re reminding me. So this is an interesting conversation because you’re now bringing me to a point of I’m now picturing different managers that I’ve had and which ones I’m trying to relate what you’re saying with what qualities that these leaders had. And I tell you my favorite manager I’ve ever had a Newfoundlander. We had a guy from Newfoundland who I absolutely related to. And he would make me laugh almost every time I talked to him. And we I would say battled through some of the most difficult projects of my career. And you know what I’d sit down with him and we would put the facts on the table we develop a plan and we’d play the plan. And at one point I remember talking to him and he had said to me he said Ron this is this really hard stuff, eh, but it’s kind of fun in a weird sick twisted kind of way and he jokingly said that and you know there’s there’s this yeah.

Ron: You want to you want to go back into the ring you know with a comment like that. You don’t feel deflated at all. You know you feel like your manager’s got your back. They’re realizing what you’re doing is difficult but they’re somehow turning it into this challenging fun environment that you wouldn’t want to be anywhere else. It’s really quite neat but I’m only really resonating with you know my Newfoundland manager that I love to work with him again someday but those are the types of feelings that come out for me when I’m listening to you about this emotional intelligence connection for management and who might grow into those roles. That’s what I’m picturing.

Mike Hayes: Yeah. No exactly and I I can relate to what you just said too because I I’ve had managers and leaders I worked with in the past that I want to do my best work under their leadership because of the relationship that we had.

Mike Hayes: I had just such respect for who they were as a person not only like the work that they were doing but just who they were as a person their character and their integrity. I think it’s a wonderful thing when when we look at a leader and we believe in their capabilities. But it’s an entirely awesome thing when that leader turns around and says I really believe in you. I believe in the team and I think that’s what your your manager was doing for you. It’s like hey this is this is tough, Ron, but you know it’s kind of fun. And I believe in you I believe that we’re going to get through this because of your capabilities right.

Ron: Yeah I think so too because you’re not always sure when you’re in those situations you’re not always sure what’s on your manager’s mind. And when you when you can have this open door policy that you can come in and talk and you’re going to leave with perhaps more tools to do your job or they may help you with it. And you know there’s a spring in your step and you want to get back into the fight. You just appreciate that so much because the other extreme is those managers don’t offer those things and they just say I’m tired of your complaining. Everybody knows it’s a hard thing. Get back to work and get X done. You said you’d get X done where’s X. And there’s this real, there’s a chasm in between these two examples of management.

Mike Hayes: Yeah there’s one is highly empathetic and one is totally absent of empathy whatsoever. Right.

Mike Hayes: And some of the best managers that I’ve worked with have the ability to tell a story about how they were in a similar situation in their career. And when a manager can just relate to the struggle through sharing of their own experience it just releases the tension and elevates the trust right because now you have an employee that is saying OK, well, you’ve been there too. OK so what did you do, and there’s a real exchange of value in learning that takes place sometimes when somebody is managing for the first time like they’re just there in that role they think they gotta try to prove themselves. They think they have to be perfect. So it puts them in a position to not talk about their past failure puts them in a position to not admit when they’ve made a mistake. Now what they fail to realize is that if they would just be a little bit vulnerable and let people in, it’s actually a credibility builder for them because nobody is perfect and your team is not expecting you as a manager leading a team to be perfect they’re expecting you to be human and being human means that we come with flaws. We come with a history of mistakes and failures that’s how we’ve learned that’s how we’ve grown and gotten to the place that we are in organizations is through learning from our failures as we experience success and when we can share some of those past experiences it pours into people and it equips them to get back into it and to get the work done again right. Real people.

Ron: You know I think I could talk to you all afternoon on this topic, Mike. So here’s one thing though that I’d like to leave but I’d like to leave listeners with what is one tangible real world thing that someone can do to say I want to somehow connect with my teammates. I want to connect with my managers not in a manipulative I want a promotion kind of way but in a perhaps I need to be connecting more than I am today. Like what. What would be what would be one thing you can leave them with that says you can try this.

Ron: Not that hard. You just have to be intentional about trying it.

Mike Hayes: Yeah. What I would say to that is do whatever you can to elevate your awareness on a skill or behavior that you need to grow in that is going to make all the difference in the world for you making that next leap. So maybe it’s communication or maybe it’s how to solve problems whatever it is identify what that thing is and then go to work on learning all about that behavior practicing and applying that behavior and take it to the next step by letting people know what you’re working on. Being vulnerable and being truthful and honest and say hey you know what, I know I need to work on my listening skills so I’m doing that and ask people for feedback at the end of conversations saying you know what I’m working on my listening skills, I just like to know based on a conversation we’ve had on a scale of one to 10, 10 being the highest, how would you rate my listening skills today what can I do to improve. What do you need more of from me as your leader and what do you need less of from me and just be open to feedback on that very skilled behavior that you’re trying to develop and improve. That’s what I would say.

Ron: I love it. So, it’s putting yourself, at least giving some thought to a self-assessment, because some people might approach this as let’s change the world, right? The world’s broken, that’s why I’ve never been promoted. It’s just broken.

Mike Hayes: The victim mindset. Everybody else is the problem. And you know what? The truth of the matter is that most people want to grow, most people want to go to that next level, right? They have these uphill hopes. But the problem is that everything worth having is uphill all the way. It takes effort, it takes work. And we all have uphill hopes, but a lot of people have downhill habits.

Ron: Oh, another one. Another one. So you’re leaving us with AOL, the NO, the EI, and the uphill habits, oh man.

Mike Hayes: It’s too much to take, eh? It’s too much.

Ron: Love, love the acronyms. I love it.

Derek: I need a little book of Mike-isms.

Mike Hayes: Yeah, I should try to write these down.

Derek: Alright, Mike, we’re coming to the end of our time today. Before we let you go, I know that you have some consulting services, you’ve written a book, can you just tell us where people can find you online?

Mike Hayes: Yeah, absolutely, they can go to ChangingLeaf.ca, that’s my website. I’m also on Facebook, so you can go Changing Leaf, you can search that on Facebook and find all my contact information there. I’m also on LinkedIn so you can find me there as well. Yeah, I’d love for people to connect and if there’s a leadership development need that they have either through workshops or coaching or keynote talk, I’d certainly love to engage and see how I can add value to what people are up to.

Derek: Alright, great, so that’s Mike Hayes, ChangingLeaf.ca. Thank you, Mike, for you time today, this was absolutely fantastic.

Mike Hayes: Awesome, thanks for having me, it was a real pleasure, guys.

Ron: I love it, thanks, Mike.

Mike Hayes: Thanks, take care.

The post #001 – Emotional Intelligence and Leadership with Mike Hayes appeared first on Ardent Development Podcast.

]]>
http://ardentdev.com/001-emotional-intelligence-leadership-mike-hayes/feed/ 0 Mike Hayes is a certified coach, teacher, and speaker with the John Maxwell Team and the president of Changing Leaf, a leadership development company dedicated to developing better leaders. He’s also the co-author of Dreaming Big Being Bold 2: Inspirin... Mike Hayes is a certified coach, teacher, and speaker with the John Maxwell Team and the president of Changing Leaf, a leadership development company dedicated to developing better leaders. He’s also the co-author of Dreaming Big Being Bold 2: Inspiring Stories from Trailblazers, Visionaries and Change Makers. In this episode, Derek Hatchard and Ron Smith … Continue reading #001 – Emotional Intelligence and Leadership with Mike Hayes Ardent Development Podcast clean 32:09 545
Yuck, I Got Data on my Hands http://ardentdev.com/yuck-i-got-data-on-my-hands/ Wed, 24 Feb 2010 12:45:00 +0000 http://ardentdev.com/yuck-i-got-data-on-my-hands/ Once upon a time I wrote a computer program that did not require data.  It was called helloworld.exe and it was awesome.  It was also a wee bit useless.  The essence of useful software is taking input, doing something with it, and spitting something out. There is lots of data out there.  My first professional … Continue reading Yuck, I Got Data on my Hands

The post Yuck, I Got Data on my Hands appeared first on Ardent Development Podcast.

]]>
Once upon a time I wrote a computer program that did not require data.  It was called helloworld.exe and it was awesome.  It was also a wee bit useless.  The essence of useful software is taking input, doing something with it, and spitting something out.

There is lots of data out there.  My first professional gig after university was consuming text files dumped out by a COBOL app.  (They were delicious.)  You can parse XML, munge HTML, manipulate images, or decipher networking protocols.  But despite the variety of possible data sources, we end up sticking a lot of our data in relational database systems.

And then we write a lot of code for moving data in and out of the database.  And then we complain about how much data access code we have to write and maintain.  In Survival Skills for Developers, the first item for your basic survival pack is a data access toolkit (homegrown or open source or commercial).  The reason is not to be trendy or to sound up-to-date at developer conferences.  The point is to make better use of your time by relying on frameworks and libraries to do some of the heavy lifting for you.

Do Not Be Afraid

In the .NET programming world, ADO.NET is the underlying data access technology.  Many data access patterns and frameworks have been built on top of ADO.NET and yet scores of developers still write ADO.NET data access code the way they learned nearly a decade ago.  What a waste.

There is no reason to be afraid of modern data access techniques.  You do not have to rewrite your existing codebase.  .NET programmers can still use classic ADO.NET when it’s expedient.  You can mix and match tools and frameworks.  I have a small project that I’m transitioning from SubSonic (used during prototyping) to NHibernate.  Currently the code features a mix of SubSonic and NHibernate as I transition and it works just fine.

Frankly I think developers who refuse to explore alternatives are being irresponsible.  I’m not holding up any specific frameworks, toolkits, or approaches as best.  I’m simply saying that a failure to be well informed about options is intellectual laziness and we cheat our employers, clients, and stakeholders when we insist on writing everything by hand every time we need a record from the database.  We would question the judgment of a house builder relying on all manual tools, yet we mindlessly churn out the same data access code over and over and over again.

Stop Freaking Out About Inconsequential Performance

A mental roadblock for many folks is a worry about performance going down the toilet by relying on something like an ORM (object-relational mapping) tool.  If there is one serious mental shortcoming amongst programmers, it is our obsessive need to prematurely optimize everything even when there are ample computing resources to deal with our less-than-completely-efficient code.

Stop freaking out.

The JVM and the .NET runtime have proven that letting the computer handle some tedious work is totally worth it even if it’s less efficient than what you could (theoretically) write by hand.

CPU time is cheap.  Programmer time ain’t.  Spend time optimizing code only when it becomes necessary.

Do You Really Need a Database?

Simple lists of objects can be similar to tables of records.  The relationships between objects can be similar to the relationships between tables.  Nevertheless, there is a mismatch between object oriented programming and relational data (perhaps you’ve heard of the object-relational impedance mismatch).  Depending on your situation, you might not really need a relational database.  Check out some of the technologies in the NoSQL side of the world for alternatives to relational database storage engines.

What’s Available?

There are a lot of options out there for working with relational data.  Check out Barry Gervin’s article All I Wanted was My Data for some options.

What are your suggestions?  Drop them in the comment box.

The post Yuck, I Got Data on my Hands appeared first on Ardent Development Podcast.

]]>
204
Survival Skills for Developers http://ardentdev.com/survival-skills-for-developers/ http://ardentdev.com/survival-skills-for-developers/#comments Wed, 10 Feb 2010 12:15:00 +0000 http://ardentdev.com/survival-skills-for-developers/ Let’s suspend reality for a moment and pretend you’re heading out into the woods this weekend. Set aside the fact that you are a software developer and have no business tromping around out in the wilderness.  You’re going to want to take along a few basics:  maybe some matches, a tent or shelter of some … Continue reading Survival Skills for Developers

The post Survival Skills for Developers appeared first on Ardent Development Podcast.

]]>
3822866409_c113336eb3_m Let’s suspend reality for a moment and pretend you’re heading out into the woods this weekend. Set aside the fact that you are a software developer and have no business tromping around out in the wilderness.  You’re going to want to take along a few basics:  maybe some matches, a tent or shelter of some sort, a bit of food, and some dry clothes.  To survive you need the right tools / supplies and the skills to use them.

(I bet you see where I’m going with this.)

Back at the office, where your mouse and keyboard fret over your safe return, there awaits an entirely different survival scenario:

Survivor: Cubicle.  Outcode.  Outbuild.  Outlast.

Surviving as a software developer is more than stringing together some lines of code that read and write from a database.  Sure, those are basic skills.  To survive in the woods you obviously need to walk and breathe, but you also need to start a fire and build a shelter.

The following 8 items form a basic survival pack that can get you through most modern software development forests:

1. Data access toolkit (homegrown or open source or commercial)

If reading and writing from a database is a basic skill like walking, then a good data access framework is your walking stick.  I’m a .NET guy so I’ve worked with NHibernate, SubSonic, Entity Framework, and a couple homegrown solutions.  An ORM tool is not necessary.  Use the core ADO.NET classes directly if that works for you.  What you absolutely should avoid is writing all your data access code from scratch every time you need to work with data.

Personally I recommend you learn the basics of several modern data access toolkits and learn about some of the code generation solutions available on the market so you can make informed choices in your projects.

2. Regex

OK, let’s crank the controversy meter up one notch.  Regular expressions are like waterproof matches.  Sure you don’t need them, but they can make things a heck of a lot easier in some circumstances.  When it comes to text processing, there are lots of approaches that can work, but a regular expression can turn an arduous coding exercise into a single line of code.

If you use Visual Studio, I highly recommend you explore the regular expression syntax available for the Find dialog box.  It is amazingly useful once you learn the wonky syntax.

3. Unit testing

Let’s try one more notch higher on the controversy meter.  You must be able to write and execute unit tests for the language and platform you are developing on.  Unit testing is like a compass.  You don’t always need it and you won’t need it constantly, but it can be priceless in many situations.

Unit testing has its fair share of zealous proponents and vehement haters.  I like to think I have a nice moderate middle-of-the-road perspective.  Unit testing is incredibly important in some circumstances.  I am not an adherent to the Church of Test Driven Development.  I do not usually attempt to achieve complete code coverage in unit tests.  But without the ability to write and execute unit tests, you risk wasting precious time walking in circles as you test the same things over and over again manually.

4. Basic printing, reporting, and charting

Not every system has to print or produce charts and reports, but lots do.  Even web site developers have to consider how their pages will look when printed and perhaps generate PDF documents for printing.  Regardless of whether you write desktop apps, web apps, or middleware, you should be able to print and generate some basic reports.

If you are a .NET developer like me, check out some of the vendor solutions like Telerik Reporting, ActiveReports, LogiReport, and XtraReports.

Printing, reporting, and charting are about user needs.  Users need to print invoices and put charts of projected vs. actuals into the shareholder report.  Sometimes you need paper to get your business done.

5. Internet: sending email and downloading HTTP content

Back in the last century, we invented this thing called the Internet.  It’s nice.  It lets software programs on different systems communicate with each other.  And the Internet has this way of creating new opportunities so you never know when your software will have to become Internet-aware.

Sending email and accessing HTTP content are pretty easy tasks to accomplish in most languages given the plethora of libraries available (e.g., classes built into the .NET framework).  And even if your current coding project does not require Internet access, you might see new opportunities once you’ve learned how easy it is.  For example, you might decide to automatically email crash reports to your help desk.

If you pass other hikers in the woods, you might not need to talk to them, but then again, maybe you will.  Better to be prepared.

6. HTML and basic CSS

Regardless of the type of software you build, I firmly believe you should know a little bit about HTML, XHTML, and CSS (and some XML would be good, too).  If you don’t build web applications, you don’t need to master these technologies, but a grasp on the basics will come in handy.  Examples:

  • creating HTML formatted emails to send to users
  • updating a development team web site
  • customizing a product wiki
  • writing end user documentation
  • updating the company web site (happens in small companies)
  • setting up a blog for the marketing department

(X)HTML + CSS is the lingua franca of the web so just learn it already – no fancy survival metaphor required.

7. Scripting or command line development

Many software components need to work with standard input / output streams or simply do not require a graphical user interface.  If you only know how to build Windows or web applications, you are severely limiting your ability to efficiently handle the many small tasks that often accompanying development work like parsing a file or deploying software updates.

If you work in Windows, learn to use the command line along with some basic VBScript and batch (.bat) file "programming."

If you work in a Linux / UNIX environment, you probably already know the things you need to learn.  In case you don’t, I suggest digging into some shell scripting, sed, awk, and grep after you’ve mastered the command line fundamentals.

If you work in an OS X environment, you just need Photoshop.  No, I’m kidding.  Learn the UNIX utilities.

Decent command line and scripting skills are your ferrocerium – more hardcore than a match and much more durable.

8. Services, daemons, and cron

Sometimes software just needs to run on its own.  If you’re a Windows developer, learn how to build a Windows Service and how to run programs with the Task Scheduler.  If you’re in a Linux or UNIX environment, learn how to write a daemon and schedule cron jobs.  Even if you don’t specifically need a Windows Service or a daemon process in the foreseeable future, understanding the concepts will make you a better programmer.  Unlike desktop apps that can be easily restarted or web apps in which code executes in short bursts, daemons and services are long-running processes that require careful creation.

Thinking about responsible resource management in a long-running process will make you a better programmer, just like building a campfire in the wilderness from collected wood will make you that much better at building your next campground sing-along-and-make-some-s’mores campfire.

Mmmm…  s’mores…

Let the Comments Flow

Agree?  Disagree?  Think I missed something?  Leave a comment and let’s discuss.

 

(photo credits: Alaskan Dude)

The post Survival Skills for Developers appeared first on Ardent Development Podcast.

]]>
http://ardentdev.com/survival-skills-for-developers/feed/ 6 200
No Facebook Connect Cookies for Localhost Development http://ardentdev.com/no-facebook-connect-cookies-for-localhost-development/ http://ardentdev.com/no-facebook-connect-cookies-for-localhost-development/#comments Wed, 20 Jan 2010 21:16:44 +0000 http://ardentdev.com/no-facebook-connect-cookies-for-localhost-development/ While doing some Facebook Connect development, I found that the expected cookies were not being set when developing on localhost.  To fix the problem, I added localhost.local to my hosts file (pointing at 127.0.0.1) and changed the settings for my Facebook application to use localhost.local as the base domain.

The post No Facebook Connect Cookies for Localhost Development appeared first on Ardent Development Podcast.

]]>
While doing some Facebook Connect development, I found that the expected cookies were not being set when developing on localhost.  To fix the problem, I added localhost.local to my hosts file (pointing at 127.0.0.1) and changed the settings for my Facebook application to use localhost.local as the base domain.

The post No Facebook Connect Cookies for Localhost Development appeared first on Ardent Development Podcast.

]]>
http://ardentdev.com/no-facebook-connect-cookies-for-localhost-development/feed/ 17 189
Visual Studio 2008 Hangs When Debugging ASP.NET App http://ardentdev.com/visual-studio-2008-hangs-when-debugging-asp-net-app/ http://ardentdev.com/visual-studio-2008-hangs-when-debugging-asp-net-app/#comments Mon, 11 Jan 2010 20:12:41 +0000 http://ardentdev.com/visual-studio-2008-hangs-when-debugging-asp-net-app/ I’ve been doing some work with ASP.NET MVC but was having periodic issues with Visual Studio 2008 hanging (freezing / becoming unresponsive) when I tried to run my web application with debugging.  The problem only occurred with a specific web project. I tried deleting the Temporary ASP.NET Files (%userprofile%\AppData\Local\Temp\Temporary ASP.NET Files) but that did not … Continue reading Visual Studio 2008 Hangs When Debugging ASP.NET App

The post Visual Studio 2008 Hangs When Debugging ASP.NET App appeared first on Ardent Development Podcast.

]]>
I’ve been doing some work with ASP.NET MVC but was having periodic issues with Visual Studio 2008 hanging (freezing / becoming unresponsive) when I tried to run my web application with debugging.  The problem only occurred with a specific web project.

I tried deleting the Temporary ASP.NET Files (%userprofile%\AppData\Local\Temp\Temporary ASP.NET Files) but that did not solve the problem.

I tried deleting the obj folder.  No luck.

I tried waiting it out one evening.  I eventually feel asleep and when I awoke sometime in the middle of the night, my web app was happily waiting for input and Visual Studio debugging was completely responsive.  That proved to be a temporary salve.

showallfiles The problem resurfaced again a few days later and I finally figured out the problem with my uncooperative debugger.  I have a folder containing approximately 20,000 images that are not included in the Visual Studio web project but are sitting in a directory in the web site.  I had turned on "Show All Files" in Solution Explorer to add some script files into the project.  When "Show All Files" is off, F5 (Start Debugging) works like  champ.  When "Show All Files" is on, Visual Studio becomes unresponsive.  In reality it is not "frozen" but simply taking a very long time to process those 20,000 image files.

Mystery solved.

The post Visual Studio 2008 Hangs When Debugging ASP.NET App appeared first on Ardent Development Podcast.

]]>
http://ardentdev.com/visual-studio-2008-hangs-when-debugging-asp-net-app/feed/ 11 188
Forms Not Submitting With Watir? http://ardentdev.com/forms-not-submitting-with-watir/ http://ardentdev.com/forms-not-submitting-with-watir/#comments Tue, 29 Sep 2009 13:44:00 +0000 http://ardentdev.com/forms-not-submitting-with-watir/ Watir, pronounced water, is an open-source (BSD) library for automating web browsers. It allows you to write tests that are easy to read and maintain. It is simple and flexible. Watir drives browsers the same way people do. It clicks links, fills in forms, presses buttons. Watir also checks results, such as whether expected text … Continue reading Forms Not Submitting With Watir?

The post Forms Not Submitting With Watir? appeared first on Ardent Development Podcast.

]]>

Watir, pronounced water, is an open-source (BSD) library for automating web browsers. It allows you to write tests that are easy to read and maintain. It is simple and flexible.

Watir drives browsers the same way people do. It clicks links, fills in forms, presses buttons. Watir also checks results, such as whether expected text appears on the page.

http://watir.com/

A great use for Watir is to automate tedious form filling during development / developer testing.  Let’s say you have a simple form like the following to submit a search query to Google:

<html>
<body>
<form id="search_form" action="http://google.com/search">
  <input name="q" value="derekhat" />
  <input type="submit" name="submit" />
</form>
</body>
</html>

The Ruby code to submit a form is pretty simply:

Browser.goto "file:///C:/Users/derek/Desktop/submit.html";
Browser.form(:id, "search_form").submit;

The only problem is that this won’t work in this case.  The reason:  there’s an input field called submit that hides the form’s submit method.  The workaround is easy:

Browser.goto "file:///C:/Users/derek/Desktop/submit.html";
Browser.button(:name, "submit").click;

Happy testing!

The post Forms Not Submitting With Watir? appeared first on Ardent Development Podcast.

]]>
http://ardentdev.com/forms-not-submitting-with-watir/feed/ 1 176
Fix for WordPress XMLRPC 500 Internal Server Error http://ardentdev.com/fix-for-wordpress-xmlrpc-500-internal-server-error/ http://ardentdev.com/fix-for-wordpress-xmlrpc-500-internal-server-error/#comments Wed, 15 Jul 2009 19:13:12 +0000 http://ardentdev.com/fix-for-wordpress-xmlrpc-500-internal-server-error/ One of my WordPress-based sites (http://crowdspace.net) was not working when I tried to publish posts containing images from Windows Live Writer.  I was getting a 500 Internal Server Error. I was able to fix the problem by making a small change to the database. The Error Message I enabled Failed Request Tracing in IIS7 to … Continue reading Fix for WordPress XMLRPC 500 Internal Server Error

The post Fix for WordPress XMLRPC 500 Internal Server Error appeared first on Ardent Development Podcast.

]]>

One of my WordPress-based sites (http://crowdspace.net) was not working when I tried to publish posts containing images from Windows Live Writer.  I was getting a 500 Internal Server Error.

I was able to fix the problem by making a small change to the database.

The Error Message

I enabled Failed Request Tracing in IIS7 to find out what was happening server-side to cause the HTTP 500 error.  I discovered that the PHP script was trying to insert a row into the wp_posts table with a value of -1 in the post_parent column:

WordPress database error Out of range value for column ‘post_parent’ at row 1 for query INSERT INTO `wp_posts` (`post_author`,`post_date`,`post_date_gmt`, `post_content`, `post_content_filtered`, `post_title`, `post_excerpt`, `post_status`, `post_type`, `comment_status`,`ping_status`, `post_password`, `post_name`, `to_ping`, `pinged`, `post_modified`, `post_modified_gmt`, `post_parent`,`menu_order`,`post_mime_type`,`guid`) VALUES (‘1′,’2009-07-15 14:37:14′,’2009-07-15 17:37:14′,”,”,’2827426439_7b744abd30_m.jpg’, ”, ‘inherit’, ‘attachment’,’open’,’open’, ”, ‘2827426439_7b744abd30_m-jpg’,”,”,’2009-07-15 14:37:14′,’2009-07-15 17:37:14′,’-1′, ‘0’, ‘image/jpeg’, ‘http://crowdspace.net/files/2827426439_7b744abd30_m5.jpg’) made by wp_xmlrpc_server->wp_xmlrpc_server, IXR_Server->IXR_Server, IXR_Server->serve, IXR_Server->call, wp_xmlrpc_server->mw_newMediaObject, wp_insert_attachment
ErrorCode 5
ErrorCode
 

Apparently the database didn’t like that…  I investigated further and discovered that the post_parent column in my database was set to BIGINT UNSIGNED.  In other words, that database column could not hold the value -1 (unsigned integers are zero or higher).

Some Sanity Checking

I checked several other WordPress databases that I control and found that post_parent column is not UNSIGNED in any of my other WP databases.

So why the difference?  All my other databases were created with earlier versions of WordPress and upgraded.  The database in question, however, had been created with the latest WordPress release (2.8 at the time).  So I popped open the PHP file that defines the database (schema.php) and discovered:

post_parent bigint(20) unsigned NOT NULL default ‘0’,

What’s Going On Here?

When the XMLRPC script uploads an image (called an attachment in WordPress), it uploads it with a post_parent of -1.  Then after the post is created, the script updates attachments with post_parent=-1 with the actual ID of the freshly created post.

My guess is that a developer on the project decided to update the schema to UNSIGNED because posts do not have negative values for IDs and the post_parent column references a post ID.  Obviously that developer did not realize the special use case in xmlrpc.php.

How Do I Fix This?

Fortunately the workaround is easy.  Just run the following database query to change the data type on the post_parent column:

ALTER TABLE wp_posts CHANGE post_parent post_parent BIGINT;

If you don’t know how to run queries against your MySQL database, well, this is a good time to learn.  I did it at the command line on my 64-bit Windows server:

cd "C:\Program Files (x86)\MySQL\MySQL Server 5.1\bin\"

mysql.exe –u root -p
Enter password: ***********************

Welcome to the MySQL monitor.  Commands end with ; or \g.

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.

mysql> use crowdspace
Database changed
mysql> ALTER TABLE wp_posts CHANGE post_parent post_parent BIGINT;

The process is similar on a Linux box.  I’m going to go out on a limb here and assume that you can figure out how to run mysql on Linux if you’re running your own Linux server.

If you’re using a shared web hosting service, you should be able to use a web interface such as phpMyAdmin to run this command.

That’s all it took to fix the problem for me.  Happy blogging!

The post Fix for WordPress XMLRPC 500 Internal Server Error appeared first on Ardent Development Podcast.

]]>
http://ardentdev.com/fix-for-wordpress-xmlrpc-500-internal-server-error/feed/ 21 174
New Developer Comic – Enjoy http://ardentdev.com/new-developer-comic-enjoy/ Wed, 22 Apr 2009 14:13:11 +0000 http://www.ardentdev.com/blog/index.php/2009/04/22/new-developer-comic-enjoy/ Here’s the first in the series of comics about developers coming from Microsoft:

The post New Developer Comic – Enjoy appeared first on Ardent Development Podcast.

]]>
Here’s the first in the series of comics about developers coming from Microsoft:

The post New Developer Comic – Enjoy appeared first on Ardent Development Podcast.

]]>
168
The Art and War of Estimating and Scheduling Software http://ardentdev.com/the-art-and-war-of-estimating-and-scheduling-software/ http://ardentdev.com/the-art-and-war-of-estimating-and-scheduling-software/#comments Wed, 29 Aug 2007 14:18:44 +0000 http://www.ardentdev.com/blog/index.php/2007/08/29/the-art-and-war-of-estimating-and-scheduling-software/ In my experience, the majority of estimates and schedules for software development projects are derived from hunches, guesswork, and gut instincts.  We say things like “that should take about 4 hours of work” without backing it up with data.  And we set timelines based on those estimates without adjusting for past accuracy in estimating.  And … Continue reading The Art and War of Estimating and Scheduling Software

The post The Art and War of Estimating and Scheduling Software appeared first on Ardent Development Podcast.

]]>
In my experience, the majority of estimates and schedules for software development projects are derived from hunches, guesswork, and gut instincts.  We say things like “that should take about 4 hours of work” without backing it up with data.  And we set timelines based on those estimates without adjusting for past accuracy in estimating.  And what about the tendency of the customer / stakeholder to change scope midstream?  That should drive how big the “buffer” is in the schedule for changing requirements.

I’m as guilty as the next person in many cases.  I fight an internal battle on this issue.  Part of me wants to just be a carefree developer with little to no regard for estimates.  I dare say that my time as a computer science student was when I got stuck in that trap.  Nobody taught me to estimate my work, let alone track the accuracy of my estimates over time.  I usually had ample time to do assignments and the code flowed easily for me so I never really worried about how long I spent working on things.  [In recent years, I know that people like Rick Wightman at the University of New Brunswick have been working on teaching students how to think more like professional developers.]

The professional developer in me knows that good estimates are essential to everyone in the development chain.

The businessperson in me cherishes accurate estimates.

ACM Queue has an interview with Joel Spolsky in which he talks a bit about evidence-based scheduling (which apparently is somehow supported in FogBugz):

In evidence-based scheduling, you come up with a schedule, and a bunch of people create estimates. And then, instead of adding up their estimates – instead of taking them on faith – you do a little Monte Carlo simulation where you look at what speeds developers had in the past, vis-à-vis their estimates. You use that same distribution of probabilities, as we call them, that you had in the past and run a simulation of all of your futures. What you get, instead of a date, is a probability distribution curve that shows the probability that the product will ship on such-and-such a date.

Nice!  I need to try that.  Sounds so much better than just using spreadsheets to track history.

What’s most interesting and useful about tracking estimate-to-actual history on a per-developer basis is that you get data about how accurate the hunch / gut instinct of each person really is.  This is so much more powerful than just collecting team or project based accuracy.  Of course there will be outliers in the data, like when a developer who does a lot of similar tasks has to estimate something new or unrelated.

I asked a friend who is a project manager that I respect (and trust) to comment on this.  (I was wondering if there was a more popular term than “evidence-based scheduling” or other good tools to support it.) At his old job he used to teach an estimating course for developers.  Check out the part I highlighted:

Well when you run a project you have a bunch of planned dates (when are you planning to be done), and you are really supposed to keep track of actual dates (when did the work actually finish).  If you are really keen (and perhaps have a database to track this by resource -and perhaps by technology and task type)… you should be able to form some projections on developers… I.e. Billy always takes twice as long to do a design but he does a detailed job so the coding goes twice as fast.  You can use this information to do a gut check on teams too… but Joel is right … these estimates are as complex as the people who are on the teams and the types of tasks they are working on.  There is also the issue of doing something for the first time… very hard to estimate.  It is only when you do something multiple times that you get good at estimating… and only if you are looking back on your estimates looking for trends.  What Joel is describing is putting some trends to the old estimate / vs. actuals data.

Not sure what to call it.  But PMs are always trying to log history of missing or hitting deadlines and you very quickly get a sense of which developers have good estimates, and which developers you need to double, triple, etc… On my last project I had a developer tell me something would be able to get something done by Friday of that week and it actually took about 3 months of 8 people full time😉  I’ve heard the statistic of 8:1 (fastest developer to slowest developer).

To my memory, I have never had a developer highlight his/her accuracy in estimating on a resume or during an interview.  That would be an interesting thing to do.  It would blow me away if someone told me they had a spreadsheet with their personal estimation accuracy showing their estimates-to-actuals history.  That would be an impressive artifact!

The post The Art and War of Estimating and Scheduling Software appeared first on Ardent Development Podcast.

]]>
http://ardentdev.com/the-art-and-war-of-estimating-and-scheduling-software/feed/ 4 120
Cookieless Session with ASP.NET Ajax and Web Services http://ardentdev.com/cookieless-session-with-aspnet-ajax-and-web-services/ http://ardentdev.com/cookieless-session-with-aspnet-ajax-and-web-services/#comments Wed, 04 Jul 2007 18:29:42 +0000 http://www.ardentdev.com/blog/index.php/2007/07/04/cookieless-session-with-aspnet-ajax-and-web-services/ I just discovered a little snag when calling session-enabled ASMX web services from ASP.NET Ajax using cookieless session tracking (hat tip to Guy Barrette for raising the issue).  Here’s the scenario:  You are using cookieless sessions and want to call a web service in the same web app from JavaScript code.  With cookieless session state, … Continue reading Cookieless Session with ASP.NET Ajax and Web Services

The post Cookieless Session with ASP.NET Ajax and Web Services appeared first on Ardent Development Podcast.

]]>
I just discovered a little snag when calling session-enabled ASMX web services from ASP.NET Ajax using cookieless session tracking (hat tip to Guy Barrette for raising the issue).  Here’s the scenario:  You are using cookieless sessions and want to call a web service in the same web app from JavaScript code.  With cookieless session state, you get a URI like this for your web page:

/AJAXFuturesEnabledWebSite3/(S(d0xa1fqpupjt1uactajufoan))/default.aspx

The URI for the web service would then look like this:

/AJAXFuturesEnabledWebSite3/(S(d0xa1fqpupjt1uactajufoan))/WebService.asmx

You can add an ASP.NET Ajax service reference to the web service declaratively in the <asp:ScriptManager> control or programmatically like this:

ServiceReference sr = new ServiceReference(“WebService.asmx”);
ScriptManager1.Services.Add(sr);

The reference is using a relative path so everything should be fine since default.aspx and WebService.asmx are both at the same location.

If you look at the source of the resulting web page, you’ll find a script tag that is pulling down a JavaScript definition for a proxy to be used to call the web service:

<script src=”WebService.asmx/js” type=”text/javascript”></script>

The script tag is using a relative path so everything should still be fine.  But if you try to call the web service from JavaScript, it doesn’t work:

ws-script

Take a look at the script produced by WebService.asmx/js (click image to enlarge):

js

The second-to-last line sets the path to the web service without including the session ID in the URI:

WebService.set_path(“/AJAXFuturesEnabledWebSite3/WebService.asmx”);

You can work around this by resetting the path to the web service yourself.  For example, the following works:

function CallService()
{
    ws = new WebService();
    WebService.set_path(“WebService.asmx”);
    ws.HelloWorld(SucceededCallback);
}

Alternatively, you can invoke the web method using WebServiceProxy.invoke():

Sys.Net.WebServiceProxy.invoke(‘WebService.asmx’, ‘HelloWorld’,
    false,{}, SucceededCallback, null,”User Context”,1000000);

I prefer the first approach.  In both cases you are explicitly providing the URI for the web service because the generated proxy object does not include the session ID in the URI.

The post Cookieless Session with ASP.NET Ajax and Web Services appeared first on Ardent Development Podcast.

]]>
http://ardentdev.com/cookieless-session-with-aspnet-ajax-and-web-services/feed/ 9 109