Microsoft, Which I Hate and Which I Love

Ok, I’ll admit, I got issues with some of the past Microsoft ethical breaches of business dealings. Sure, but who doesn’t? Their technology that they develop ranges from complete crap (re: Bob, paperclip, sealed classes, The 1st X version of Entity Framework) all the way to the completely awesome amazing stuff, like the Node.js SDK & work with Windows Azure for Node.js, Visual Studio can be amazing sometimes too, and there are other things that are really solid pieces of software.

So here’s my happy list and shit list of Microsoft Software:

Happy List

  • Visual Studio – When it works, after it takes 20 seconds to launch and you finally get the bloody project open, it’s a great IDE.
  • Live Writer – For blogging, nothing holds a candle to this product. It is spectacular, I wish it ran on OS-X because then I’d still use it. Even with all its greatness, it’s not enough of a motivating factor to use Windows as my core native OS.
  • Web API – This should have been attempt #1. Instead of the catastrophic mistake they made in WCF. (see below for WCF comments)
  • C# – C# is actually a great language and I find that it is very similar, but in many ways knocks the socks off of Java. Especially in ease of use for a number of things. Which of course is in conjunction with Visual Studio, etc.
  • Sketchflow – This is a great post paper prototyping software package. I don’t know many that use it, but for creating a working prototype or mock up, this software is great.
  • Windows Phone 7 – This is actually not a bad OS for a phone. It is a drastic improvement over all the previous MS phone operating systems.
  • Metro – I actually like Metro. It is simple, I feel like I’m 5 years old when I use it and I think in the same vein of what Apple has perfected, it’s just enough for the average computer user to make the tablet leap. It could be truly big.
  • XBox – Nuff’ said. Xbox kicks ass on massive scale!  🙂
  • Windows Azure – Primarily around the node.js space. They’ve done a stellar job and have an absolutely amazing product there.
  • MSDN – This is one of the best developer spaces around. MS devs often complain about it, but really the alternatives are weak and few between.
  • ASP.NET MVC – Rails envy brought to focus in a good, solid, organized and nicely put together product.

Angry List

  • Vista – Nuff’ said.
  • Win ME – Nuff’ said.
  • Most of Windows – Nuff’ said.
  • Stability, speed, launching, and related software issues that Visual Studio, Windows, and almost every Microsoft package has compared to the responsiveness of OS-X and general *nix operating systems.
  • Metro on Windows 8 – As a power user, I already hate Metro. Microsoft is about 6 years behind in the phone and tablet wars and it shows. As a power user I’ll admit, iOS isn’t much better or worse, but the thing is it is relegated to the iPad and iPhone (iPod). Windows 8 is going to be on everything. On a tablet I don’t want a flaky desktop tainting my experience and when I’m trying to do development on a desktop I don’t want a wierdo start button replacement screen buggering up my desktop work. Generally, so far, I’m not really happy with it or seeing how it is going to speed up any of my work or help me be more productive except in surfing Facebook or Tweeting. Somehow, that doesn’t seem all that important.
  • Windows Azure – For infrastructure, and almost everything else besides node.js stuff, it’s still a catastrophic mess. It looks absolutely great, but I would still struggle to suggest someone use it for all but node.js deployment. No offense, it’s just not in a space yet that works for most of the companies I work for. It might get there, but at this point I still find a lot of frustrating points.
  • Biztalk – Nuff’ said. It’s absurd anyone pays for this.
  • Sharepoint – I get the usage, I still hate the package. There are vastly superior alternatives out there.
  • WCF, Entity Framework and every other piece of software Microsoft made almost impossible to write unit tests for. All while throwing up a middle finger and screwing over their actual developer community. Many of these offerings did not have good results in the end. Hopefully developers are able to generally ignore the versions that were horrible and just use things like code first EF or Web API now instead of the previous years version of WCF & EF.
  • Windows Server – I’m not sure this server even now, understand how to interact with the Internet, HTTP, TCP/IP or a number of other Internet related elements well. It does it, but at the core there are a lot of problems still.
  • Hyper-V – Not sure I should even get started. Microsoft ignores it for years, then builds a cloud on top of it and pretends it is Enterprise ready. Knowing full well that it is probably the worst virtualization solution on the market today. Machine management is bad, launch time is bad, setting up images is ridiculous and the list of problems only grows. Anyone using this product is extending 2-5x more resources than using a comparable OSS or VMware virtualization product.

Software I’m indifferent about…  i.e. software that is ‘aight’ and I could go either way on.

  • SQL Server

There isn’t that much I’m apathetic about. I’m usually either stoked by their product or horrified about it. Any other key software I’ve missed? How do you feel about this list of software? Got a happy list or shit list of your own? Post a blog entry on it and I’ll add a link back on my entry to yours – just leave a comment (or link back of your own).

UPDATED:  Here’s another entry of some MAJOR issues that found in Windows 8. They’re some pretty dangerous gotchas!

My Current Windows Development Machine Software Stack

I recently did a clean install of Windows 7 64-bit.  It had been a really long time since I listed the current tools, SDKs, and frameworks that I’ve been using.  Thus here’s my entourage of software that I use on a regular basis that is installed on my primary development machines.

Basic Software & System OS

Administration Utilities

Themes & Such

In addition to these packages of software another as important, if not more important to my day-to-day software development includes these software services and cloud hosting services.

SaaS, PaaS, and IaaS

Software I will be adding to the stack within the next few days, weeks, and months.

Top Tier, A-Game Talent – How to Land em’

Recently the question came up from a close friend of mine, “will my PhD help me attain a higher income in the north west?”  I had to tell him, that it might get him a little more, but it won’t get him in the top income brackets for the occupation.  Another time, a few days later, someone else asked this too.  Then again, I see a job posting that requires a Bachelors Degree and some other nonsense.  The job posting even states they want “A-Game” talent.

I am almost shocked at how poorly part of this industry doesn’t realize how unimportant a degree (bachelor, doctorate, etc) is to getting real top tier, a-game talent.  (and yes, I get a little riled up about this matter)

You Can’t Make Good Software Developers.  No college out there is going to train someone to be in the top 10%, and absolutely not to be in the top 5% of skill levels.  Colleges can NOT do this.  It is up to the individual, and the individual alone.  If top tier talent seems to come from a college, one should check their premise and look at the motivations the individuals have to go to that school.  There is most likely a reason that top tier talent appears to be made there.  The college however, can only guide or assist, but I repeat that “top tier talent is a very individualistic endeavor“.

Some might say, well a group is needed, support is needed, this and that are needed.  True, an individual needs a support system and a college can provide that, but it generally ends there.  The support group helps, provides a sounding wall, and provides correlation to good ideas for the a-game top tier geek.  But again, the endeavor is the individuals desire.

top tier talent is a very individualistic endeavor – Me

Hiring Top Tier, A-Game Talent

There are a few things when trying to hire this level of game player.

  1. The first thing is to not require a degree of any sort.  Sure, it looks good, but it won’t dictate anything other than the individual was able to go through the regimented steps of college.
  2. List the skills and ideas that you would like to find in an individual.  Think of two people meeting for the first time, what do you want to know about the other individual.  Team fit is absolutely fundamental for top tier talent.  That support group that I mentioned above, top tier talent works best with a solid group of players.
  3. Keep your technology up to date, moving forward, and don’t bore your top talent if you manage to get it.  If the company slows down, they will leave.  The more valuable they find out they are, the lower tolerance they’ll have for this.  For managers, directors, and leaders in an organization this is THE challenge for them.
  4. Provide opportunities not just for advancement, but ways for them to advance their knowledge such as training, a book budget, or other means.  Even if some software they want to use isn’t used ton the project, get it for them (within reason of course ? couple $100 or even a few $1000 for a good software license to MSDN, Tellerik, or other suite of software is ideal).
  5. Don’t push them to, and don’t let them overwork themselves into burnout.  This, as a leader in an organization is easy to do if one finds themselves actually hiring top talent.  Because top talent just provides results and more results.  But they are human, they will break, don’t be the cause of that or you’ll lose your talent.

For now, that is it from me on this topic, back to the revenue, code, projects, and pushing things forward.