Ask HN: Am I a software developer?
To answer that question first you have to know what happens inside many of these companies. Its just too complex to come up with a process that is fair to everyone.<p>There is a lot of overlap into different roles in this field<p>Programmer<p>Developer<p>Software Engineer<p>Web Developer<p>Full stack engineer<p>Backend Engineer<p>Frontend Engineer<p>Software Design Engineer<p>DataScience Engineer<p>There is no standard or a clear definition of these roles or the skills you need for these roles or skills relevant to particular company. Not all companies have a clear cut hiring standards or insight into what kind of people they should be hiring. Hiring is overshadowed by a lot of players who are just following process. Most of them search in google to figure out a perfect recruiting approach or just want to one-up the popular company hiring approach. They are easily convinced by &quot;tech hiring done right consultants&quot; or their SEO tailored blogs, who actually are good at selling their services. The interviewers in the loop do a google search to figure out what to ask and it does not occur to them if it is relevant or not, its just what other big companies ask in an interview. At the end it is left to un-empowered hiring managers, many times also dev managers who are afraid of breaking tradition and have to make a better decision in a bad situation.<p>If you ask a web developer a lot of algorithmic questions, the candidate fails and a candidate who &quot;cracks&quot; your algorithmic interview is most likely to fail at front end web development job. Design skills are as important as algorithmic skills and they need constant improvement just like programmers improve, who decides what level of design skills are needed for this role?. For a web developer there is a decent amount of algorithmic thinking necessary but who determines that for your company or team? From my personal experience, I needed someone who knows a couple of javascript frameworks and can make sure things look good. The company did not have a role as &quot;web developer&quot; and they choose to call him &quot;software developer&quot; and paid him at the same scale. After a year, the person was transferred to a different team that did not value his skills and the company thought it was too expensive to retrain him.<p>Most management at mid sized companies want to see tech people as lego blocks&#x2F;building blocks who can be transferred to a different team or project&#x2F;product on demand. There is a preference for generalist programmer who sort of can do web development&#x2F;app development&#x2F; data science&#x2F;machine learning&#x2F;AI etc on demand. It is kind of good and bad because many people get bored after sometime and want to do something else at their job and would like it if a company allows them to transfer.<p>A lot of companies I know tried the tailored approach where they let the teams decide who they hire but the problem is lot of the team members are unskilled at making hiring opinions outside their area of work, they mimic the Hippo(highest paid person opinion) in the room. People with other skills can make the team&#x2F;product better but many hiring teams do not have that self-intuition and mostly hire someone like themselves. There is also a conflict between hiring for known chunk of work already planned vs hiring for longterm with skills to solve vague problems related to a specific field. The same hiring approach does not work for both the cases.<p>To deal with this complexity, many big companies come up with a process that looks like standardized testing. Hire hardworking people who can deal with really hard problems and solve very complex math&#x2F;computer science problems and have spent enough preparation time learning the literature. Kids who are very good at school can easily get through this tests. This will become a new normal to them. Also the standardized testing approach gives the companies immunity from gender&#x2F;race discrimination complaints.<p>The fact that these smart people seem to be unhappy everywhere and have to change companies every 9 months tells you that not everyone needs to write MonteCarlo Markov Chain likelihood estimators with Bayesian inference in python. Your average CRUD app may not be able to keep them happy no matter how much PR you give this product. There is a need to tailor these interviews with time. Its a constantly improving process.<p>I was watching this documentary on notorious gangs. The common way to get into that gang was always designed to be very hard. One approach was they throw this new wannabe gangster down and 5-10 people start kicking this guy brutally and after 10&#x2F;15 mins if this guy survives with out crying&#x2F;screaming&#x2F;giving up then they will admit this person into the gang. It was psychologically important for the gang to recruit only the toughest people and at the same time it was important for the person to mentally go through that rigorous process and beat it which after &quot;winning&quot; creates a psychological bond and loyalty with the brand of the gang and a sense of earning that respect from the gang. Our tech interviews sounded very similar to the recruiting done by these notorious gangs. So lets just say that this kind of whiteboard interviewing evolved in nature.<p>For lack of better ideas, this is going to be new normal. Spend significant time and get comfortable dealing with whiteboard&#x2F;standardized tests. The alternative is networking and referrals where some managers in few companies can bypass the hiring process and hire you if they like what you have to offer.