I would not assume you did know this dear reader, but I’ve joined the amazing team at Hasura! Over the last few years I’ve gotten back into a number of data oriented development efforts, often related to my own interest in database systems and web development. From this angle Hasura has a superb technology solution, a solid team with founders @tanmaigo, @rajoshighosh leading the crew, and I’ll introduce many of them to you all too in the coming weeks and months! 👍🏻
Hasura is a GraphQL API Server, that can be serverless via the Hasura Cloud, deployed to any cloud provider, or run locally on your own infrastructure. It is open source too, so you can dig in and checkout how things work via the Github repo.
My first step when joining I put together a deployment around infrastructure as code and wrote a blog entry “Setup Postgres and a GraphQL API with Hasura on Azure” using Terraform. It’s a fairly thorough post, albeit always open to critique, and will have a follow up real soon! Some of the next steps will include further data modeling, covering various relational database paradigms and how those map to Hasura, and lots of additional information. If there’s something you’d like to see, or technologies you’d like to see me put together, do reach out to me @Adron and I’ll see about getting some customized content put together!
Some of the first endeavors I’ve started tackling is coordinating new learning material around each of the features, capabilities, patterns, practices, and ideas behind GraphQL, development around and uses of GrahpQL, the Hasura product, and how all of these technologies fit together to make software development [pick awesome adjectives here: better, faster, etc] when one is working toward an idea!
See you deep in the code and data, science, data extraction, transformation, loading, and all the software development around it all! 🚀
Last, another way to get updated on just the bare minimum of content and coding I’m doing register for the Thrashing Code Newsletter!
This is a public letter to all recruiters, human resources or other professionals that are in a *hiring department* that would like to garner referrals from me. I like to categorize my referrals into junior and senior software developers. This is not my interaction process with startups & early round companies, I know you and you know me, things work differently, so if you’re in a startup and looking for people this doesn’t apply to you. This is a letter to help guide how I can help all parties involved in the best way possible.
NOTE: I’m not a recruiter, not intending to be, nor do I work for any recruitment agencies or groups. This is something I do because I enjoy being involved with the tech scene of Portland and have great sympathy for people looking to join good teams. I fought years to find good teams and have enjoyed working with these teams. Matter of fact, I’d say a good team is orders of magnitude more enjoyable to work with than the not good teams. In other words, I try to make things not suck for everybody involved! 😉
For junior developer referrals, I have a few basic requirements and information that I’d like to know if there is a specific job in mind. If you’d just like to talk, I’ll also put you in touch with a junior developer based on this criteria.
For the junior developer the positions should be of reasonable commutes, especially in the current software development market. This means that the commute, one way, should not be anymore than 10-15 minutes either by biking, walking or taking transit. If they want to drive, that’s their concern, but I don’t want to condemn anyone to ever being stuck with a forced auto-dependent commute.
Is there opportunity that the junior dev will be working with other senior developers who will pair code, do code review and otherwise support the individual in a positive and enthusiastic way?
Is the company active in the local community and supportive of new employees and existing employees being involved? Will the encourage and allow the junior developer to get involved and possibly attend workshops, courses, meetups and even conferences that may be during business hours (but likely most are not)?
For senior software developers this gets to be even more particular, especially in Seattle, Portland, San Francisco, New York or Vancouver BC. If I’m going to refer anybody the following items are a baseline.
Does the job offer remote work or some remote work days? How does the team currently communicate with remote employees and what is the split of remote employees vs. in office employees?
Not just is there opportunity to, but is there active pairing, continuous integration or delivery setup and being used?
What is the current management paradigm around architecture decisions, user experience (UX) and other items that are often peripheral to the software development that occurs?
If these questions can be answered in the affirmative then I have some referrals for you. Even if they aren’t, these questions and this information should become standard on any job description, in MANY ways more so than the technology list of skills that are all to common. This last part is something to note for people hiring, not just recruiters.
I’ve also talked more about this far in the past (in tech years). I’ve spent many solid years hiring, firing and generally building teams of people. The following has inadvertently become kind of a series about suggestions to fix the job posts, and where and what the baseline is for building a A-game Team. Much of these suggestions hold true still today.
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.
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.
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.
– Other web frameworks (Ruby on Rails, Python/Django, etc)
– Mobile or Facebook app skills
– 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;
“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.”
“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! 😮
“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.
“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.
“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).
…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.