An Experiment in Remote Pairing
August 12th, 2008
Recently, my employer, Integrum Technologies, has allowed me to work from home one day a week. This is due to rising gasoline prices combined with my distance from work. It’s great for me as I’ll save quite a bit of money each week as well as reduce my overall emissions. However, this has presented us with a slight dilemma: how do we remote pair effectively?
Pair Programming
Integrum subscribes to a variety of Agile practices. Perhaps the most prominent is working in pairs, a.k.a pair programming. I was first introduced to the idea of pair programming around 1999 when I was at the University of Arizona learning how to completing my BS. At that time we simply learned the theory from a professor, but didn’t actually try it.
About 16 months ago I was working in a contract position with my friend and phoenix Ruby on Rails developer, Josh. Toward the end of our time at that contract we attempted pairing and found it worked really well. When we were hired as contractors at Integrum we paired on a project form start to finish and then later, when we went full-time, we paired with the rest of the team members. These positive experiences with pair programming have convinced me of it’s usefulness.
Now that I work a day from home, how will I pair with my various teammates?
Remote Pairing
I’m sure there are many, many ways to pair remotely, but here I will describe our first attempts at pairing remotely. It may help that we’re an all Mac shop, but we found it rather easy to get up and running quickly.
Systems
At home and at work we are using iMacs running OS X 10.5.4. The built in iSight and microphone are great for what we need right now.
Complaint: Noise. It’s everywhere, seriously. The mic picks up everything.

iChat
Yep, that’s right, iChat – video chat specifically. We simply fire up our iChat instances using our Integrum Jabber IDs and request a video session. Seriously, that’s all we do. The sound and video quality have been more than adequate for pair programming 7 hours a day.
Our first attempt at this was flawless, well… until it just stopped working that is. After a little research we found that I probably needed to open the right ports to maintain a consistent connection (this post on iChat Routing Problems helped). After I did that we haven’t had a problem.
Complaint: Video chat over iChat can sometimes lag or have artifacts, especially during peak times. It’s good enough, but would be nice if it were smoother and clearer.
Screen Sharing
While we’re pairing we share the screen on one of the computers. When we’re done we turn it off. This allows us to both have control of the keyboard/mouse if we need it and has helped immensely in making us feel like we’re both working. We take turns driving while the other gives advice or comments and we can smoothly transition from one driver to the other.
Complaint: From my end the connection latency can sometimes hinder progress. If I hit one of the Exposé areas of the screen and all the windows separate it can almost bring rendering on my side to a halt. There also seems to be a problem with select via the mouse. When I click and drag to select some text the screen jumps to the top or bottom immediately, selecting all text between. I’ve had to get better with the keyboard.
iSight + built-in microphone + iChat + Screen Sharing = Adequate Pairing
I do have some complaints about the current setup, but I’m willing to keep going until we find better solutions. Perhaps we should try using Xbox Live as I’ve heard some people suggest.
I think the next steps are to secure some good microphone headsets that will reduce the noise and allow us to hear one another more clearly. Then we can look at replacing iChat and Screen Sharing.
As tools for remote pairing progress I can see more developers turning to this as a solution to save money and time while still retaining their communication with their team, especially with their pair. Pairing remotely can reduce cost for the developer and the company, save time and reduce emissions because the developer no longer commutes. And if their whole company is remote then all the better!
Everything I Need to Know About Pair Programming Etiquette, I Learned From My 4 Year Old
August 5th, 2008
The folks at Integrum recently had a discussion about avoiding distractions while pair programming. We all know how many distractions there are in today’s world, everything from email to blogs to Twitter. It’s hard to not get distracted by all of these things, as they have become so prevalent in our lives. We want to be in the know and there are many tools out there that let us do just that. They constantly run in the background or popup, they email us, they text message us, they demand our attention…
Look at me, I’m a tweet!!
No, I’m working.
But I’m a direct message from iJustine!
Well… okay, just this once!
But it’s not once, it’s all the time… constantly interrupting (seriously Justine, stop, I’m not going to respond). When someone is paying you for your time, they don’t want to be competing with all these distractions.
So what’s appropriate etiquette for a person working in a pair programming environment? I asked my 4 year old over dinner to see what he thought.
The Interview
me. Do you know what it means to work in a pair?
ethan. When 2 people are working together.
me. Good. What about focus? Do you know what that means?
ethan. Stay on track. Concentrate. Keep an eye on what you’re doing.
me. How about respect, do you know what that means?
ethan. Be nice?
me. Okay good, let’s get started.
me. When you’re working with someone as a pair is it okay to check your email, instant messenger or twitter?
ethan. No.
me. Why is it not okay?
ethan. Cause we might lose focus.
me. If we were working together and I was having trouble solving a problem, how could you help me?
ethan. I could tell you how to do it.
me. What if you didn’t know how to do it?
ethan. We could think of an idea and do it.
me. Should we think by ourselves?
ethan. No we should talk and hear… and choose what we want to do.
me. If were working together and I get distracted, what should you do?
ethan. Daddy, what are you doing? Please pay attention. You made me distracted and I don’t know what I was working on.
Conclusion
This interview proves beyond a doubt that my 4 year old knows what it takes to work in a pair programming environment. He was polite, but forceful in his remonstration of my lack of focus. His answers were not overly complex, he kept it simple. Which is as it should be since it really isn’t all that complex – there’s a reason the acronym KISS exists.
So there you have it, think like a 4 year old and you’ll do just fine in any pair programming environment :)
GoRuCo 2008 Wrap-up
April 28th, 2008
As I stated in a previous post, I attended the Gotham Ruby Conference this past weekend in NYC. It was a great time with many interesting talks. The weather was amazing as well. I don’t want to spend a lot of time rehashing the conference because you can view the GoRuCo 2008 presentations for yourself, but I did want to mention a few things I got out of it.
Bryan Helmkamp gave an interesting introduction to story driven development using rspec and story runner. This is something we’ve been talking about at Integrum, but haven’t had a chance to use in a real setting yet. Derek and I got to spend some time at the WePlay offices (where Bryan works) and they showed us some of the stuff they’re doing, including using story runner. It was awesome to hear about their experiences and hopefully we’ll get a chance to use it soon.
Next up was “Archaeopteryx: A Ruby MIDI Generator.” I was skeptical about this one, but was blown away by Giles Bowkett’s presentation. From recounting his life adventures, including a “psycho throwing rocks at his dad until he threatened him with a piece of rebar” to calling venture capitalists “weasel-brained muppet fuckers… they’re not fools, they’re liars.” He kept the crowd well entertained, but threw in some really interesting and well-delivered points about startups and life. It is well worth watching.
Another one that really stood out was Ryan Davis’ presentation about “Hurting code for fun and profit.” He had a lot of really great things to say about being a developer, so go watch it already!
These speakers helped me to become aware of a few things:
- I don’t read enough. Ryan mentioned that the average developer reads 1 book a year. Is one book a month really so hard?
- I don’t hurt my code enough. I don’t use flog or heckle consistently and I often don’t take the time to correct code that I know should be improved.
I definitely have some things to work on… how about you?
Integrum trip - SxSW Day 0
March 6th, 2008
What a long day! We traveled by RV from Phoenix, AZ to Austin, TX in just about 19 hours. Not record time by any means, but we had a blast. Josh provided the RV and both he and Derek drove.
Highlights of the trip include stopping to discover the mysteries of ‘The Thing’, talking politics and religion with Jade and Erica, Curtis hacking on a new side project and me hacking on a side project (details soon).
It was really nice to spend some quality time with some of my co-workers outside of work and the pressures and demands of customers. Looking forward to participating in SxSW!
A Shady Business
June 16th, 2007
Recently, several people told me it was unprofessional to reveal your pay rate. Doesn’t this seem like antiquated thinking? Maybe this goes back to the open, honest communication thing…
I believe that jealousy, resentment, anger, etc. about differences in pay are a direct result of keeping them secret. When they’re secret there’s no need for an employer to justify why you make less than someone else. In the case of a staffing firm it may be even more insidious – they don’t want you to know how much they’re taking out of each paycheck.
Before I started contracting, I was told by several people, and read about it on many forums and blogs, that staffing firms are out for a single purpose and don’t care about contractors at all. They will take advantage of you at every opportunity and use underhanded and sometimes even dishonest methods to get what they want. I refused to believe that because the ones I was talking to seemed very nice.
Sad to say, I’m quickly becoming a believer…
Getting Opinionated
June 16th, 2007
Lately I’ve been wondering what the hell happened to the old me. Something has insinuated itself into my being and changed me; changed the way I think and feel. I don’t want to sound too cliché here, but it all started 10 months ago when I began learning Ruby on Rails.
At that time, I was fresh out of a master’s program and the defense world, having previously worked for Raytheon Company. I was purposefully unemployed (gasp!) and I was intent on learning Rails while trying to create something useful. This was the direction I wanted to take my career. I didn’t want a stodgy 40-year stint at some boring company. I wanted every day to be fun, challenging, exciting… uh… then I had to get a job, cause a savings account doesn’t last forever.
When I re-entered the workforce I didn’t realize how much my personality had evolved. Working with Ruby on Rails had reawakened a passion for software that had been dormant for several years. That same passion enabled me to, once again, care. At first it was related to programming, but soon it was expanding into other areas of my life. I was starting to care, to have opinions, and I wanted to discuss those opinions with people.
You’d be surprised (or not) by how many people just don’t care – about anything. I don’t think I was quite to this point, but there were a lot of things I ignored. People have told me that my new communication style is “direct” or “blunt”, but I don’t look at it that way. I am simply expressing my opinion openly and honestly. Discuss it, refute it, agree with it, whatever… You listen to mine and I’ll listen to yours. Maybe we’ll agree and maybe we won’t, but at least we’re communicating.
Several people I’ve talked with recently seem to have a hard time with that communication style. They either don’t know what to say or they get defensive and/or irate. This happened recently and I couldn’t help but think of a line from the movie Jerry Maguire, where Cuba Gooding Jr. says something like “You’re getting mad and I think we’re just starting to talk.” I thought that line was just humorous before, but I believe it means when people are emotionally invested in the dialogue they begin to care.
I have also become a little more brazen. I’m not as reserved when expressing a more radical opinion and I am more likely to call bullshit when I see it. Yet another thing some people don’t appreciate… Imagine, though, if we were able to actually cut through the BS and talk openly and honestly about things. Think about that the next time you’re buying a car, negotiating a salary, or fighting with a loved one. A pipe dream? Maybe…
Joining the Phoenix Developer Community
June 7th, 2007
When I came back from RailsConf I realized how poor my local participation has been. I’ve been in Phoenix for almost a year and I haven’t been to a single local group meeting. Shame on me :(.
But that all changed on Tuesday when I attended the Refresh Phoenix meeting at Inza Coffee in Scottsdale. The Refresh group is trying to create a “strong community of designers and developers.” Cool!
I was surprised by the turn out (in a good way) – there were about 50 people there. Of the people I talked with, most were designers. They had about six demos from various groups on applications and ideas they were working on. My favorite was probably JumpBox because they demoed an app they created to help with setting up SVN and Trac in one fell swoop. In fact, they did it live during the demo. They have some other ones you can check out on their applications page.
It was a pretty good gathering of folks, but people just split afterwards. I wanted to meet more locals and start forming a network, but was only able to talk with a few people. Rumor has it that some people hit Rock Bottom after the meeting maybe next time.
I’m also going to attend the Phoenix Ruby User Group and AZ on Rails events this month. I’m really interested in meeting people in the Phoenix area, so look me up if you go to either of those.
Business Culture
June 2nd, 2007
As I read my blog feeds, I will routinely save posts that I don’t have time to read thoroughly, but would like to in the future. Then I come back later (sometimes much later) and read them.
I just came across an article by Dick Costolo titled simply Company Culture. He briefly examines why establishing a strong culture is important to a company. He states that without a strong culture you might get some of the following:
- Bureaucracy. Without an implicit understanding of how things work around here, everything has to be explicitly articulated, documented, and instructed.
- Office politics. Companies with a very clear vibe or feel to them find that politics don’t encroach on the landscape as quickly as companies without a distinct culture. Probably because people start sniping or backbiting when uncertainty and policy are the order of the day.
He also talks about companies having a fake culture where leadership is trying to force a sense of spirit and excitement into the environment and everybody can sense that it’s forced.
When it is just one or two people defining the culture for a very small team, things may be manageable. When you have possibly hundreds of leaders in the company espousing their take on the culture it is a lot less manageable. This is where politics and bureaucracy rear their ugly heads.
What about the situation where the company actually does have a strong culture, but the culture is not changing fast enough (or at all) and therefore, cannot retain top talent? A culture that may ultimately be self-destructive? For example, I believe that Google may be experience this as they struggle with becoming a large corporation. I have read many articles claiming that entrepreneurial types are departing Google because of cultural differences. Is this just the restless nature of the entrepreneur or an indication of a weakening culture?
Personally, I try to avoid bureaucracy. As Grace Hopper said it’s easier to ask forgiveness than it is to get permission.î I recently learned this the hard way and I won’t make that mistake again anytime soon. As far as politics goes, I generally give it the finger and refuse to play. This can be hard sometimes when you feel your job may hinge on your ability to politically maneuver within the organization. I still think it is better to speak your mind, do what you feel is right, and not back down without a good reason.
RailsConf 2007: Community
May 27th, 2007
Part of the reason I attended RailsConf this year was for the community. When I first started learning Rails, I was alone. Literally, I would sit by myself at home for 12 hours a day trying to learn. Don’t get me wrong, I think I learned a lot and that was great for keeping my focus, but I think I missed a certain aspect of what Rails is about – namely, the community.
After spending several months learning from home, I decided to find a job using my new found skills. Actually, I was broke and needed to get back on my feet, but anyway… It was an exciting time for me because I was really looking forward to meeting other people who were passionate about Rails. Phoenix is not the greatest market for Ruby on Rails developers, but I decided to hold out until I found a contract position doing just that. A short two weeks later, things were looking up. I had a job that paid well and I was using Ruby on Rails, what more could I ask for?
Well… a lot actually. What I found was that only one other person at this company was as passionate about Ruby on Rails as me. Seriously, I am thankful every day that I work with him; it would be a nightmare if he were to leave. Working with another Ruby on Rails geek has pushed my appreciation for the language to a new level. Well, not only the language itself, but the culture that it inspires. Is this an intended or unintended effect of using Ruby on Rails? I think there is a reason why one of the most popular learning aides for Rails is Agile Web Development with Rails. It not only leads you through developing your first Ruby on Rails application, but it also starts to plant the seeds of Agile development. The language features allow you to rapidly develop based on feedback, sometimes even when the user/customer is right there next to you.
So back to RailsConf. I wanted to meet the other people in the community. I already subscribe to many blogs covering Ruby and/or Ruby on Rails, but I wanted the personal interaction. I needed to know that other people like me existed… for real. And I found some. Of course, I couldn’t meet everyone there, but in each session, I turned to the person next to me and asked them some questions. Sometimes that led to a more lengthy conversation or business card and sometimes not, but you can’t say I didn’t try.
I attended the conference with my friend Josh and two other co-workers, Ramesh and Clif. Clif is more of a higher up (non-developer) and he seemed to be attending RailsConf to recruit. Ramesh is a developer that we are working on, ever so slowly, to get him to become more passionate and opinionated.
One of the first people I met was Chardy, a Rails developer from Singapore. I talked with him a little about what he is working on, how he started using Rails, etc. He was very nice and it was interesting to see that people traveled a long way to attend the conference.
On Friday, I had a blind meetup with, Mike, a friend-of-a-friend. Very cool guy. We ended up spending a lot of time hanging out over food and beers during the conference. He is still in school, but I was extremely impressed by the breadth and depth of his knowledge. We had some really good conversations and I hope that we can keep in touch. He said he might go up to San Francisco this summer for a job between semesters. I wish him the best of luck!
Also on Friday, I noticed someone on the Portland light rail that had a badge reading Integrum Technologies. I knew that company from reading several of their blogs. They are also located in Chandler, AZ which is very close to where I work. Turns out they are a very cool group of people. The first person I met was their Algorithmagician, Jay. He’s a nice guy and we attended several of the same sessions throughout the conference. He then introduced me to Lindsay, Chris, and Jade. They seem like they have a great group of people working for them. If you are interested in working for them, I just saw a job posting for an experienced web developer at their company.
Celebrity sighting! Lol… I met Gregg Pollack and Jason Seifer of Rails Envy fame. Yes, the guys who brought you the Mac vs. PC style Ruby ads. My personal favorite was #1, so enjoy it below. they both seemed to be really great guys – down-to-earth, funny, and of course knowledgeable.
At a party Saturday night I also had the chance to meet several women attending the conference. The first, was Tina, a photographer, entrepreneur, and web usability expert. She is working with a group at Amazon researching Ruby on Rails as a possible web development framework. I remember when I was completing my MS project using the OpenLaszlo framework, Amazon was looking at that as well. Cool to see Amazon exploring other technologies (even though I’m still not thrilled about the whole Amazon vs Alexaholic/Statsaholic debacle).
Tina in turn introduced me to Desi, a member of the ThoughtWorks team. Desi and I had a great, long conversation about women in technology and their lack of attendance at conferences. She is currently the principal contact for DevChix, a group encouraging a more diverse technological workforce. I will probably expand on this conversation in a later post. Desi also introduced me to Cyndi Mitchell, vice-president of strategy for ThoughtWorks. Wow, there were a lot of ThoughtWorks people around… We only talked for a short time because they all decided to go to Dante’s to see the Extra-Action Marching Band live. Incidentally, the marching band made a guest appearance at the conference…
There were a lot more people that I met, but I wanted to call out a few specific ones that I really enjoyed meeting. So, bottom line is there are people out there with as much, and in some cases more, passion for Ruby on Rails. Finally, I feel like I have started to connect with the community. However, I see this as a first step in the right direction. Now I need to get involved with making Ruby on Rails and the community successful.
RailsConf donations
May 22nd, 2007
During RailsConf 2007, the organizers encouraged the community to donate money for good causes. I just read that the total so far is $33,000. That is a great showing from the Ruby on Rails community. Great job!
They may still be accepting donations, so please help out.
Confusion
February 11th, 2007
I recently read a blog post by Alex Barnett about the phrase “I’m confused.” His take was that people who say this are actually saying something like “I’m smarter than you, and what you just said doesn’t make any sense to me.”
Uh… okay. Sounds like a case of inferiority complex to me. I know it’s difficult to fathom, but maybe they are genuinely confused. In fact, maybe they are confused because you’re not expressing yourself clearly. Having been a Computer Science tutor for three years dealing with students in the first three classes of CS, I’ve seen a lot of confusion. I think it’s better to say you’re confused than to nod and pretend to understand. Whenever a student expressed confusion, either explicitly or in their body language, I tried to explain things in a different way. Sometimes I would explain something three or four ways before I saw the confusion disperse.
So since he hasn’t heard it in a while, I will utter the phrase. Alex, I’m confused. You think “I’m confused” is a confrontational phrase, yet your responses are
X: “I’m confused”
Alex: “I know.”X: “I’m confused”
Alex: “I see. What part of the word “x” didn’t you understand?”X: “I’m confused”
Alex: “Not for the first time…”X: “I’m confused”
Alex: “I’ve heard that about you”X: “I’m confused”
Alex: “So am I”X: “I’m confused”
Alex: “You know, I’m not sure this is the appropriate time to discuss personal issues.”
Nothing confrontational there… Your job title also confuses me. What exactly does a “Community Program Manager for the Data Programmability team” do at Microsoft? Sounds like a pointy-haired manager title to me.
Alex: “My readership is decreasing – I’m confused.”
Me: “Yes, you are.”
Web 2.0 Video
February 7th, 2007
I thought this was a pretty cool video about Web 2.0 from a cultural perspective.
Contracting
February 6th, 2007
Well, I got the job. Actually, I got more than one job and had a tough decision, but I can only work one full-time job at a time. I decided to go with a company that is developing a large-scale health application using Ruby on Rails. It seems like the perfect opportunity for me to interact with other Ruby on Rails developers and test my skills in a traditional workplace.
Today was my second day and I’m finding the environment is about as opposite as you can be from my previous place of employment, Raytheon. Raytheon was very structured (CMMI level 5 process) and since it was very large (>80,000 employees) it could be overwhelming at times.
The project I am working on is, of course, temporary, but they have rented office space away from their main offices and are trying to treat the situation as if we were our own company. This is a good strategy and I have read of this before. In implementation, however, it is resulting in a little chaos. I see a lot of word-of-mouth knowledge transfer, which can be dangerous when you are composed of over 50% contractors. I am also finding that I feel the urge to structure things like Raytheon brainwashed educated me to do. Not that I have anything against Raytheon… they have convinced themselves and their customers that the processes in place are what they need. I was just looking for something a little more agile for my next job.
What I found though is… different. It has elements of Raytheon, like checklists, coding standards, processes, and paperwork. It also has elements of… chaos. Not that I am the greatest coder of all time, but I’m not very impressed with what I have seen so far. They have been working on this for over 6 months and have about as much done as I did in far less time. The difference here is I was prototyping. I went back and scrapped that prototype in favor of taking what I learned to build something entirely new. They decided to keep pressing onward with what looks and feels like a prototype. Instead of system functionality, they seem to be concentrating on the flashy web 2.0 functionality that is made so easy in Ruby on Rails using things like link_to_remote, link_to_function, RJS, etc. Maybe it was telling that on my first day I was shown a website that had a large bubbly pop-up when mousing over a menu item and asked, “Can you do this?” I should have said, “Sure, but shouldn’t the flashy UI elements come later? Let’s nail down the functionality first.” Maybe it’s not too late to speak up. Whatever the case, I get the feeling there’s a lot of work to do…
Update: One of my co-workers is as excited and passionate about Ruby and Ruby on Rails as I am. This is exactly what I was looking for when coming to a team environment using Ruby on Rails. He and I have had some great discussions about Agile practices, Ruby, and Ruby on Rails. I think that we have taught each other a lot and I feel very fortunate that he is there cause if he wasn’t I think I would be forced to leave. The remainder of the team is rooted in traditional development methodologies and the developers don’t have as much passion for it as we do.
Update: We have made some amazing headway on the project since I started three months ago. Still, we find that people are just not willing to change their way of thinking. Many of our attempts to push the Rails way and Agile methodologies have been thwarted. To the higher-ups, Agile means adding new functionality two weeks before an iteration when we’re already drowning in what we have because of scope creep and poor understanding of the user’s needs. The current environment is not as effective as it could be. Like I said before, the team is very rooted in the methodologies they’re used to. The approaches that we have taken thus far have not produced the results we were hoping for. How do we successfully convince other team members (developers, QA, graphic designer, project managers, business analysts, and IT director) about the benefits that we have already discovered (and continue to discover)? There seem to be too many hands in the mix – we want them to get out and just let us do our job to the best of our ability! Don’t even get me started about all the freaking meetings we attend… arrgghhhh!
Vision
December 20th, 2006
When I was completing my Master’s in Computer Science I took several classes on Software Engineering. Software Engineering deals mostly with the lifecycle of software from conception through maintenance. It is different from core CS classes because it does not focus on the software itself. Instead, it focuses on everything that goes into and around the software to make the project successful. I took classes on software process, maintenance, standards, testing, etc. All of this was in addition to my core CS classes on operating systems, networking, graphics, etc.
I found that I already knew a lot of what was being taught in those classes through my experience at my former companies: Project Technology, Inc. (acquired by Mentor Graphics) and Raytheon Company. Some of it was also common sense. However, common sense is not always common practice.
One of the things that I thought I understood well was the concept of vision. Communicating your idea about a product as a whole; what it is and what it will become. As you carve up your vision into manageable chunks, or projects, you define the project scope. That is, what portion of the overall vision is addressed by this particular project. Vision shouldn’t really change much, whereas scope may be more fluid and adjust as needed.
So now that I am shifting into the entrepreneur’s seat, I see parallels with this line of thinking and the business entity itself. I realize that not only do I have a vision for this particular product (a niche social networking website), but I have begun to shape a vision for the company that will create the product. This vision includes ethical and moral codes of conduct that are modeled after my own personal thoughts and feelings on the subjects. I have thought about how the business entity should conduct itself when dealing with members, clients, etc. I have also thought about employees and the culture I would like to see in the company.
All of these thoughts happened subconsciously and then bubbled up to my conscious thought. Maybe it is all coming about because of my pursuit of the business side of the company in recent days. Regardless, it is comforting to know that my brain has already thought about and formulated an opinion on these topics that I can use as the basis for building a solid company.
Absolutes
December 12th, 2006
I talked with a friend recently about the use of absolutes in his vocabulary (e.g., never, always, impossible). He is trying to reduce, or possibly eliminate them altogether. I thought this was interesting because I have also thought about this and try not to use these words.
Absolutes are often associated with negative uses. For instance, “I’ll never do that” or “That is impossible” or ” I always screw it up”. We may not realize it but these thoughts and/or phrases could have a psychological effect on our self-esteem and actually cause what we said to become true. If you think something is impossible or that you will screw it up, then you may not try in the first place.
I believe this kind of self-reflection is very beneficial to an individual. Why don’t you give it a try? Let me know how it goes.