8 ms·
There needs to be a bit of a shift in understanding what 'category' of worker a programmer 'is', both by companies and more importantly by (some) individuals th
by PuffinBlue 10y ago
There needs to be a bit of a shift in understanding what 'category' of worker a programmer 'is', both by companies and more importantly by (some) individuals themselves.
Programming is both technical and artistic. It's a creative endeavour that relies on technical skill to complete.
The best analogy to another profession would be to those in the 'technical arts', those like photography, joinery, painting, sculpture, drafting, perhaps writing too.
It seems at the moment that companies are approaching programmers as if they are purely technical like an actuary or bookkeeper and are seeking to quantify artistic skill through interview tests. This is rubbing off on some programmers who begin to think of themselves in these terms.
I don't recall a single instance as a photographer where I had to quantify my technical skill, but there were hundreds of times I had to based on my artistic skill, proving I had already made a vast range of photographs with sufficient quality to 'prove' my ability and by extension proving my technical ability.
Crucially, it was the fact I had a portfolio that allowed me to prove my ability, both artistically and technically.
I see a similar need in programming. I think programmers should create their portfolios of personal or paid for projects that showcase their technical and artistic skill and companies should take those seriously.
At the moment it seems that far to many programmers are attempting to get jobs without a 'portfolio' which is why, in an creative endeavour like programming, companies that hire are trying to quantify and determine a new hires ability with these seemingly bullshit tests.
There's room for improvement in this argument and there are outliers, but I think the basic premise is sound.
- gavanwoolery 10y agoThat is actually a really great point. Its like hiring a writer based on their grammar. A writer could have perfect grammar but their books are boring as hell. Or even hiring a writer for adhering to the techniques of connoisseurs. The book "Ready Player One" was heavily criticized as amateur work (it was, after all, the author's very first book), but it nonetheless was hugely successful (and even has a movie in the making).
- mruniverse 10y agoWould you hire a writer with bad grammar?
- gavanwoolery 10y agoIf they had a killer hook, yes. An editor can always review and fix the grammar. :) A coding analogy: A compiler or debugger can catch bugs. If they can't form a competent sentence, they probably would fail to write a convincing hook. But some margin of error is acceptable.
- deleted 10y ago[deleted]
- mruniverse 10y agoIs the "technical" part really analogous to grammar? I don't think many interviewers care about that. They don't care about missed semi-colons. They want to see that you know how to solve a problem. And a github portfolio is not going to give them that. As an aside, I think debugging is hard even with a debugger.
- rapind 10y agoI disagree. A github portfolio combined with time spent via screenshare reviewing and discussing some of that work is far superior to a technical quiz IMHO.
- gavanwoolery 10y agoThats true, probably a poor analogy, but the overall point is that: Determining a programmer's worth probably takes at least a month in my experience. Maybe even two months. I almost got fired within the first month of my first job, but quickly ramped up and turned around to be the highest value-adding employee by virtue of completing the highest paying contracts at a fast pace (the company was later acquired). Most companies can't spend a month, but a day long take-home test is a great alternative. There are so many facets to a programmer's worth, and so many ways to miss them or ask the wrong questions, that I just don't believe in short, high-pressure interviews. Take home tests have been highly successful in my experience (and a few others, from what I have heard).
- biztos 10y agoI agree completely, and this resonates with me particularly because I'm one of the many programmers also serious about other creative endeavors (in my case, the visual arts). But it's worth considering that in larger companies, management is often terrified of the creative aspect of programming, because it messes with their primary goal of predictability. Thus they seek, many of them openly and explicitly, to make all technical roles fungible. And as much as that's hurtful to us creative programmer types, it's not an irrational position for them to take. The fact (or hope) that fungible programming roles can be more easily outsourced, especially to cheap-labor countries, is of course seen as a bonus. This situation presumably gives a big advantage to any organization willing to engage with the creative aspects of programming, but I am starting to think it's in the nature of organizatins themselves to stop embracing that risk after a certain size is reached. (Not that this is an argument against the portfolio idea. Even if you're going to work as a fungible cog, you'll probably get a better cog-job faster with a decent portfolio.)
- PuffinBlue 10y agoThere's definitely a place, probably the majority, for programming jobs that are relatively 'turn key'. There's probably a decent analogy in product photography. Unless you're going high end, bashing out well lit, well edited and well presented product imagery lies firmly towards the technical end of the photography technical - art spectrum. Trouble is, many companies think the want these 'product photography' programmers but in reality they need the equivalent of 'stock photography'. And stock photography is one of the most difficult and challenging technical/artistic balances in the industry. Both turn out similarly neutral end products that can be used almost anywhere and replicated, but getting to those final products requires very different mindsets and approaches. That's likely stretching the metaphor more than it can handle but hopefully illustrates the point! And as you mentioned, having that 'personal portfolio' that allows you to sell yourself (another important distinction I made in another comment) will get you the job ahead of someone who doesn't have one.
- marcosdumay 10y ago> it's not an irrational position for them to take. It's about as rational as decreeing that it must not rain on Fridays, and then proceeding to fire the nearest person every time it does. They do have some very good and rational reasons why they wish programming was not a creative job. When they assume they can change reality by wishing it, they completely destroy their people's (outsourced or not) productivity, throwing the cost of everything into the stratosphere, and the quality way under the floor.
- ozim 10y agoThere are also different types of programmers. Some will do well with portfolio like web developers. But how you would approach creating portfolio as embedded dev? When you work on proprietary stuff and github repo does not really show that you do well with hardware, because customer might not have time/knowledge to run this stuff to check if it is actually working.
- PuffinBlue 10y agoA portfolio isn't something you just have and it does all the work for you. It's a living and evolving thing that is there to show that you can solve problems. A portfolio says "I encountered X problem and here's what I did about it to make this other thing and therefore solved X problem." A web dev is a very easy job to create a portfolio for because the product can be your portfolio but when I say 'portfolio' I'm not talking about a GitHub repo of some code you've written, I'm talking about something bigger than that. I'm talking about having examples of your code, things you've made, perhaps technical writing, perhaps a personal project, perhaps video or other 'evidence' of the programmers work/approach. If that involves making a personal embedded hardware project to show your approach then that's what's needed. Perhaps another important attitude change needs to be established... In a creative technical art you are not really selling your 'product' to customers. You are selling yourself. You're selling your ability to solve problems and it's incumbent on the individual to prove their ability. Web devs aren't 'selling' their previously created websites, they're 'selling' their ability to create those past projects. It's a crucial distinction and programmers would do well to adopt this distinction - they're not 'selling' their GitHub repo for instance, they're using that as an example of how they (their mind?) work to solve problems. For sure there will be times you work on proprietary/secret stuff or on systems of such scale you can't possibly make an equivalent scale of personal project. But you can demonstrate your ability and sell yourself, and that's really the key to it all. You have to get to the point in a creative career where you realise you aren't just selling your final product, you're selling yourself, your approach and your way of solving a problem. Finding a way to do that is how you get the job ahead of someone else.
- Dayshine 10y ago
- gregmac 10y agoExcept that the vast majority of programmers essentially say "I'm very good at taking pictures, but I can't actually show you any of them because they're all property of my previous employers, and I never take pictures just for myself". > I think programmers should create their portfolios of personal or paid for projects that showcase their technical and artistic skill and companies should take those seriously. 100% agree, and Github in particular is great for this. Sadly, in my experience very, very few candidates have such a thing. Even non-code content such as issues they've filed or stackoverflow questions and answers is a very useful way to judge someone's technical abilities, but many candidates don't provide links and either use separate identities/aliases or don't participate.
- cloudjacker 10y agoI have all that stuff No problem getting interviews Still have to do the "brainteaser of the hour" technical interviews. Fortunately it is often the same question I realize, so this gets easier without needing to go through the whole book on this.
- bobwaycott 10y agoI imagine the vast majority of employers would be pretty pissed if the vast majority of programmers shared their private code, and some might even wish to take legal action. As an employer interviewing and hiring candidates, one should respect and expect this confidentiality to be exhibited and adhered to. For example, I build things for clients that are proprietary to their businesses. Some things are publicly accessible, like marketing pages, but the real stuff is locked behind employee-only auth. Other things run entirely on internal networks, and can't be accessed from the web. They would be rightly upset if they discovered I shared their code with a third party, or placed it on Github. Moreover, just because Github exists, doesn't mean programmers should feel obligated to "participate". Outside of developers who maintain or participate in truly used projects, it's mostly noise. The only exception I can agree on is looking at issues a candidate has reported to gauge their depth of understanding, clarity of communication, offering of solutions, and other such valuable insights.
- jogjayr 10y agoMany companies don't bother looking at things like that. Even if you have a Github account with some amount of non-trivial, original code on it, they'll put you through a "phone screen" and have you do a longest increasing subsequence/subset sum/longest palindrome substring problem for a front end position. And yeah I'm talking about Silicon Valley/SF City/YC type startups here, not BigCorp Inc.
- cableshaft 10y agoI have a portfolio (it's a bit dated now, though, and only includes the games I've worked on). It's always clear in interviews that my interviewers never bothered to look at it, though. Still get the pop quiz interviews almost every time (with or without coding) and it's pretty clear my chances of getting an offer is at least 90% based on how well I do on their pop quizzes.
- SilasX 10y agoPortfolios are a good heuristic, but you can't be sure the person actually wrote the code/took the pics, which is why you need some other way to verify they're actually capable of producing that work, not just copying it. Hence technical interviews. Even for a programmer with a portfolio, it's vital that you be able to probe them with questions about design decisions and expose someone who didn't actually write it. Does photography have some sort of solution to this problem? Can you ask a photographer about how they took a picture to easily reveal whether they actually took it? I'm guessing there's less of a need to verify skill with photographers since most of the work is on a gig or piece-work basis where it's easy to terminate the relationship or refuse payment in case of obvious frauds. OTOH, what stops an unskilled from stealing a portfolio (or using with their consent) to get work? What happens if they produce usable work, but which doesn't look anything like the quality suggested like their portfolio?
- PuffinBlue 10y agoA lot of photographers will now video behind the scenes stuff to show them at work and have that ready for clients if questions arise. Also, during meetings (interviews) with potential clients invariably I'd talk through and show a collection of work that was similar to the types of problem the client was trying to solve. Might have been a wedding or a commercial shoot, I'd show them stuff that would solve what they needed and talk through with them. Similar things have happened with editing. I suppose an equivalent would be not just code but maybe wider community contributions. As I mentioned a portfolio goes beyond just 'code' or some 'product' that you made. It's there to sell 'you' so that includes things like bug fixing, visible issue solving, maybe mailing lists, maybe run a community platform, maybe clear contributions to open source projects or whatever. Anything you wnat I guess. It's relatively easy to become 'public' enough to be obvious who you are, or use some kind of cryptographic proof etc. There will be problems of due diligence, those are universal, but I think individuals and companies would both be better off if they took portfolios more seriously.
- SilasX 10y agoThanks for the thorough answer to my concerns.
- zjaffee 10y agoI both agree and disagree with this as many of the other comments took this in a very different way than I had. You can still test for creative ability in the traditional coding interview construct through systems design questions. It requires you to have a deep understanding of various technologies, but at the same time focuses more on how you view various trade offs which are crucial in designing complex systems. When discussing art with its creator, you could have the same kind of discussions about various tradeoffs they made in regards to various technical topics. For a writer, use of alteration in a certain way, or a photographer trying to draw focus to a certain aspect of the larger photograph, in particular to various editing decisions. The issue here is that the vast majority of new-grads/young programmers are fresh out of school and haven't spent any time focusing on systems design so companies focus on what they know best, asking them to be creative in the domain of algorithms. I also think its the case that since so many people's first interviews were algorithms based the process just continues to be that way. But, at the end of the day, to say choosing a particular data structure to solve a certain type of problem has no creative aspect to it is wrong.
- deminature 10y agoHaving been through interview processes at big tech companies recently, I invested some time in preparing a portfolio to try and improve my chances of success. What I encountered was that nobody is really interested in your portfolio (or even your resumé really). I appreciate your advice that a portfolio should improve your chances, but nobody from any of the companies looked at it. I'm not sure it's a good investment of time, considering how little importance is attributed to it.