Archive

Archive for the ‘Code Camp’ Category

Pair Programming improves your communication skills

March 20, 2007 4 comments

Many developers in our industry prefer a dark corner to the presentation podium. This is often explained away with references to introverted personalities and geekish tendencies. While this may be true for certain individuals, there are definitely many benefits to breaking away from this stereotype. One of the best ways to progress in the business world is to develop strong communication skills – customerswant to be understood and the combination with technical ability provides a powerful skillset when understanding problems and providing solutions. As with so many things in life,excellence in communication can be achieved through lots of practice.

Pair Programmingis the process where two developers work together on the same code with one person typing and both constantly discussing the requirements, design and code. Pair Programming alsoprovides an excellent opportunity to hone your communication skills. To be “in the zone” when pair programming requires that you continually verbalize your ideas in a way that your pair partner can follow your thinking and stay engaged.

This sounds easy, but to do it effectively requires:

  • Verbalizing raw ideas as they come into your head in a way that your pair can follow
  • Asking questions when you don’t understand
  • Focusing on someone elses way of thinking to stay engaged in their thought process
  • Moving in a methodical way so that your pair can keep up
  • Compromising on an approach to a solution and agreeing together on the next steps to take

Any periods of silence when pairing can often indicate a problem:

  • The pair is stuck and doesn’t know how to proceed
  • One or both members of the pair are distracted and are no longer engaged
  • One member of the pair is driving while the other has lost interest
  • One member of the pair is proceeding without explaining their actions to their partner (and that partner has given up asking questions)

As you can see it requires a lot of effort and mostly soft skills to bring out the best in your own technical thinking and that of your pair partner.

We value communication so highly that we practice Pair Programming wherever possible on our development team. We also encourage our team members topresent at development team meetings, user groups and code camps to further improve their communication skills. This is good for our team in that our productivity is enhanced through all the apprenticeship/cross-training and our verbal/soft-skills are enhanced daily through all the practice.

Come along to the upcoming Code Camps in the Mid-Atlantic area to see several of the Thycotic team members present and many other great speakers too.

Jonathan Cogley is the CEO and founder of Thycotic Software, a .NET consulting company and ISV in Washington DC. Our product,Secret Server, is a secure web-based solution for teams to secure their passwords. Where do you keep your passwords or do you use the samepassword everywhere?

Code Camps, Code Camps, Code Camps.

March 16, 2007 Leave a comment

I presented on Pair Programming at the Maryland ColdFusion User’s Group on Tuesday and was very pleased to tell everyone about all the upcoming Code Camps in our area. I also promised to post the links to the group,so here they are:

Thycotic is buzzing with Code Camp excitement and everyone has been submitting session proposals and coordinating topics. We should have a good showing from our team at the Code Camps with presentation topics ranging from Cryptography, Secure .NET Programming, NHibernate, DotLucene to RhinoMocks and Agile .NET.

Code Camps are a great way to learn about new technology and connect with your local developer community.

(If you are looking to join a developer team that encourages learning on a daily basis, pair programming and test driven development … we are hiring.)

Jonathan Cogley is the CEO and founder of Thycotic Software, a .NET consulting company and ISV in Washington DC. Our product,Secret Server, is a secure web-based solution for teams to secure their passwords. Where do you keep your passwords or do you use the same one everywhere (snicker)?

Yet Another Mid-Atlantic Code Camp – but AGILE!!! (April 14, 2007 8am-6pm)

February 26, 2007 1 comment

Do you breathe agile? Do your progress bars always turn green? Do you refactor in your sleep? Then I need you for the agile track … We are looking for attendees, speakers and volunteers! This is the first Mid-Atlantic Code Camp to have an official Agile track (and I am the track chair – woohoo!)

Attendees
Register here, now, just do it.

Speakers
What are you waiting for? Fill in this form and upload it here.

Volunteers
Send an email to volunteers at novacodecamp dot org

The official website for the Code Camp is here.

I have attended all of the previous Code Camps at Reston and they have been very worthwhile and havedrawncrowds of people and lots of cool prizes.

Jonathan Cogley is the CEO and founder of Thycotic Software, a .NET consulting company and ISV in Washington DC. Our product,Secret Server, is a secure web-based solution for teams to secure their passwords. Where do you keep your passwords or do you use the same one everywhere (snicker)?

Richmond Code Camp 2 : review

October 10, 2006 Leave a comment

At 5:00am on Saturday morning, I headed in to downtown DC to get some prizes and a few books from the Thycotic office. Then off to collect Ryan Olshan at 5:30, and John Morales at 5:45. We hit 95 and headed south for Richmond. The drive was uneventful with most of us still in pre-coffee haze and Bob Marley playing. We got to the Code Camp at the ECPI center well before the kickoff time and claimed our hard earned coffee and bagels (outstanding cream cheese from Panera!).

The turn out was good – over a 100 people I think. I started with a session by Joe Waldin on VSTO – I had tried downloading the new beta of VSTO and had problems getting a sample add-in to compile. Joe worked through all the quirks and gave some great tips and advise for deployment. It sounds like Microsoft has made huge progress on the ease with which add-ins can be developed but still have a few wrinkles to iron out on the deployment process. Next up was a Podcasting session by Frank La Vigne (Tablet PC MVP) – we have recently been videotaping a series of Thycotic development team presentations and the idea of a podcast to share some of the public stuff had come up. Frank walked through the tools and tricks of recording your own podcast and also got into the gory details of the XML to publish your feed. Look for an initial Thycotic team podcast soon …

Now it was my turn, my session was titled simply “Refactoring”. I went slideless during the last Code Camp in Reston and had so much fun that I wanted to do it again. First problem, the projector didn’t work – not expected at all since I was not the first session of the day! I walked through the introduction to Refactoring where I used Bob Martin’s explanation about “if ain’t broke, don’t fix it” and explain that software can be considered broken if it doesn’t meet all 3 requirements:

  • it works (hopefully this means that your unit tests pass)
  • it is easy to change
  • it is easy to read and communicates its purpose clearly

Next we jumped into the code and used Bryant Smith’s (another Thycotic team member) C# conversion of Martin Fowler’s refactoring example. This involved Movies, Rentals, Customers and a nasty looking Statement method. Lots of discussion occurred including why static methods are often a bad idea and how data and operation should be related.

Next was John’s session on “ASP.NET Performance Tuning”. This is something close to John’s heart as he really likes to get in there and tweak away whenever possible but he has a method! (standard best practices for Performance Tuning … measure, measure, measure!) and the tools to support it. John used Application Center Test to produce a repeatable test to produce load and get some timing numbers for some simple tasks in the web application. After finding the slow points in the application (the application under test was our very own Secret Server), he pulled out DotTrace 2.0 from JetBrains and showed how to drill down into the problem area. John had made some initial guesses as to the cause of the slowdown but then showed through careful measurement and profiling that the cause was something else! Veterans of Performance Tuning will be smiling right now – it is very common to find that your guess is completely and totally wrong. This was John’s first solo session at a Code Camp and he did a great job both with his pace through the material and engaging withthe audience.

Last up was my session on “Web Application Testing ASP.NET with NUnitAsp and WATIR (and even WatiN!)” which was a hands on coding session playing with all 3 tools and talking about best practices. We also talked through the contrast in testing techniques since NUnitAsp tests at the HTTP level whereas WATIR and Watin use Internet Explorer automation. In the age of AJAX and sophisticated Javascript this is a big plus (NUnitAsp cannot test Javascript). The WatiN framework was a happy surprise when John IM’ed me about it at 11pm on Friday (yes, the night before). It is the equivalent of the WATIR framework but for .NET … why is this cool?

  • All our existing tools work with it (TestDriven.NET, NUnitGui, Build scripts)
  • The developer team doesn’t have to learn a new language (no matter how much fun that might be!)
  • It also seemed to execute much faster than WATIR!

I hope to post more about Watin as we experiment with it. We have a HUGE amount of testing code in NUnitAsp so a migration is probably out of the question but it would be fun to try it on new work.

Jonathan Cogley isthe CEO and founder of Thycotic Software, a .NET consulting company and ISV in Washington DC. Thycotic has just released Thycotic Secret Server which is a secure web-based solution to both “Where is my Hotmail password?” and “Who has the password for our domain name?”. Secret Server isthe leader in secret management and sharing within companies and teams.

Speaking at Richmond Code Camp tomorrow

October 7, 2006 Leave a comment

I will be presenting two sessions at the Richmond Code Camp tomorrow:

  • Refactoring
    This will be a walkthrough of the Martin Fowler example but in C# (thanks to our very own, Bryant Smith who converted it to C# some time back). We will also get in to why, when and how to refactor.
  • Unit Testing ASP.NET with NUnitAsp and WATIR
    Our team excels with NUnitAsp – we use it daily on all our projects and this session will highlight our tips and tricks. The smaller section on WATIR is very new and is designed to showcase an alternative to NUnitAsp – this is something which I have far less experience but hope to put on a good show anyway! John Morales on the Thycotic team just pointed me towards WatiN tonight which looks very interesting and I will try to spin up an example in this too.

John will be presenting on Performance tuning ASP.NET Applications and Ryan will be coming along for the ride and to possibly fill in for a session if one comes up. We will all be wearing bright green Thycotic shirts so watch out for us and come to our sessions to win lots of great stuff:

  • Thycotic notepads and pens
  • 10 user license to Secret Server in each session

See you there! Oh yeah, and there will be NO SLIDES, JUST CODE.

Jonathan Cogley isthe CEO and founder of Thycotic Software, a .NET consulting company and ISV in Washington DC. Thycotic has just released Thycotic Secret Server which is a secure web-based solution to both “Where is my Hotmail password?” and “Who has the password for our domain name?”. Secret Server isthe leader in secret management and sharing within companies and teams.

Presenting without slides

June 24, 2006 2 comments

I tried something the weekend before last at the 3rd Mid-Atlantic Code Camp … I went slideless! I presented 3 sessions during the day and I did not have a single slide, not one, nada, nothing. The good news was the audience loved it. I took a few polls during the day and the response was definitely positive.

Pros:

  • Definitely an adhoc, adlib feel to the sessions – it was “real”. I even started the first session (The Tao of Test First Coding) by offering 3 choices of things we could build and opening the floor to other ideas – perhaps the audience hadn’t consumed enough caffeine by 9am to appreciate the dynamic nature but it was still fun – unfortunately the whole Tao thing was a little lost too. Not exactly the best idea to pair TDD (a process that takes a long while to truly grok) with an abstract concept like the Tao but I thought it was neat.
  • Less tedious preparation since I could just focus on the fun bits – the communication with the audience and the code.
  • Less conventional format – everyone seemed to wake up in their seats as if to say “Oi! What’s going on ‘ere?” – certainly got people’s attention!

Cons:

  • Difficult to convey essential information (the whiteboards were on the side of the room – no, the back row can’t see orange and it definitely takes longer to write things than to click Next)
  • No flow to fall back on. I tried to have the flow of the session mapped out on a piece of paper that I kept to myself but it was less intuitive than simply following a deck.
  • Nothing to post afterwards. I had a few people come to me afterwardsasking for slides sincethey had unfortunately missed the sessions – can’t help them a whole lot!
  • Hard to improve the session. Usually you improve your deck based on feedback – this will be tricky since the session becomes so adhoc it is difficult to remember format.

Conclusion:

I definitely enjoyed the format more since I enjoy process and thinking on my feet. The audience definitely preferred the code first approach and adhoc nature. I think I will continue this format but need to figure out how to structure an overview so that I can:

  • improve sessions over time
  • have something to give attendees who miss the show
  • keep some kind of structure

Next time you give a session, go slideless! It is fun.

Jonathan Cogley isthe CEO and founder of Thycotic Software, a .NET consulting company and ISV in Washington DC. Thycotic has just released Thycotic Secret Server which is a secure web-based solution to both “Where is my Hotmail password?” and “Who has the password for our domain name?”. Secret Server isthe leader in secret management and sharing within companies and teams.

What motivates software developers?

May 15, 2006 1 comment

Developers who simply work for a paycheck have
different priorities so I am going to ask you to forget about them for a
minute. If you joined software development out of pure passion for the
industry then you have a different agenda. Building software is a very
creative and constructive processbut the intangible nature of software
makes the parallels to traditional engineering difficult. The job titles
in our industry typically reflect some form of engineering but it seems to have
lost its impact (Do most people think of a software engineer and a civil
engineer having the same qualities?). Yet we do still share many of the
same feelings and priorities as conventional craftsmen.

Things like:

  • A tendency towards perfectionism (ever caught
    yourself tweaking the UI or code a little to get it aligned just
    right?)
  • Pride for the end product
  • Strong sense of ownership
  • Criticism of other work
  • Responsibility for flaws
  • Strong affection for our tools of the trade
    (editors, IDEs, utilities, home grown tools)
  • Strong need to use new tools and
    processes

Some agile practices (collective code ownership,
pair programming, good enough) seem to reduce some of these basic craftsman
tendencies but they still exist in some form.

Unfortunately these traits don’t always align with
the business interests of the project so we have to balance the different
priorities to achieve the optimal environment. How can we understand these
tendencies to enjoy our work more and motivate others on our team?

  • Introduce new technologies andtechniques
    in a controlled manner so that the team is able to try new things without
    taking large risks. Be sure to include developers in this decision
    making process – after all they should be the ones ‘in the know’ on new
    technologies, right?
  • Practice pair programming to encourage
    communication, sharing of skills and team building – this can bring a lot of
    satisfaction to a developer team without changing the tasks or the priorities
    of the project.
  • Encourage participation in community developer
    events (user groups, code camps), blogs (share links across the team), books
    (monthly bookshelf anyone?)and conferences.
  • Avoid generalized training – in my opinion this
    tends to serve the paycheck programmer more than the dedicated ones.
    Instead prefer specialized training which focuses on particular
    newtechniques that have already been piloted and now use that training
    time to get a jumpstart and avoid early pitfalls.
  • Interesting projects – this is tough to control
    since businesspriorities and budgets usually dictate the schedule
    however there are often ways to make projects more interesting without risking
    timeline or budget.
  • Satisfy your customer – there is nothing better
    than the feeling of a job well done to motivate a developer
    team!

Some of these ideas have been very
successful on our projects. What motivates you and your developer
team?

BTW – We are looking for another TDD .NET Developer to join our developer
team
.

Jonathan Cogley isthe CEO and founder of
Thycotic Software, a .NET consulting company and ISV in Washington DC.
Thycotic has just released
Thycotic Secret
Server
which is a secure web-based
solution to both “Where is my Hotmail password?” and “Who has the password for
our domain name?”. Secret Server isthe leader in secret management
and sharing within companies and teams.