Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Lately we have decided in our company to have a monthly 30-60 minutes talk on a subject that relates to C#/.Net programming or anything else that will make us better in our work.
We are currently programming in C# 3.0 with .NET 3.5 in VS 2008.

So... I've tried to come up with a topic for the talk (Something that is not too trivial but still could be applied as a guide for better programming, and not just an ad-hoc solution for specific problem) but nothing has come to my mind.

I will be more than happy to hear about such topics that could fit my need.

Feel free to elaborate or provide references to any resource that would help :)

share|improve this question

closed as too broad by Bart van Ingen Schenau, Ozz, World Engineer Mar 18 at 13:14

There are either too many possible answers, or good answers would be too long for this format. Please add details to narrow the answer set or to isolate an issue that can be answered in a few paragraphs.If this question can be reworded to fit the rules in the help center, please edit the question.

    
Itay, you have a very good intention indeed! I'm not sure I can help you with advice of any concrete topic even I'm a C# developer. Instead I want to say that it's very important to your teammates that they support your idea. Otherwise it will fail as it happened in my case... –  keykeeper Mar 2 '12 at 21:34
add comment

11 Answers 11

I would recommend shortening your presentation times to between 20 and 30 minutes, and aim to make it less of a lecture and more of a short presentation with a group discussion. This is a format that has worked very well at the company where I have been working for nearly 10 years now. We try and organize these seminar sessions weekly, and while they don't always happen due to either workload, or a lack of presenters prepared on the day, they happen regularly enough that they become an opportunity for the company to get together and talk about various areas of interest over a coffee and biscuits.

I'd also suggest not limiting your seminars to just C# or programming, but perhaps also things like how the company is doing, or how a law may be impacting on your business, or even a recap of your last company party complete with embarrassing photos and anecdotes. Whatever you think is going to be of interest, just to keep things mixed up a little, and to avoid the subject matter becoming too stale. Some example topics might include:

  • Introducing the company to new internally used products, such as:
    • the company wiki
    • the version control system
    • the issue tracking system
  • behaviour driven development using a selection of BDD APIs
  • a question and answer session about a new product or technology that your company is thinking of developing

And of course the programmer's staple diet covering techniques, algorithms, tools, languages language features etc.

share|improve this answer
add comment

An introduction to Code Contracts, what it is good for and why, could probably be a good idea. Even if you don't use Code Contracts, it might learn your programmers to think more about what a method exactly should do. This should give you cleaner methods.

After covering Code Contracts, the next step could be Pex. Pex can create unit tests automatically, by looking at your pre-conditions and your code, and then try to match the actual output to the post conditions.

In general, the subjects doesn't have to relate directly to your current work. If someone tried some cool framework or discovered something cool while working on a pet projects, let them talk about it. It might not help you in your day-to-day work right now, but it might influence your work in the future.

share|improve this answer
add comment

The other thing I would mention is putting multiple projects into one namespace (yes thats been around a little bit) however, being able to break up a program into multiple architectures (http://en.wikipedia.org/wiki/Multitier_architecture) . I would mention LINQ but not all programmers like it because it allows you to access data from UI layer, but thats just me.

share|improve this answer
    
LINQ is a general purpose query tool. LINQ-to-SQL, LINQ-to-Entities are database access tools. LINQ-to-objects is perfectly cromulent to use in the frontend. –  insta Mar 2 '12 at 20:24
add comment

We do a similar thing where I work, a monthly "developers meeting" where people are encouraged to share new things - mostly in the C#/ASP.NET field, but we also have front-end developers talking about HTML and Javascript stuff.

Anyway, here are a few tools that I have showed people in recent months. You might like to check out some of these, if you haven't seen them already, and tell people about them.

share|improve this answer
add comment

I would suggest bringing up topics that not only provide your co-workers with some new found knowledge but may also improve your code base. Is there anything that is going on that you're not too keen on? Talk about a better way to do these things. Some other things:

  • LINQ: As was suggested, this the "latest toy". Beyond that, it can really clean up some messy code.

  • Unit Testing: However you are (or want to) test, write some unit tests covering some code. Review the tests, can anyone thing of anything you've missed? If you aren't currently writing unit tests, discuss the pros and be the flagship.

  • Standards: No one likes to talk about them, but they really can improve the speed at which you skim other people's code.
share|improve this answer
add comment

You could research and talk of the benefits of VS 2010 and maybe get you and your compatriots an upgrade. You could end up with a whole lot of thanks.

share|improve this answer
add comment

What about dependency injection using Inversion of Control containers? We use Microsoft's Unity Container, but there are a number of them you could choose from to talk about.

share|improve this answer
add comment

As far as I'm concerned, the biggest thing to come out of .net/C# recently is LINQ. If members of your team aren't using it, they haven't been properly introduced.

share|improve this answer
    
Thanks, Actually we use LINQ extensively. –  Itay Oct 13 '10 at 11:51
5  
How about Reactive Extensions then? LINQ in reverse. It's an interesting and challenging take on the async world. download.microsoft.com/download/C/5/D/… –  spender Oct 13 '10 at 11:54
    
I'll check it out (I never even heard of it) thanks –  Itay Oct 13 '10 at 14:07
    
+1 for rx framework. Erik Meijer and Wes Dyer give a great set of talks on it. –  Matt Ellen Oct 13 '10 at 14:54
    
+1 for rx. I had a friend turn me on to it recently. It's pretty cool stuff. –  Steve Evers Oct 13 '10 at 15:06
add comment
  • OOP
  • C# Language
  • OOP Best practices in C#
share|improve this answer
2  
So a group who uses OOP in C# should have presentations on OOP in C#? Enlightening... –  Morgan Herlocker May 27 '11 at 13:22
add comment

This question is hard to answer without knowing the skill level of you and your coworkers. The fact that nothing has came to your mind yet, may be an indicator that you should alter your idea a bit.

Instead of long monthly meetings, I would do short weekly informal talks about a topic that recently sparked the interest of you or a fellow co worker. For example, when you notice that someone has problems with exception handling, talk about proper exception handling or if a co-worker made a really cool WPF tab control, let him/her talk about it. This way the topics will be much closer to real life and therefore more interesting.

Make the sessions mandatory, but offer something as compensation (everybody hates meetings), e.g. free coffee and a breakfast buffet. This way the attendees will always have something to look forward to even if they are not interested in the topic.

Offer a reward for the person who did the presentation. For example if you did 5 presentations you will get a free tech gadget as a reward. Set a price limit and let people choose whatever they want. This way people will do it voluntary and you don’t have to force anyone.

Finally, another disadvantage of long sessions is that they are pretty time consuming. You will most likely spend a few days to find a good topic and to make a decent presentation about it that fills 30 to 60 minutes and doesn’t bore the attendees. If you have a lot of work to do, it’s hard to keep the monthly schedule while still maintaining high quality. If the quality declines, the chances will increase that people think that the whole monthly session thing is a giant waste of time.

share|improve this answer
1  
We are a small team (5 C# developers) each and every one of us want to make such presentations and eager to learn new things so I don't think we need all this prizes and pushed in order to get us to do it. As for the small things that we encounter in out day to day work we also share among team members in code reviews and daily meetings. The objective of the 30-60 minutes session is to enrich our knowledge (the presenter's as well as the attendees) with new materials/concepts that we dot not know/apply. –  Itay Oct 13 '10 at 10:16
    
@xsl, nice comment. Glad to hear that there are such companies like yours... I've tried to inculcate the habit of the same meetings in a company I'm working for but I had no luck. After three of my 30-40 minutes speeches with lots of samples we stopped this practice. No one except me wants to make own "presentations" on arbitrary topic. Isn't it sad? –  keykeeper Mar 2 '12 at 21:29
add comment

How about an introduction to functional programming? You could talk about:

  • what functional programming is
  • introduce F#
  • show how to do functional programming in C#.

A good book in this area is Real World Functional Programming: With Examples in F# and C#. There is a good presentation about functional programming in C# on InfoQ: Functional Programming with a Mainstream Language

share|improve this answer
    
Thanks :) I will look into that –  Itay Oct 13 '10 at 9:27
    
I would recommend not only F# but Nemerle also. Take a look on it. This language combines many approaches including functional programming. –  keykeeper Mar 2 '12 at 21:18
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.