IE Developer is developed by Microsoft which does pretty much the same task.
Monday 26 January 2009
Sunday 25 January 2009
Software Development Design
What is Software Development Design?
It's a process of problem-solving and planning for a software solution.
Approaches?
It's a process of problem-solving and planning for a software solution.
Approaches?
- Domain Driven Design
- Object Oriented Design
- Model Driven Design
- Aspect Oriented Design
- Service Oriented Design
Saturday 24 January 2009
TOP 25 Dangerous Programming Errors
http://www.sans.org/top25errors/#s4
This is the top 25 errors agreed by many Companies and individuals.
This is the top 25 errors agreed by many Companies and individuals.
Friday 23 January 2009
Job Hunting Patterns and Anti-Patterns
It's assumed you have a well-written CV and covering letter.
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.
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.
Find them here. Microsoft jobs here.
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
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.
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.
Thursday 22 January 2009
All About TDD
Best Practices:
- Test Behavior, Not Methods
- Apply the "Too Simple to Break" Rule
- Use Object-Oriented Best Practices In Your Test Cases
- Use Appropriate Method Names
- Don’t Use Try/Catch Blocks to Catch Unexpected Exceptions
- Don’t Rely on Visual Inspection
- Use A Code Coverage Tool
- Use The Appropriate Tool for the Testing Scenario
- Write the test first, then the code.
- Design classes using dependency injection.
- Separate UI code from its behavior using Model-View-Controller or Model-View-Presenter.
- Do not write static methods or classes. Reason: Static methods are difficult or impossible to isolate and Rhino Mocks is unable to mock them.
- Program off interfaces, not classes. Reason: Interfaces can be easily mocked using Rhino Mocks and other mocking frameworks.
- Isolate external dependencies. Reason: Unresolved external dependencies cannot be tested.
- Mark as virtual the methods you intend to mock. Reason: Rhino Mocks is unable to mock non-virtual members.
Tools:
- FITNESSE - Acceptance Testing
- FIT.NET - Acceptance Testing
- Concordion.NET - Acceptance Testing
- SPRING.NET
- Mocking: NMock, RhinoMocks, Typemock
- MbUnit: A unit testing framework - e.g. for database integration test
- NUnit: a simple unit testing framework
- NDbUnit
- WatiN: UI testing
- csUnit
- FXCop: code analysis tool
- NDepend: dependency analysis tool
- NCover
- Story Teller
- xBehave
- Test Runners: TestDriven.NET, Resharper, TeamCity
- HtmlAgilityPack: for HTTP acceptance tests
Process of TDD:
- Receive requirement/feature as a User Story
- 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
- Refactor the production code and test code both.
- Go to 2 and cover more scenarios.
More Info:
Wednesday 21 January 2009
Monday 19 January 2009
Sunday 18 January 2009
Project Management Softwares
PM Softwares often do all or part of the following tasks:
- Project Management
- Collaborative Management
- Issue Tracking
- Project Portfolio Management
- Resource Management
- Document management
SOLID: Best-Practice OOD Principles
S.O.L.I.D. is a collection of best-practice object-oriented design principles that you can apply to your design to accomplish various desirable goals such as:
- Loose/Low Coupling
- Higher Maintainability
- Higher Cohesion
- Single Responsibility Principle
- Open Closed
- Liskov Substitution
- Interface Segregation
- Dependency Inversion
Next
- See code examples of each principle
- Learn what problem each principle resolves
- Learn how each principle is implemented
- Apply these principles in your day to day OOD where applicable
- Share the knowledge
More info:
- A Podcast from Hansel: http://www.hanselminutes.com/default.aspx?showID=163
- Great resource: http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod
- http://www.lostechies.com/blogs/chad_myers/archive/2008/03/07/pablo-s-topic-of-the-month-march-solid-principles.aspx
- Pablo's Ebook about SOLID
Other OOD principles:
Friday 16 January 2009
All about AJAX
AJAX Tutorials:
ASP.NET AJAX
- http://www.asp.net/ajax/
- Download the ASP.NET AJAX Toolkit from CodePlex
- Samples
- Install in Visual Studio
- ASP.NET AJAX Client Library Reference here
Tools:
- Web Development Helper tool for AJAX here
Free Photoshop!
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.
Another online free photoshop: http://www.pixlr.com/editor/
Sunday 11 January 2009
All About Inversion of Control (IOC)
http://www.c-sharpcorner.com/UploadFile/dhananjaycoder/Inversionofcontrol01022009225612PM/Inversionofcontrol.aspx
IoC Containers:
IoC Containers:
Ninject, StructureMap, Unity, Spring.NET, Windsor, Autofac
Microsoft Unity:
- As of today, 2.0 is the latest version.
- Download EL 5.0
- Walkthrough: The Unity StopLight QuickStart
- Walkthrough: The Unity Event Broker Extension QuickStart
- On CodePlex
- API Documentation
Microsoft Windows 7
To get all the information you need for Windows 7, click here.
http://blogs.msdn.com/briankel/archive/2009/01/10/installing-the-windows-7-beta-with-virtual-pc-2007-sp1.aspx
http://blogs.msdn.com/briankel/archive/2009/01/10/installing-the-windows-7-beta-with-virtual-pc-2007-sp1.aspx
Saturday 10 January 2009
Encrypt your Disk
TrueEncrypt is a free open-source disk encryption software for Windows Vista/XP, Mac OS X, and Linux.
Sunday 4 January 2009
.NET Developer Tools
http://msdn.microsoft.com/en-us/magazine/cc300497.aspx
http://msdn.microsoft.com/en-us/magazine/cc300778.aspx
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
http://msdn.microsoft.com/en-us/magazine/cc300778.aspx
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.
.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
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.
NUnit - Must-Have
The must-have productivity tool for Visual Studio, ReSharper 4 provides solution-wide error highlighting on the fly, advanced code completion, superior unit testing tools, over 30 advanced code refactorings, multiple handy navigation and search utilities, single-click code formatting and cleanup, automatic code generation and templates, and a lot more productivity features for C#, VB.NET, ASP.NET, XML, and XAML.
The term "SharePoint" collectively refers to two products:
- Windows SharePoint Services (WSS): platform
- Microsoft Office SharePoint Server (MOSS): aditional services
Spring.NET
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.
Subversion - Must-Have
Subversion is an open source (free) version control system.
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.
Web application and UI testing for .NET.
Saturday 3 January 2009
Design Patterns
Ready to develop your Architecture and Design skills more?
- 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.
- Builder (4 roles: abstract builder + concrete builders + product) : 1, 2, 3
- Prototype (1 role: a class which implements IClonable): 1, 2
- Factory Method (2 roles: abstract product containing the factory method + concrete products): 1, 2
- Abstract Factory (5 roles: product interface + concrete products + factory interface + concrete factories + client has a method to return a product interface and accepting a factory interface): 1, 2, 3, 4
- Singleton (1 role: a class which allows only one object to be created and shared): 1, 2, 3
Structural Patterns:
- Decorator (4 roles: decorator + concrete decorators + component + concrete components): 1, 2, 3
- Adapter (3 roles: Adapter + Adaptee + Target): best article
Behavioral Patterns:
- Strategy (3 roles: strategy interface + concrete strategies + context object which utilizes strategy): 1, 2, 3, 4, 5, 6, 7, 8
- Observer (3 roles: observer interface + concrete observer + subject): 1, 2
To be updated...
Friday 2 January 2009
Thursday 1 January 2009
All About WatiN
It's a very good framework developed with C# to enable developers to automate tests with IE (UI testing).
- Official Site: http://watin.sourceforge.net/
- Getting Started: http://watin.sourceforge.net/gettingstarted.html
- Articles from CodeProject: http://www.codeproject.com/info/search.aspx?artkw=WatiN
Subscribe to:
Posts (Atom)