Wednesday 31 December 2008

To Become an Enterprise Software Architect

Ok, what are the skills required to become a great enterprise software architect?

Skills required:

1) Modelling

A big part of the job of a Software Architect is about modelling. Modelling helps understanding the system from a high level.

Drawing, understanding and communicating the models of the existing or new systems.

Modelling types:
  • Deployment Model
  • Components Model
  • Class Model
  • ...
Best Modelling Tools:
  • Pen and paper
  • Whiteboard
  • Microsoft Visio
  • Sybase PowerDesigner


Learning:

NHibernate and Fluent NHibernate

Fluent NHibernate
NHibernate
Approaches to write queries:
  • Create HQL Query
  • Create Criteria
  • LINQ to NHibernate and Query

Thursday 25 December 2008

Job Agency Lies Revealed

I don't say everybody lies at all but I think we need to be aware that there are some inevitable strategies which are based on dishonesty.

1) Fake Adverts.

Sometimes, you see an advert on a job site such as http://www.jobserve.com/ but it's indeed fake.

It's fake which means that the job doesn't exist really but it is faked to identify the available candidates in the market for their future jobs or to fill in their database.

Can you really identify the fake ones? It's too hard to be honest, so I suggest keep doing what you used to do!

2) Information Extraction

Some agents say they have a job for which I believe you are a very good fit while they don't really have it.

They are after your detailed information, the interviews you have had so far and the interviews you are going to.

The reason they are not honest with you sometimes is that they have a responsibility to fill in their database, also getting information from you helps them know which jobs are really available in the market.

The best strategy I think is to be honest as well as wise and move forward.

3) Fake Tasks

Some tasks which are asked from you to do are fake and do not belong to any project.

Again, I am not saying you shouldn't do the tasks you are given.

General advice:
  • Create rapport with agents and stick to them
  • Be honest and know that nothing is more compelling than honesty.
  • Be courteous and respectful
  • Be wise
  • Remember that Companies will give you the job ultimately not agents (although I believe God provides my job not Companies nor agents).

Wednesday 24 December 2008

All About REST

REST Design Constrains:
  • Web is RESTful because the resources can be accessed using a url. The url itself can be accessed using GET, PUT, POST, DELTE or other verbs over HTTP. As long as a WCF service can be accessed using HTTP protocol over web it is RESTful.
  • Message structure?

More:

http://restpatterns.org/

http://www.slideshare.net/alan.dean/separating-rest-facts-from-fallacies-presentation/

http://delicious.com/alan.dean/rest

http://tech.groups.yahoo.com/group/rest-discuss/

http://simplewebservices.org/

Tuesday 23 December 2008

All about IT Contracting...

http://www.pcg.org.uk/cms/index.php
http://www.contractorcalculator.co.uk/
http://www.contractorcalculator.co.uk/Contractor_News.aspx
http://www.contracteye.co.uk/index.shtml
http://www.contractoruk.com/

ASP.NET Presentation Patterns

Click here to see an article about ASP.NET presentation patterns including MVC and MVP.

MVP:

MVP pattern is best for WinForms, WPF and Silverlight applications.

MVC:

MVC is best for ASP.NET Applications although you can use MVP as well.

MVC#:

Great comparison: http://www.c-sharpcorner.com/UploadFile/shivprasadk/660/Default.aspx

Job Hunting in IT

1. Prepare your CV and covering letter
  • Write your CV and get a professional friend or previous colleague to provide you feedback for improvement
  • Write a general Covering Letter

2. Find an appropriate job advert

  • Find a relevant job advert, know about the advertiser
  • If you can find the final Company from yellowpages for instance, that's great.

3. Apply

  • Apply for the job only by sending an email to the advertiser expressing your interest in the role - don't click the "Apply" button.
  • Suggestion: leave at least half an hour, then call them to check whether they have received your application and what they think (Don't wait until they call you, be proactive)
  • Get the name of the Company, Location and Job Description - it's possible that another agency has sent your application to them, so you need to avoid these jobs. Agencies are responsible to give you these details before sending your application to the client.
  • After reading the JD, confirm with the agent to send your application to the client.
  • If the agent asks you to give them the name of the Companies you have sent your application to, say that it's confidential. Aks them to give you the name of the company they want to send your application to emphasizing that it will remain confidential.
  • Try your best not to let agents send your application to the same client more than once because it will ruin all your applications with that client.
  • Record the important parts of your conversation with the agent, location, company ... in an excel file for further refer.
  • It's good sometimes to ask from the advertiser if they have any useful feedback about your CV to optimize it.
  • Create an excel file and put all the information you have so far got about agents, clients and jobs there. This is an excellent idea and plays an important role to manage your contacts and remembering the history of your calls.

4. Interview

  • Agency will contact you and arrange an interview date with you
  • Before the interview, read about Company, prepare questions you want to ask them, anticipate the Company's questions and practice them
  • Dress professional and attend the interview in advance
  • Sometimes more than 1 person interview you, so be prepared for that
  • Negotiate the role and be confident at all times
  • Be honest but professional

5. Job Offer

The client will contact you and give you a job offer, most often it's a bit less than what you initially asked because they want to feel that they have won the negotiation so if your bottomline is £50k, say £55k. Then negotiate you might get what you have negotiated.

Where to find an IT Job?
1) Your personal and professional network such as

  • Previous colleagues
  • Your professional contacts e.g. from LinkedIn
  • From communities you are member of e.g. http://www.asp.net/

I had a friend who had 13 years of working experience and he said he has always got his jobs through word of mouth and never used any agency, so you can imagine how powerful this method is.

2) It's good to have a register containing list of IT Companies, then to send them an email with your CV and Covering Letter e.g. to ThoughtWorks

This way is better than using job adverts and agencies since Companies themselves prefer to round the agencies because they are costly, but obviously you need to have proper contacts.

I suggest using YellowPages...

3) Online Job Adverts

One good advice is to stick with an agent and try to create rapport. Remember their name. Write a diary of your conversations with them.

The other thing to remember is that untimately Companies are important although through Agencies.

How long does it take?

It depends on many factor including

  • How well your CV is written
  • How well your Covering Letter is written
  • How well you can manage the interviews and create rapports
  • Economic climate
  • Need of your skills
  • And above all LUCK!
But normally the process from writting your CV to starting a job takes about a week to 4 months depending on the situation and how quickly you can learn from your mistakes.

General tips:


  • Be proactive is very very important and it's often the main factor that determines you get your next job in 6 months or 3 weeks!
  • Be self-confident
  • Be unafraid of failure
  • Develop good communication skills
  • Be autodidact and learn from your mistakes

Monday 22 December 2008

NCache and TierDeveloper are now Free!

"NCache is a high performance in-memory object caching solution for mission critical .NET applications with real-time data access needs."

"TierDeveloper is an object to relational mapping (O/R mapping) code generator that lets you develop extremely high performance .NET applications in record time."

TierDeveloper apparently is better than NHibernate because it generates code for you as well.

Click here to download both which are free.

ASP.NET 4.0 on CodePlex

Here, you can find the CodePlex project containing the latest codes and features of ASP.NET 4.0. Having said that ASP.NET 4.0 is not yet released but you can find its core components such as ASP.NET Dynamic Data, ASP.NET Dynamic Language Runtime (DLR)...

When to implement ISerializable interface?

Implementing ISerializable interface enables us to control how an object is serialized. In the other words, we can serialize an object to xml to reprst in the exact format we require.

In web services development, we also sometimes need to have full control over the way an object is serialized and passed over the network.

Have a look at this example.

Sunday 21 December 2008

ASP.NET MVC

Download MVC3: http://www.asp.net/mvc/mvc3

Tutorial, sample codes, webcasts: http://www.asp.net/MVC

Wednesday 17 December 2008

Microsoft TechNet Virtual Labs

I was thinking whether it's possible to work and test technologies without actually installing them on my PC.

I found this, which povides so many interesting virtual labs to learn different technologies such as SQL Server Reporting Services.

Download Visual Studio 2010 CTP

http://www.microsoft.com/downloads/details.aspx?FamilyId=922B4655-93D0-4476-BDA4-94CF5F8D4814&displaylang=en

This download gives you the virtual machine and virtual hard disk, then you will need Virtual PC or Virtual Server to open it.

:)

Tuesday 2 December 2008

JSON

JSON (JavaScript Object Notation) is a lightweight data-interchange format
  • It is easy for humans to read and write.
  • It is easy for machines to parse and generate. 
Example:

XML string:


Same data represented by JSON:

{"menu": { "id": "file", "value": "File", "popup": { "menuitem": [ {"value": "New", "onclick": "CreateNewDoc()"}, {"value": "Open", "onclick": "OpenDoc()"}, {"value": "Close", "onclick": "CloseDoc()"} ] } }}
More Info: