I've had the fortunate experience of working in many different environments over the past several years and I think that there are major problems within some companies that are widely shared across the industry. Today, I want to spend some time talking about this and what I believe we can do to identify and resolve them. Some of these things are pretty tough topics so please be forwarned that I will not skip a topic because it's sensitive, it's important that we as an industry think about these things and make changes for the better.
Let's be honest, software is a valuable item and software development is a valuable skill. I have seen companies that ship software products put their entire development team on the back burner, ignoring their input and advice. What's worse is when non-technical people are making suggestions that are valued over the input of the software development team(s). You hired the experts, so why not listen to them? It's important, I believe, to respect all employees equally. It's not okay to treat your employees like a throwaway item or even worse to be a shitty person to certain departments just because you have some disdain for them.
It's great that developers from many countries can work together and build amazing products but there's a problem and a huge divide that comes from physical location that I believe is a stupid one. The issue is that companies tend to pay far less for resources in developing countries in order to save a buck and then they use this as a way to say that their team is diverse. This is an extremely harmful precident to set. The idea that people should be paid based on their physical location simply doesn't make sense and the fact that companies say things like "well... we're inclusive!" when someone speaks about it is gross. People should be paid based on their skill level, if someone is a valuable asset to your team you should consider fairly compensating them for that regardless of where they are from.
Partially linked to the two items above, there has been a shift in the software industry that's rooted in the development pipeline. If you look at any popular game that's been released in the past year you will notice that upon release there are hundreds of thousands of people saying that it's broken. The same can be said with a lot of software too.
I believe this stems from work enviornments where developers are forced to work incredibly fast pumping out low quality contributions that are then not even tested either because the company makes the decision to skip testing or the testing teams are forced to move quickly missing a lot of things. I hear the excuse, in software, that "well... this is just an MVP" a lot, the thing is that an MVP should still work. It may not have the full feature set but it should work and work well and in order to do that you have to hire the right employees and allow them time to get things done correctly.
There's been a problem for quite some time about people fabricating their resumes in order to land jobs that are not a good fit for them. I see this a lot in startup enviornments where the hiring process is less strict. It's important that potential employees are properly vetted and it's also important to hire quality contributors. Software developers already on your team should be the go-to for this advice because it's easy for software developers to recognize the skill level of others fairly quickly. It doesn't matter if the person is a cheaper asset, if they don't know what they are doing they will cause a negative impact on your team and your product.
Programming is a very stressful and mentally taxing career that requires a certain passion to pull off for many years. One angle that's often lost is to understand if the person you're looking at has an interest in programming outside of it being a job. There's plenty of us that got into this because we love doing it and consequently we've spent many, many years learning things to deepen our knowledge of computers that are irrelevant to what we're working on in our professional careers. The best resources are always going to be people that are passionate about what they do.
The second part of this is recognizing talent without an exceptional work history. In my experience while work history is impressive and should absolutely be considered there are other factors like the aformentioned passion that are more important. If a developer is eager to learn and not simply jump on existing tools and libraries to cover problems and they have demonstrated experience learning quickly they will be extremely valuable to the company.
Be The Change
I'm not just talking about this for the sake of sharing the ideas. With the help of friends and colleagues I am launching my own company soon which will provide high quality software development solutions to businesses of all sizes. My mission for this venture has many goals but my priority is to select high value people from across the world to take part in the business of creating high quality software that's well written on sane timelines. I've always been a staunch advocate for software developers and other industry professionals and it's important now to run these fundemental beliefs in the real world. If you're interested in in hearing more about this stay tuned, as we update the blog to be more company focused and share more information in the upcoming months.