Archive

Rants

Ok, as promised, this is the post with solutions.  Job posts should get a prospective candidate excited about a possible gig.  Don’t lose top talent the second you post, don’t freak out people and load it up with a “we’re hiring so we just have to throw bait out for all you sucker programmers” type of attitude.

Here’s one group that just starts off right from the beginning.  Hackruiter, a group of hackers that recruit for startups.

Here’s another site that does it right, Stack Overflow Careers.  It puts onus on the hiring company to put up or shut up about whether its a good development shop or not.  With the Joel test criteria a prospective employee gets to find out very important things about a company.  The following job poster scored a perfect 12 out of 12.  It’s most likely one of the best shops around to work at!  This is a prime example of a dev shop that has their act together.

An Example of a Well Put Together Software Shop!

An Example of a Well Put Together Software Shop!

Let’s take a look at the actual job post, I’m assuming YouNoodle doesn’t mind if I help spread the good word by using their job posting as an example.

YouNoodle Posting

YouNoodle Posting

The post starts off with a simple, unassuming title.  This is good.  If you see rock star, or something of that sort, these days I’d be worried since it is an overplayed title.  EVERY company wants rocks stars.  However, a rock star is rare, no need to try to be one.  Most rock stars don’t try, they just are.  But I digress, the title starts off as simply, “Front End Software Engineer“.  (I’ve linked the posting, but no telling how long it will actually be live, so to mitigate I’ve posted an image of the posting to the right hand side – click it for a full size image that is more readable)

After the title the startup jumps right into wooing the prospective hire.

YouNoodle is looking for an engineer to join our tiny but ambitious product team. YouNoodle is a fun and entrepreneurial startup in downtown San Francisco. Our office is on the corner of South Park, close to Twitter and many other cool startups.

We are looking for a software engineer with solid web product experience, ideally someone who has worked in other web startups and/or hacked together websites in college. You will start off on our current PHP/MySQL setup, but you will eventually work with us on a new product in a new framework.

We are one of the most well-connected startups in the Bay Area, and with us, you will make your name in the startup world. Our office space is fun and chill, the vibe is ambitious but relaxed, and you will largely be setting your own goals.

Right from the start they talk about their fun and entrepreneurial environment in downtown San Francisco.  They obviously care about their work environment as they’re downtown, not in some lame suburb off in the middle of nowhere.  This is very important to a good company.  A good company cares about where their employees will work.  They care about the environment and whether it is awesome or in some dank dark corner of the universe.  YouNoodle obviously has insight into things.  They dive shortly after that into what they’re looking for and the awesome technology that the prospective employee would get to use.  Notice it isn’t a demand, it is a description of what fun it is.  This is software, the tech industry doesn’t need to demand, it’s a fun business to work in and companies should get a clue about that!  Don’t bore prospects, woo and excite them!  You’ll have the best before you know it.

The next thing that YouNoodle jumps into is “Extra Credit“.  They did a great job in not using the same lame “required experience” nonsense.  Nobody ever has the exact experience, it’s all about finding the developer that can contribute and get up to speed on the technology.  It’s merely extra credit for a developer to have some or most of the skills.

Extra credit:
- Other web frameworks (Ruby on Rails, Python/Django, etc)
- HTML5
- Mobile or Facebook app skills
- JQuery
- AWS systems experience
- Graphic design skills
- Product or project management experience

Now just to assure everyone, I have no vested interest in YouNoodle.  I literally just found out about them by looking on Joel Spolsky’s Job site to find examples of companies that put together good job postings.  I know and trust Joel’s Sites and he gets it.  I don’t always agree with the guy, but he’s definitely got his act together, and the companies that the site allows to post generally have their act together.  YouNoodle is no exception in that regard, they do indeed have their act together – at least in attracting and hiring!

So why can’t other companies and recruiters get their act together and excite people about what the job is?  I’m not sure what they can do, but they do need to check out these sites and learn from the best.  There is ZERO reason a job description should be demanding or insulting to the prospective employee.  There is no reason for the posting to paint a dire picture.  Sure the project may be in trouble, but get the postings right at least.  Talk to the candidates about that when things are put together.

But then of course if the project is in really bad shape, I hope developers also start learning how to read the crappy job descriptions and create an even greater shortage for those efforts.  Maybe the market can straighten out those poorly lead projects then – it created the awesomeness that is the tech sector in the first place and I’m sure it can straighten it out again!

Cheers, to better posts and more truth and better effort in the whole hiring process!

BEWARE:  This is the beginning of a rant.  If you’re temperamental it might piss you off.  You’ve been warned, prepare to have a bit of rant with reality thrown on top for good measure.

I’m not looking for another gig.  I’m extremely happy with what I’m doing right now.  The Russell Team I’m working with absolutely rocks!  On our worst days we kick ass and on our best we kick ass, take names, and build lots of software with value for the company and users.  We produce software, with reasonable timelines, timelines that we have input into, with good business proponents, solid technology, quality code, and generally sound process.  All this with strong overtones of Scrum influence ala from the Agile Manifesto.  People on the team actually KNOW and have READ the Agile Manifesto – which is AWESOME!!!!  :)

So now that I’ve got that declaration out of the way I want to write a very serious rant to managers who have never read the manifesto and claim they use an “Agile Process” or “agile” or whatever.  This is a statement and rant to those companies that go recruiting for top tier people (and rarely get them) with horribly written job descriptions and practices.  So let’s get started, and the developers out there, let me know if you are annoyed by these practices too!  I’d love to get an ear full form anyone from any side of this equation.

If you use an Agile influenced process (notice I said influenced, because really there is no such thing as an Agile Process – it’s an ideal, kind of like freedom and liberty) nobody should be reading or printing things like;

  • Agile = Agile Principles U Agile Best Practice

    Agile = Agile Principles U Agile Best Practice

    This project is being run using agile methodology.< Really? Which one? That isn’t very descriptive. It’s kind of like me saying, “I like to eat food, the cooked kind, sometimes, cuz it’s good!”  Yeah, really! Dear oh dear. Translation: “I went to a management conference and somebody said that I HAVE to use agile methodologies or I’d be a failure.”

  • Yeah, It's In There Somewhere, The Piece That Will Bind the Meaning of this Description Request!!

    Yeah, It's In There Somewhere, The Piece That Will Bind the Meaning of this Description Request!!

    “Good understanding of software design and concepts and patterns.” <  First things first, there are way to many ands in that sentence. Second, Which design, concept, and patterns?  Microsoft’s, Computer Science, or Agile Manifesto related concepts. This again is a very vague statement.  Kind of like stating, “We want someone to write software that can write software”. For real!  :o

  • “Experience using Visual Studio 2008 and the .NET Framework V4 with experience using Framework 3.5 with SQL Server.” WTF?!?!  Ok, you state you’re using the “agile process” but the first thing this does is prove you’ve probably broken the first manifesto point, people over tools. You’ve just declared tools, and in addition to that the tools are correlated incorrectly. Using SQL Server has ZERO to do with what .NET Framework you’re using. Using .NET 4 is almost identical to 3.5.  Declaring the version really isn’t necessary.  In addition, declaring a framework version with SQL Server would lead any decent developer to think that the project is already messed up since the tools description is correlating .NET 3.5 to SQL Server – which should make absolutely no difference.  Zero, Zilch, Nada!!!
  • “Familirarity with the basics of WPF, Silverlight, WCF, and Azure.” <- So every application in the universe is getting built?  This just adds to the confusion already generated by the oddball descriptions above. At this point a GOOD software developer would either stop reading and ignore the posting or be so curious as to why its screwed up they’d contact the recruiter or posting company. I know some developers that have literally contacted a company to ask, “what is being stated” in a job description.
  • “Awareness of Microsoft TSQL and database design principles.” <- Again, ok, but you already said SQL Server.  Maybe you mean some magical mystical unicorn generating SQL Server in that previous request and this is for just the SQL in the magical mystical unicorn SQL Service generating Unicorn TSQL Microsft TSQL Database Widget! Yeah, that’s it.
  • “Demonstrated ability to follow through with all tasks, promises, and committments.” <- Ok, I’ll admit, some places probably need to post this.  But when I see this, I’m putting my money on the idea the management probably sucks, and not a little bit but a whole lot. The other possibility is that the hiring staff have no idea how to communicate or infer if a person has basic abilities A company demanding the basic fealty of honesty and integrity in their employees in the job description something is SERIOUSLY wrong already.
  • Bad Communication Happening

    Bad Communication Happening

    “Ability to communicate and work effectively within priorities” <- Ok, with that previous demand of fealty and competence, this request right after is a HUGE read flag screaming that communication is most like NOT good in the environment the job is in.

  • Yeah, Do It, Do it RIGHT NOW!!!

    Yeah, Do It, Do it RIGHT NOW!!!

    “Ability to work under tight timelines in a fast-paced environment” <- Again, this completely throws out any concept of maintained velocity, a good agile understanding, or any hope that someone actually read or understands the Agile Manifesto and Principles. It also provides the hint that maybe, with a high likely hood, management is grasping at straws trying to keep things going in the right direction.

I wouldn’t be very likely to respond to this job entry if I was looking. Matter of fact I’d warn people (kind of like I’m doing with this blog entry). In my next entry I’ll provide some actual GOOD job descriptions and things that I would look for, if I were looking (which I’m not, as I’ve pointed out).

Frustrated...   looks like it.

Frustrated... looks like it.

…and don’t get confused, I’m not being a prima donna or demanding blue M & Ms only. I’m merely asking that people get their shit together and treat their prospective employees with some honesty and integrity also. Hiring practices leave a LOT to be desired in the world of the tech industry. They’re horribly inefficient from both perspectives.  It is hard to find people and hard to find good gigs that one can truly be happy with. I honestly feel though that getting this straightened out, if it is to be straightened out, is a better understanding on the hiring side and on maintaining a healthy, functional, and productive work environment.

Stay tuned, and I’ll have the “much closer to ideal” job posting ideas up here in the near future.  For now, I’m done ranting about this.

Aaaaaaggghhh!! I just want to scream. I can’t though because I’m still recovering from a crazy flu/cold/allergy attack like I’ve not had since I lived in the deep south were the pollen piles up so deep a black car looks yellow during season changes! The powdery mess would knock me out every other year when I was younger.

Well, here in Seattle, travelling down for the Agile Open Northwest Conference I at some point got nailed with the combo attack again. I’ve been out of commission and thus have failed to put together the entries I’d hoped for on Agile Open Northwest (#AONW from here on) and also didn’t meet my original release date of the 11th for my third in a series of Windows Azure Posts. Fear not, they’re on their way, all of em’. Even though I didn’t get to attend the later 2/3rd’s of #AONW I’m putting together what I’ve accrued from what attendance I did make and what my cohorts managed to put together.  Overall, the part I attended and the rest I hear about was awesome!  Will definitely be returning next year!!!

Again, thanks to Amtrak for getting me back swiftly and in one piece. (No fear, I wasn’t contagious, just beaten up by allergies!)

I’ve gotten to a point where I won’t argue it anymore.  The word Cloud as defined on Wikipedia

“location-independent computing, whereby shared servers provide resources, software, and data tocomputers and other devices on demand, as with the electricity grid. Cloud computing is a natural evolution of the widespread adoption of virtualizationservice-oriented architecture and utility computing. Details are abstracted from consumers, who no longer have need for expertise in, or control over, the technology infrastructure “in the cloud” that supports them.

has been overloaded to such a large degree that it doesn’t actually mean anything anymore.  Cloud computing has become a casualty of media hype.  Utility computing, service oriented architecture, virtualization, and other things still have meaning, but cloud computing really is lost.  We have cloud services in Office 365, which isn’t particularly stored or operated from the cloud.  We have vertically distributed, geographically dependent databases & other services with are called cloud, but also don’t meet the basic definition above.  We have private cloud computing, which also is a perversion of the definition above.  Basically the term cloud has been stuck onto anything technology related.  Your phone, your website, your car, your everything is now all of a sudden supposed to be provided by the cloud.

In laymen’s terms, “The cloud is bullshit.

I feared this would happen at some point, because the underlying technology of the original ideal around cloud computing is still very intact, very valuable, is drastically disruptive, and marks a massive change in the technology industry.  Virualization, horizontal architectures (hardware & software, PaaS, IaaS, and SaaS are already and will continue to change the enterprise, startup, and worldwide business landscape.

Why am I rambling on about this?  What is my frustration?

When things are redefined that means we, the practitioners, programmers, and users of actual utility, virtualization, and other computing that we had defined as cloud computing will have to find new language to use in defining this revolutionary shift in capabilities.  The specifics that are now needed in each conversation becomes required, the understanding now desperately needs to increase.  Let me provide an example of why.

Imagine a CTO or a CIO that is working with his or her team to identify a way to utilize cloud computing to enhance their services, increase their uptime, and generally utilize this new technology within their enterprise in which they work.  Say they’ve been turned onto the idea of a private cloud.  Not a virtual private cloud that’s hosted in the public cloud (like AWS’s offering), but just a big huge box that sits in their data center.

  • Does it provide location independent computing?  Nope.
  • Does it provide auto-scaling capabilities like AWS, Azure, Rackspace, or others?  Nope.
  • Does it offer the assumes virtualization, service orientation, or other features?  Questionable.
  • Does it offer the resiliency of connectivity like a geographically dispersed utility computing service?  Nope.

But that CTO or CIO will be told over and over that it is a cloud, a private cloud, one of their very own that they can take and hold and hug and love.  But it isn’t cloud computing by the definition on Wikipedia.  It isn’t cloud computing by definition of those hard core developers, web application experts, and others that have been using cloud computing for years now.  It isn’t for those marketers that have been bringing the message of utility, virtualization, and other features.  It’s a misrepresentation by the sales people and media who just want to put stickers with little clouds on everything and shove it out the door to clients who will shell out big money for things that say cloud.

I don’t have much of a problem with that, I’m just perturbed that now I have to explain even more about what cloud computing really is versus what it isn’t.  Now every time I talk to someone new in the field – in addition to the fear & misinformation about security in the cloud (It’s secure already, so drop it – it’s more secure than your data center you can be sure), I now have to explain to people that Office 365 is a SaaS Service, that isn’t particularly in the cloud yet (last I checked it isn’t running on Windows Azure, but it will or should be in the coming future).  I have to explain that Compute & storage that is limited to one geographic area stuck in your data center is called a “computer”, or maybe at best referred to as “High Performance Computer”, but it doesn’t meet the cloud computing definition or the generally accepted understanding of what entail cloud computing.  The number of explanations to keep conversations honest have just drastically increased.

Thanks media, you’ve just made my job harder.  For those still learning in the industry, beware of the misinformation out there, it’s become rampant!

…got that out of my system.  Now on to actual development with utility computing, on virtualized images, within a highly distributed, node based, geographically dispersed computing network system.  <-  How do ya like those apples?  Specific enough?  :)

Rework is ok.  Refactoring is ok.  BDUF (Big Design Up Front) is bad.  Minimal amount to get to market is good.  Getting to market is good.  Don’t get into analysis paralysis.

Best book that cleanly cuts to the chase I’ve read in a long while:  Rework

…and a few friendly reminder videos.

I really can’t emphasize how much better an individual or a company is at getting things done, getting things to market, and generally improving what they do in life when taking a lot of the advice in this book to heart.  Read it.  Know it, and kill the things that are dragging you and your company down.

Thanks.  This has been a friendly public service announcement by yours truly.  Adron B. Hall here at Composite Code Blog.  :D   Cheers!

Follow

Get every new post delivered to your Inbox.

Join 3,712 other followers