Welcome to AspAdvice Sign in | Join | Help

Oren joins the 'MS losing the Alpha Geeks' debate

 

Scott started it ... then Oren replied ... and I'm bored so I thought I would reply :)

 

To be honest .. I don't think MS is listening to the BIG companies, so much as it is busy trying to attract the LAMP brigades ...

Switching to MS development isn't easy from a LAMP background, and a *large* percentage of LAMP developers are the junior / school / home user types that are just beginning development. LAMP is basically free ... and that attracts people who just want to learn.

Making MS development free (think VS express versions, C# and .NET, Silverlight, Popfly) and simple drag and drop (ASP.NET, particularly .NET 2.0 things like ObjectDataSource) makes it very easy to get into.

And we all know that a percentage of those developers will go on to become development professionals, and will tend to champion whichever development system they grew up on - so for MS it is a way of securing their future userbase.


Personally - I think ASP.NET 1.1 was pretty damn good, but ASP.NET 2.0 really was almost a retrograde step - rather than streamlining things and making better ways of doing thigs (like they did from C#1.0 to C#2.0), they just seem to want to make it far more drag and drop and hide far more of the real code behind the scenes. And that is a mistake ... becasue if you don;t know how horribly ObjectDataSource is doing it's work behind the scenes, how can you possibly know where your performance problems lie, or how to fix them ...

 

But ... is MS losing the Alpha Geeks?  I think Alpha Geeks always want to be pushing the envelope, and MS is about the here and now stuff ...

I think MS has some killer products on the way, Silverlight is so far the Flash killer application, and Popfly could be a killer application of it's own ... perhaps MS is just looking away from the Alpha Geeks and to the average Joe Internet User for a while ...

Windsor Container examples and tutorials

Windsor Container is one of my favourite 'tools' - it makes Inversion of Control just that bit easier, and IoC (or Dependency Injection depending on your latest buzzword manual) is just something that all well designed software should attempt to do properly.

I just came across some superb tutorials on the subject, linked to indirectly from the great Castle blog - you can read them here

Posted by Insane | 1 Comments
Filed under: , , ,

The future is Virtual

Well at least a large part of it is. Microsoft have Virtualisation (sorry I'm English, it is spelled with an 's' ;)) firmly at the centre of their future as you can read here

 

 

Posted by Insane | (Comments Off)
Filed under:

Pair Programming

Pair programming evokes almost as much controversy as Macs vs PCs and Windows vs Linux ... some people love it, some hate it, most don't understand it or have never tried it.

Naresh Jain has a very well though out post on his blog explaining a lot of the aspects to consider.

Personally, I find that having someone sitting on my shoulder helps me to focus, gives me someone to immediately bounce ideas off, gives a second brain to interrupt me when I'm going wildly off the tracks, and generally keeps me from flights of fancy.

In fact I can't really see a disadvantage of pair programming, other than I do tend to avoid surfing and blog posting when I am being watched - which may be bad for me, but is much better for my client :)

 

Posted by Insane | 2 Comments
Filed under:

Further Technical Interview Questions

Name the four core principles of an Object Oriented Programming language

This opener will immediately gauge the real world experience somebody has.

Even if you are self taught, you really should know all four off the top of your head, and even if you pull a blank, as soon as the interviewer names one of them you should be able to explain it.

Not only that, but I would personally be looking for you to explain the principle in under 2 sentences.

So...

  1. Abstraction
  2. Encapsulation
  3. Inheritance
  4. Polymorphism

Sometimes I get told 'overloading' or 'multiple inheriatnce' - and while it is true these appear in some OO languages, they are far from core principles. But at least a wrong answer can promote debate, and that is almost as valuable as a right answer.

Posted by Insane | 1 Comments
Filed under: , ,

Just got used to .NET 3.0? Well 3.5 is nearly here...

It is almost upon us... .NET 3.5 looms larger on the horizon, and so we can all start palying around with it, Visual Studio codename "Orcas" March 2007 CTP has been released,  Paul Andrew explain in more detail (as you can find on blogs by Matt Winklers and Somasegars )

Just getting used to 2.0 or 3.0 ?  Things seem to move so fast with Microsoft and .NET these days that every project is on a new version of .NET.

I guess the aspect of 3.5 we are all looking forward to is LINQ. I'm still pretty undecided, is it a good idea to have data so tightly integrated into the codebase? The aspects of LINQ that deal with in memory stuff is really cool, and the demos I have seen on the SQL LINQ stuff is pretty damn impressive, but I have this niggling feeling it can't be doing it anywhere near the most efficient way.

I look forward to 3.5 and LINQ getting much better, and maybe that decision between ADO.NET and an ORM tool might be fading into history.

 

 

Posted by Insane | (Comments Off)
Filed under: , ,

Another "killer" Interview Question

"Can you tell me some of the development blogs you regularly read, and why you think they are of value?"

If someone names the 'gurus' or 'glitterati' of the development blogshphere, it is damn likely they are also a good developer. IF (like most people I ask), they never read blogs, and can't tell me who the key people in development are, it's damn likely they suck.

 

February 2007 CTP of Enterprise Library 3.0 Released

The February 2007 CTP of Enterprise Library 3.0 has been released, according to Tom Hollander this is the last version before the release in about a month. It has a fair few interesting additions which Tom explains in more detail.

I've always been torn about the Enterprise Library stuff. Some of it is very useful, some of it is superb, and some of it I always just wonder 'why?'

I'm currently using it as the client would like the data access done with the library, but at the back of my mind I know the application I am writing is far more suited to an ORM tool like ActiveRecord or LLBLGen - every time I reach another pain in the backside point of dealing with DataSets and ADO.NET I long for a decent ORM tool.

 

Then of course, whenever I'm on a project where I get to use an ORM tool, I long for a decent ADO.NET datalayer when the ORM makes me start writing code that is chatty enough to talk for England.

I guess I'll just keep on doing it however works. There must be a better way though!

 

Posted by Insane | 1 Comments
Filed under: , , ,

"When I hire someone, I'm looking for them to be tall"

What a piece of genius from Scott Hanselman:

Here's the deal, when I hire someone, I'm looking for them to be tall. A boss told me once that he just wanted his programmers to be tall, because when you're putting together a basketball team, you have to remember that you can't teach height.

Read the full post

Interview Questions

Why is it that when I have interviewed people for developer positions, they can't answer the most basic of questions?

Inspired by a blog elsewhere by Jeff Atwood I thought I would list a few of my basic interview questions on C# and .NET ... he advocates a simple FizzBuzz test, which is as good a basic test as any when facing the interviewee, but over the telephone I like to start with a few of the following:

1) In C# can you tell me the differences between an Interface and an Abstract class?

2) Why can't a .NET DateTime be null?

3) What is a strongly typed collection?

Now, no offence to you if you don't know the answers, but those are REALLY easy questions to answer. To make it worse, most interviewees I speak to can't answer any of them. To make it doubly worse, the great majority of recruitment agents (usually enquiring why their candidate got a 'no') managed to answer at least a few of them adequately.

 

Posted by Insane | 2 Comments

How to Sort a in a Custom Order

More than once I have needed to sort items according to some arbitary sort criteria, for example to sort a list of  status codes. They can't be logically sorted alphabetically, so I wrote these routines.

In the example, it is a string list, but it could be any object with a bit of modification. Essentially this uses a Comparer, which uses the position within the SortString to decide on the order of the items. Nice and simple.

List<string> MyList = new List<string>();
MyList.Add("OK");
MyList.Add("Failed");
MyList.Add("Stopped");
MyList.Add("Beginning");
SortStringList(MyList, "Beginning;OK;Failed;Stopped;");
        private void SortStringList(List<string> list, string sortString)
        {
            if (string.IsNullOrEmpty(SortDirection))
                list.Sort(new StringListComparer(sortString));
            else
            {
                StringListComparer.SortDirection direction;
                try
                {
                    direction =
                        (StringListComparer.SortDirection)
                        Enum.Parse((typeof(StringListComparer.SortDirection)), SortDirection);
                    list.Sort(new StringListComparer(sortString, direction));
                }
                catch(ArgumentException ex)
                {
                    throw new ArgumentException(
                        string.Format("An attempt was made to parse the 
SortDirection key ('{0}')
which did not evaluate
to a known value
", SortDirection), ex); } } }
    public class StringListComparer : IComparer<string>
    {
        public enum SortDirection
        {
            Ascending,
            Descending
        }

        private SortDirection _sortDirection;
        private string _sortString;

        public StringListComparer(string sortString)
            : this(sortString, SortDirection.Ascending)
        {
            
        }
        
        public StringListComparer(string sortString, SortDirection direction)
        {
            if (sortString == null)
                _sortString = string.Empty;
            else
                _sortString = sortString;

            _sortDirection = direction;
        }

        public int Compare(string x, string y)
        {
            if (x == null || y == null)
                return EvaluateForNullStrings(x, y);
            else
                return EvaluateForNonNullStrings(x, y);
        }

        private int EvaluateForNonNullStrings(string x, string y)
        {
            int indexOfX = _sortString.IndexOf(x) + 1;
            int indexOfY = _sortString.IndexOf(y) + 1;

            if (indexOfX == 0 && indexOfY != 0)
                return (_sortDirection == SortDirection.Ascending) ? -1 : 1;
            else if (indexOfX != 0 && indexOfY == 0)
                return (_sortDirection == SortDirection.Ascending) ? 1 : -1;
            else
                return (_sortDirection == SortDirection.Ascending)
                           ?
                       indexOfX.CompareTo(indexOfY)
                           :
                       indexOfY.CompareTo(indexOfX);
        }

        private int EvaluateForNullStrings(string x, string y)
        {
            if (x == null && y != null)
            {
                return (_sortDirection == SortDirection.Ascending) ? -1 : 1;
            }
            else if (x != null && y == null)
            {
                return (_sortDirection == SortDirection.Ascending) ? 1 : -1;
            }

            return 0;
        }
    }
Posted by Insane | (Comments Off)
Filed under: , ,

My first useful post

Tip for the day ...

 When putting your settings into web.config, try to fully qualify keys that you use in shared areas such as appSettings. For example instead of:

<appSettings>
            <add key="ServicesTitle" value="My application" />
</appSettings>

Use:

<appSettings>
            <add key="Applications.SystemMonitor.Services.Title" value="My application" />
</appSettings>

 Why? Well it makes it much easier to read the config file and know what the value is used for, it makes it much easier to add new values, and makes it much more likely your application can sit alongside and share the web.config file with code that others have written.

 

 

Posted by Insane | (Comments Off)
Filed under: , ,

Cowboys are alive and well... in development positions!

I'm really not sure why I am in this business.

I take pride in my work, I try to always do a professional job. But I am in an industry that makes the building game look positively highly skilled.

In the old days, cowboy builders would turn up, do a rotten job, demand lots of money, and after all that... you would still have to hire a new builder to come in a fix the screw up the first lot made.

These days, those people are called 'Developers' (or in the case of the really bad ones, they are called 'Architects', 'Senior Developers', or 'Senior Systems Oriented Architecture Specialists' or some such trendy job title).

Last year I must have done significantly over 100 technical interviews, probably closer to 200, to hire developers of all levels. Initially it was to hire developers at an architect level (in my book that means you should know your onions, inside and out). After that company decided it couldn't hire anyone of that level, they dropped the requirements to just ask for 'good developers'.

Of the people I interviewed, almost nobody got even the most basic questions correct. Now these weren't hard questions. They were the technical equivalent of asking a carpenter if he knew which way around to hold a saw.

Time after time, candidate after candidate, they answered incorrectly, got confused, claimed the questions were too hard, or just went blank. If I had been paying the salaries, most wouldn't have qualified for a Junior Developer With Responsibility For Making Tea position.

To make matters worse, almost all these people had exemplary CVs, listing far higher skill levels than mine, and had career histories at prestigious clients, working on 'serious' projects. And almost without exception - their CVs must have been fictional works, or else their previous employers really didn't care that they had employed complete numptys.

So why do I bother ... I sometimes wonder! 

 

 

Posted by Insane | 2 Comments
Filed under: ,
More Posts « Previous page