Friday, 23 January 2009

Do you want to get a job as quickly as possible? Then, learn from my experience.

2 forces can provide you job; one is from your active hunting (AH) and the other is from your passive hunting (PH).

You should understand these 2 forces and use all the techniques at the same time.

Passive hunting has a great power; you allow others to find you instead of applying for a specific job.

Active hunting means you find where job is advertised and you apply for it.

Pattern - Let people know (PH)

Word of mouth has a great power. Just let people know you're available.

Change your status to "I am available for work" on professional networks such as LinkedIn. That sentence is better than "I am looking for a job" because by "I am available..." you create a picture in other people's mind that you are an opportunity.

Allow all your professional friends and colleagues know about it. Use your network and networks of your networks e.g. previous colleagues, professional friends ...

Pattern - Post your CV to job search sites (PH)

Post your CV on job search sites such as Monster, JobServe and CWJobs. Agenceis and Companies will find you themselves.

Pattern - Create a new discussion / entry in User Groups (PH)

Fine some user groups such as London .NET User Group, Senior .NET Developer group on LinkedIn

Post entries and create new discussions about your availability and your expertise

Pattern - Join Events and Groups (PH and AH)

Join professional user groups in your area such as ALT.NET and read their posts and discussion boards. People post the available positions they know in these user groups.

Join professional networking sites such as LinkedIn

Build up, maintain and expand your network.

Pattern - Direct Approach (AH)

Maybe the best way to get an IT job with Microsoft technologies is to approach Microsoft Gold Partners and Microsoft Partners in your area yourself.

In this way, you will have much more chance to get what you want and the Company will be happier because they don't have to pay to agencies.

Avoid sending email to info@companyname.com. This means "automated deletion" most often! Find a person inside the company, find his email address and send a short personal email about your availability.

You should create a database to keep record of all your conversations with people inside the Company. Otherwise, suddenly you see you have sent emails to tens of people and you can't control it any more. I created an Access database with 2 tables; Companies and Contacts to record all the conversations and emails :D

Once you do this, you will have the database which is very valuable for future reference as well. There are about 1000 Microsoft partners in only 10 miles of my home!

Don't send email to 2 people inside one company at the same time. Wait for at least 1 week if you want to find another person inside the Company. In the meantime, you can try other Companies.

Who to approach? Managing Director, Development Manager, Program Manager

Anti-pattern - Going through agencies for permanent roles (AH)

Applying for jobs advertised by agencies for permanent roles is not a very good pattern because:

Companies prefer avoiding them because they charge them a lot

Often agencies are experts in wasting time

Too many candidates apply.

Having said that there is no absolute rule in that.

Pattern - Going through agencies for contracts (AH)

It's a good approach to go through agencies for contract jobs; however, if you can find a contract using your network, it's the best.

Build up and maintain relationship with the agencies if you chose to approach them. Don't just click the Apply button!

Anti-Pattern - Paying LinkedIn to let you InMail (AH)

Don't pay for finding the email address of a person in a Company. LinkedIn charges almost $10 for each InMail!

Finding that email address is easier than you think (up to 3 minutes). It's most often has the pattern of .@. - if it didn't work, try other combinations.

Also, you can try Google :D - Search for firstname.familyname@domain.extension, then the samples will appear.

Write scenarios and behaviours of the feature in the Given/When/Then format. You'd need to be good at identifying behaviours/scenarios of a certain feature.

Create your first test fixture and write a test method which tests a behaviour. You write the test to a non-existent Type. You'd need to be good in identifying which classes would need to be created; of course you can refactor later if you have time.

Use Resharper to generate the non-existent class.

Write enough code so that your code compiles

Run the test and see it fails

Write enough production code so that the test of the certain behaviour passes

Paint.NET is a free image and photo editing software for computers that run Windows. It features an intuitive and innovative user interface with support for layers, unlimited undo, special effects, and a wide variety of useful and powerful tools.

Sunday, 4 January 2009

NDepend
NDepend is a tool that simplifies managing a complex .NET code base. Architects and developers can analyze code structure, specify design rules, plan massive refactoring, do effective code reviews and master evolution by comparing different versions of the code.NDoc

NDoc generates class library documentation from .NET assemblies and the XML documentation files..NET Reflector - Must-Have
.NET Reflector enables you to easily view, navigate, and search through, the class hierarchies of .NET assemblies, even if you don't have the code for them. With it, you can decompile and analyze .NET assemblies in C#, Visual Basic, and IL.

Find the Addins for .NET Reflector here; some such as Graph and Class View are very cool.NHibernate

NHibernate is a port of Hibernate Core for Java to the .NET Framework. It handles persisting plain .NET objects to and from an underlying relational database. Given an XML description of your entities and relationships, NHibernate automatically generates SQL for loading and storing the objects. Optionally, you can describe your mapping metadata with attributes in your source code.

NMock is a dynamic mock object library for .NET. Mock objects make it easier to test single components—often single classes—without relying on real implementations of all of the other components. This means we can test just one class, rather than a whole tree of objects, and can pinpoint bugs much more clearly. Mock objects are often used during Test Driven Development.

Spring.NET provides comprehensive infrastructural support for developing enterprise .NET applications. It allows you to remove incidental complexity when using the base class libraries makes best practices, such as test driven development, easy practices.

TestDriven.NET makes it easy to run unit tests with a single click, anywhere in your Visual Studio solutions. It supports all versions of Microsoft Visual Studio and it integrates with the best .NET development tools.

Saturday, 3 January 2009

Design patterns are design solutions for recurring problems in the software development.

It's important to emphasize that it's a design technique more than implementation technique.

Understanding the available design patterns is good (theory) but applying them in a real project needs professional experience and design skills and it's mainly the job of a Solution Architect. Seeing more examples help developing this skill.

To truely understand design patterns, first you should understand what problems they are going to solve so that you can choose them in the real world.