Jakew
Consulting, hacking, and motorcycles

Arg!

Wednesday, 26 November 2008 17:19 by jakew

I didnt post anything yesterday.  I almost didnt post anything today.  The last two weeks have been crazy busy. 

 

Actually, from now until March is going to be crazy.  Somehow we need to stuff about six months of development into four months.

Categories:  
Actions:   E-mail | del.icio.us | Permalink | Comments (0) | Comment RSSRSS comment feed

Value of training

Monday, 24 November 2008 10:39 by jakew

A friend of mine today pointed me to a site for SOA training (http://www.soasystems.com/events179.asp). He seemed a bit upset over the price, it is $700/day for the class (not considering the cost of time off and other stuff). It did seem a bit expensive, and I’m a bit hesitant dropping a bunch of money on SOA training and certification when in my opinion there doesn’t seem to be a lot of agreement what SOA is exactly.

The calculation is pretty simple to me though. If by taking this particular set of classes and getting this certification I can increase my hourly rate and find more gigs then it is a done deal. However, if I’m not going to be able to increase my bill rate why should I spend the money for the certification? I can learn everything being taught in the class through study on my own. There are plenty of books at Barnes and Noble or Amazon on the topic. I can search the Internet to find blogs. I can find forums where people are talking about this stuff.

One difference is that the class has been organized so that in 5 days I can learn all this stuff (the organization is very valuable). However, if I’m willing to save some of the money and take longer I can learn all the same stuff and possibly more through other means. The Internet is chock full of information and Google will help you find it. Amazon has all the books you could possibly read and they’ll even ship them for free. In about a month you could make yourself an expert in SOA.

On aspect of the DIY approach that really appeals to me is that I’d make use of forums and blogs as part of my learning process. First, I’d find a bunch of forums that cover the topic I’m studying and pick one to focus on. I’d also pick a number of blogs that appear to have a clue about what they are talking about and I’d add them to my RSS reader. Then I’d post questions and answer questions in the forum. I’d comment on the blog asking questions. The advantage of doing this is that in the process you will build a network of people and build your own creditability in the area.

The DIY approach won’t give you the certification. However, I have yet to run in to a situation in IT land where a certification was actually needed by an employer or client. To me they aren’t very valuable – they just indicate that you passed some tests, they don’t actually indicate actual ability. To many certifications have been hacked by people doing bootcamps and other training approaches meant to allow people who aren’t actually qualified to get a certification. Look at the Cisco Certified Network Engineer certification. When I got started that things was gold. Now the kid at Starbucks has one.

So bring this around to a close: is paying for training worthwhile: Yes. In many cases trainers can do a better job than the DIY approach b/c they have experience and know what works. For me Guerilla COM was such an experience. I had already been playing with COM for a while before I went to Guerilla COM. My class was taught by Don Box and for me it was a transformative experience. Going to California Super Bike School was also a transformative experience. For me anybody offering technical training is going to be measured against Don Box. Anybody teaching Motorcycle Riding is going to be measured against Keith Code. Both are awesome teachers who are able to connect with their students and make themselves be understood. Unfortunately, not all teachers are able to do this. In fact in many cases you are worse off for the encounter and would have done much better to have spent the time and money teaching yourself. How do you tell the difference? Asking around, looking at the market. AT the time there were others teaching COM but none had anywhere near the reputation of Developmentor. The few people I asked were quite positive about their classes. I’ve run in to a few who did not have great experiences but those have been few and far between. They also came from people whose work I thought was suspect anyway – so their feedback was a sort of endorsement in a way. Same with Keith Code.

One key though – if you a technical person you had better have a training strategy in place. Budgeting time and money to keep you skills sharp is critical to your survival in the market place. In some cases you should pay people to teach you stuff simply because it is faster. For instance, if I was going to start doing SAP I’d pay for a class. I can find everything on the internet, but it would take way too long to get to the point of being marketable.

Other cases call for doing it yourself. Learning WCF really deeply won’t be delivered in a class. Most classes are going to stop well short of what I consider the deep stuff. It takes time to do this and most of the market doesn’t need it. As such you aren’t given much choice, but even so you’ll be better off learning it on your own.

Categories:  
Actions:   E-mail | del.icio.us | Permalink | Comments (0) | Comment RSSRSS comment feed

Looking at the big picture

Friday, 21 November 2008 11:48 by jakew

I just read this: Debt Man Walking.

Well Damn. It sort of reinforces my distrust for large organizations (big business, government, etc). Is there nothing they can’t screw up? Seriously, people with the arrogance and hubris that think they can build huge complicated systems that are going to last hundreds of years – piss me off.

First, these systems don’t last very long. When they come crashing down they usually aren’t the ones who get to belly up to the big bowl of suck they just made. The CEO’s and other people on Wall Street who helped put together the housing bubble aren’t going to get fucked over in this. The Senators and Representatives in congress won’t be thrown out of office for this. The lobbyists won’t be going to jail. Instead people who want nothing more than to have a decent boring life are going to get to have some stomach acid for a while. I really hope that is all – just some sleepless nights.

What will our genius savants come up with next? I guarantee it won’t be any better. Frankly – it will be worse. More government, more regulation, more people with their fingers in the pie.

My advice to people like myself:

1. Spend time with your family. Hopefully they are the main reason you are working the equivalent of 3 jobs. If not, then I really don’t know what to tell you.

2. Get a vision. You are building something for some reason – get real clear about it. I’m not building myself another job. I want a business that will allow me to pursue my pashions.

3. Pay off debt as fast as you can. Don’t worry about saving some for later. You gotta make it to later in order for their to be a later and if you are carrying debt around there won’t be a later

4. Do it yourself. Looking for some VC *** to fund businesses is one of the things that brought us here. Start small, think long term; build something that will last more than 3 years.

5. Keep your friends close. Help your friends build their dreams too. I have friends doing their own thing. I help when and how I can when asked. I don’t expect them to pay. In return they help me out. It’s fun seeing your friends kicking ass and it will inspire you to kick some ass too.

6. There are no short cuts. no get rich quick scheme is going to work. When things get dicey the sharks show up. They offer the weak all sorts of promises for cheap. “Buy my $99 course and I’ll show you how to sell Viagra online and make $10,000 dollars a week!”. It aint that easy and their courses don’t really tell you everything. I know – I’ve gotten to see a lot of them in my research.

7. Try to have some fun. At this point nobody is shooting people. It’s all abstract records in a database. There isn’t enough gold in the world to exchange for the money supposedly being destroyed. None of it ever existed anyway. To a degree that is what this is all about – those houses were not worth what they were sold for, the loans aren’t actually worth what they were written for, the stocks are actually worth what they were being traded for. Its all a bunch of crap. If nobody is being physically harmed – so what? Have fun, build something cool and valuable.

Categories:  
Actions:   E-mail | del.icio.us | Permalink | Comments (0) | Comment RSSRSS comment feed

It’s all mechanical

Thursday, 20 November 2008 08:10 by jakew

The Speculist has an article up titled “All In”. It talks about poker and how computers are beginning to be able be able to beat humans at Poker. At one time somebody somewhere thought that when computers began beating people at poker that would be the indication that computers are becoming intelligent.

It wasn’t very long ago though when Chess was the big deal. At least until Big Blue came along and beat that Russian chess master. Then all of a sudden the goal posts got picked up and move somewhere else. Apparently a computer beating people at Chess is only natural once chess is reduced to a mechanical process. So now once again we the goal post moving brigade is springing in to action to once again move the goal posts. Apparently Poker is also a mechanical process too.

So what exactly is the difference between a mechanical process and intelligence? Perhaps the ability to lie, distort, cheat and be generally dishonest is the difference. If true it’s a bit sad. Or perhaps intelligence really isn’t all that special. Perhaps what we call intelligence is just a whole lot of different mechanical processes that get swapped back and forth.

Either way, maybe I need to build a better poker bot and go make some money online.

Categories:  
Actions:   E-mail | del.icio.us | Permalink | Comments (0) | Comment RSSRSS comment feed

Code Generation, T4 and CodeSmith

Wednesday, 19 November 2008 09:27 by jakew

Last year I did a presentation about Visual Studio’s templates where I demonstrated how to create templates for projects and project items. I also demonstrated how to create a custom wizard that Visual Studio will execute when your template is run. At the time I tried to host T4 in my wizard so I could create some really kick ass templates. Unfortunately, at the time I couldn’t make it work.

Recently, while messing around with CodeSmith I learned that T4 is now more exposed in Visual Studio so it is a bit easier to use. You can just add a file to a project and give it a ‘tt’ extension and VisualStudio will use its T4 engine to expand your template everytime you make make a change and save. Scott Hanselman has a great article that provides an excellent starting point for learning about T4. Scott’s post points to a lot of material published by Oleg Sych who seems to be quite the T4 hero.

As it happens I have CodeSmith pro so I have a choice available to me: Use CodeSmith Projects or use T4 files. CodeSmith Projects can generate multiple outputs from a single template. T4 is part of Visual Studio 2008. For things that need to be regenerated regularly have a CSP or T4 file in a project is pretty cool. Everytime you build or make a change the template runs.

Neither of these solutions address my original effort: Have an easy way to generate 1 time templates via Visual Studio’s add dialogs. There are a number of project artifacts that only need to be generated once. In some cases it is only one time for the entire duration of a project. In other cases every time you add a new item to your project you need something to happen.

Further, we don’t always need code to be generated every time. Sometimes, there are some administrative tasks that need to be performed in response to adding this new item to a project. The point is that this infrastructure partially exists. I’ve just not had time to go back and figure out why my original host failed to work.

If I get time this weekend I might spend some time playing around to figure out what happened. However, today I’m aware of several choices available to me. Instead of using T4 I can use some of the open source generators. I’d be happy to use CodeSmith’s engine but the licensing terms are prohibitive.

In regard to my original sample, knowing me – it’s a simple syntax error in the template I’m testing with and the host and VS integration work just fine.

Categories:  
Actions:   E-mail | del.icio.us | Permalink | Comments (0) | Comment RSSRSS comment feed

Tongue Biting

Tuesday, 18 November 2008 07:37 by jakew

New project.  You walk in the door, they are past the early phases and have a large body of code already done.  It is already in production.  Sure it has problems, but it's software and it mostly works.  Your job is to make some modifications and integrate in a few other systems. 

Code is simply a representation of how the author is thinking about a problem.  There is no magic to it.  It's just a thought expressed in a fashion that can be executed by a machine.  All the best practices and everything else are nothing but other people's thoughts about other problems.  sometimes the thoughts are useful.  Often times they aren't.  Or they don't apply because they really arent best practices.  They just have a better marketing department.

As you seplunk your way through the project you quickly note that they aren't thinking about the problem the way you would.  In fact, you develop a fairly negative opinion about the code you are working with and this leaves you in a quandry.  Do you say anything?  Is it just you?

Obviously being a good consultant you slog through and complete your task.  But being a consultant should mean more than just slapping down working code and moving on.  You take pride in kicking ass.  You spend a ton of time learning new stuff so you can get even better.  You like to leave your clients better off than you found them.  So what to do?  You're pretty sure that your spidey senses aren't decieving you.  The code really is wrong (wrong as in not written 'correctly' not as in not working) and could be done better.  How do you tackle the problem?

Carefully.  Ever been out around other people with kids?  Ever been around when those kids are acting like hellions?  What did you do?  Did you tell their parents?  How did that work for you?

As I already said: there is nothing magical about code.  At least not to me.  But if you want an arguement that goes no where; go tell the author of a program that he could have done it better and then try to explain how. 

The reason you are in a quandy is because your spidey senses are working just fine.  They're telling you the code is wrong and that the author and culture aren't going to listen to you.  If you are in a learning culture your spidey senses would have sent a different signal.  Actually, you probably wouldnt have come across the problem in the first place.  Sure they would have thought about the code differently (which is good and as it should be) but it would have been refactored, unit tested and cleaned up leaving you to just do your task.

sucks don't it?

Categories:  
Actions:   E-mail | del.icio.us | Permalink | Comments (0) | Comment RSSRSS comment feed

The Mediocre calling the kettle black

Monday, 17 November 2008 08:31 by jakew

I just read The Agile Disease and can’t help but chuckle. I love it when people paint with nice big broad brushes point at those ‘other’ people and then apply nice labels to them. I’ll be sure to let my clients know that they are ‘Mediocre’. Suppose I’m mediocre too sense I work in the IT world and don’t live in the ivory tower of product land.

Thanks much douche bag.

Other than that – yeah – you got a point. We’ve created an entire ecosystem around ‘progress’ some of the progress is real, some of it is for show. However we have a problem that nobody, and I really mean nobody wants to go away: as long as people (humans w/ human brains) are involved in business, IT, and decision making we are going to have these cycles.  Some times the results are real forward progress.  Often the cycles just throw garbage up in the air.  However, the positive side affect either way is that new opportunities are created.  Otherwise we'd still be stuck with punch cards and COBOL.

I’m sure game developers write great code that ships on time and goes out the door with 0 defects. That is why I can walk through walls and float in the air in Halo3 and some other FPS games. Whatever.

I completely agree that the process by which you hire FTEs, bring on contractors and consultants is critical and more important than the actual processes used. However, good luck getting people to hang around long if you are as arrogant and condescending as people like Mr. Halliwell. Perhaps this is why Joe Spolsky is interviewing so often – I can get past his interview – I just wouldn’t want to hang out at his shop very long.

Anyway – perhaps some humility and more human personality and less arrogance would make the point better.

Categories:  
Actions:   E-mail | del.icio.us | Permalink | Comments (0) | Comment RSSRSS comment feed

Write code to be tested!

Monday, 17 November 2008 07:38 by jakew

When  you are developing your code, write in a fashion that makes it very easy to test. Meaning that a n00b to your project should be able to get the project out of subversion open it up in Visual Studio and hit F5.  The NUnit Window should come up and when the tests are run they should all pass.  It should be that easy to get started.

When the n00b goes to add new features or fix bugs adding unit tests should not require any elaborate additional work in order to get the test added to the suite.  Just go in lay down the unit tests and hit F5 again and so on.

This is simply an application of "Do the simplest thing first".  Failure to abide by this will lead to being the owner of a pile of crap.  By making things difficult for the n00b, and everybody else, eventually they will break the overall pattern and style of the project making the code become brittle.  Further, they will quit writing unit tests and won't run existing unit tests. In a very short amount of time the effort to get the unit tests running again will seem equal to the effort to just ship the product. 

Go ahead and try to make the argument about other people being disciplined about adding unit tests.  To which my response is: yeah - be disciplined and make things easier for other people.  Expecting other people to change their behavior to suit you is typically not a winning strategy.

Seriously - make it easy for other people to test your code.  It will pay you back in huge dividends in the long run.

Categories:  
Actions:   E-mail | del.icio.us | Permalink | Comments (0) | Comment RSSRSS comment feed

Traveling Headhunters!

Friday, 14 November 2008 08:27 by jakew

I’m writing a book about how to be a successful IT Consultant/Contractor. One of the strategies I recommend to people is using recruiters to keep you billable. So you can imagine my initial reaction when I saw Bruce Eckell’s “The Demise of the Headhunter” blog post.

Personally, I think he is wrong and I think there is plenty of evidence to support my opinion. There is also the important aspect of talking about very different things. I’m talking about consulting projects where there is constant turn over. He is talking about ‘permanent full time’ employment (something that I don’t believe actually exists anymore – a reason for my book).

The role a recruiter plays in the IT industry is pretty important. Hiring managers don’t have a lot of time to spend networking with developers, When they need developers for a project they need them now. Even if they have an extensive network there is a good chance that the first two levels won’t be available when needed.

From the contractors POV the recruiter and staffing agency also play an important role. First, a good recruiter will know when you are going to be available and will already be lining things up so you’ll simply go from one gig to the next without much fuss. Second, they pay you. I’ve been burned by clients before and it sucks. It is one thing to get screwed on a side project when your main pay check is secure, it is completely different when you are counting on that money to pay the bills. Even with a good direct client you are likely to have to wait up to 60 days before you get your first check. When you go completely free lance you have to take on a lot of stuff. Using a staff agency and a recruiter (or a whole army of them) can help mitigate risks.

Where Bruce does have a point is that hiring managers are contractors are getting smarter. Hiring managers don’t want to be spammed with resumes. They want two are three top picks. They expect the recruiter to filter out the garbage and only provide the cream.

On the other end I seriously don’t want to be spammed with gigs. Emails and phone calls about exciting opportunities won’t be returned. I do .NET, so why are you sending me stuff about projects needing a JAVA architect? I live in Dallas, why are you telling me about a gig in Minnesota? Did you actually read my resume or do I just happen to be in your mailing list? The result is that I have a collection of recruiters that I actually talk to and work with. I tell them when I’m going to be available and they take care of the rest.

So specifically why Headhunters are going to be going away anytime soon is the value they really do provide. Bruce compares recruiters to travel agents. I really think that comparison was a poor choice. The value of a recruiter is their network. They know people and connect them together. They also provide business services to the contractors which help make sure the contractor gets paid on time.

Until mainframes start disappearing I wouldn’t expect to see recruiters going away.

Categories:  
Actions:   E-mail | del.icio.us | Permalink | Comments (0) | Comment RSSRSS comment feed

Spark!

Thursday, 13 November 2008 20:52 by jakew

Don’t recall who told me about Microsoft’s BizSpark program but OMFG! If like me you are having feverish fantastic dreams of starting your own software company – Microsoft is bending over backwards to give you no excuse to at least take a flying leap at it. Seriously – go check it out: www.microsoft.com/bizspark.

How friggin cool is this? (links to a PDF document describing program)

My one huge disappointment is that there are not network partners in the DFW area! Those granola munching Kinky Freedman voting types down in Austin has a couple of partners.

We need to get some partners here in Dallas. Location shouldn’t really matter, but it does. Having somebody coaching you who can get right in your face when you’re in the process of screwing up makes a huge different. MSN IM just doesn’t have the same impact.

I’m bugging Alexander Muse. I figure that if he is going to talk about “How the downturn might spur entrepreneurs into action” – why not take the ‘might’ out of it and come out here and do some direct spurring? Just saying; what’s the worst that could happen? At a minimum, we can’t have Austin leading us.

Categories:  
Actions:   E-mail | del.icio.us | Permalink | Comments (0) | Comment RSSRSS comment feed