The State of Software Development Is Not That Bad

·

5 min read

These days, I can hardly go a week without an article coming up in my feed on Medium explaining why this or that framework, library, software architecture, project management strategy, etc. is terrible and should be not just ignored but actively discouraged. These articles usually have titles like "Why You Should Stop Using React" or "Why Angular is the Worst". Agile and Scrum are two project management systems that get dumped on regularly by those forced to work under their apparently intolerable methodology, hence articles with titles like "I Worked on an Agile Team and It Was a Disaster."

Interestingly, I don't skip over these articles because I can often learn something from the point of view of the author about the challenges and problems posed by some technology or project management style that I might not otherwise have considered. I love Angular, and I've used it for years. That being said, no framework is perfect, and reading about the author's challenges with Angular can be enlightening and help me avoid such pain down the road. It is useful to know the limitations of a technology and recognize that it may not be the best choice for certain use cases.

I do, however, try to remain objective when I read these pieces. It can be destructive to my morale to take them too seriously, because then I would have to believe that pretty much every framework, library, or best practice out there is terrible, and then where would I be? Blog posts like these often leave little room for the technology to redeem itself or consider whether it might have its strong points. They often appear to have been written in a state of exasperation by someone ready to quit it altogether.

I'm not knocking anyone's right to express their opinions. But I do have to express concern about the fact that feelings among developers about the state of development seem to be on a negative trajectory within a subset of the community. The reasons could be lots of things. One thing is that developers complaining about this or that framework often have valid points to make about its problems. Another might be that we're failing on some level for experienced developers to share their knowledge with greener members to show how to get around those problems. I can't help but wonder how many negative opinion pieces are driven more by poorly managed teams or toxic work environments than by the utter awfulness of the thing being discussed.

I can only speak from my own experiences. I have worked on teams that use Agile and Scrum and I didn't find it so terrible that I left my job over it. Yes, I haven't always liked the daily standup or how it's applied, but in most cases, it was kept short and provided a useful forum to bring up concerns or address problems. I have yet to work on a team that followed a "pure" Agile workflow (and I question that any such team exists). Most teams seem to apply certain aspects of Agile and roll their own way of doing things for the rest.

I've used Angular for years and I recognize it has plenty of weaknesses, but if it didn't also solve a lot of problems, most developers would stay away from it. It was, after all, developed by Google, and while Google doesn't have a perfect track record with everything they've invented (I'm looking at you, Google Glass) they are hardly slouches in the engineering department.

I haven't worked with React a whole lot but given it remains among the most popular JavaScript libraries in the industry speaks to its charms. I would not be too quick to dismiss it as an unmitigated disaster that has ruined UI development. I have used it enough to decide that JSX wasn't my style, but who knows, if I had stuck around, I might have grown to love it. I'm certainly not going to start writing opinion pieces calling for React to be burned to the ground because it doesn't suit my personal style as a developer or because it was developed by Facebook.

If you aren't a fan of React or Angular, there are plenty of other frameworks. If Typescript hasn't won you over with its static typing, fine. Write your code in JavaScript instead. I mean, that is why there are options out there. If you are going to write a piece that trashes a technology or methodology, you should at least be aware that you might be influencing new developers that haven't worked much with that thing and depending on your tone and/or choice of words might be led to believe that they need to stay away from it. That could end up costing them potential opportunities down the road. I wouldn't want to counsel a new developer to not learn React when it could lead them into their first role.

I love where we are in development today. When I look at how things used to be, when I first started out, I am amazed at how fast the industry has evolved. Sure, some stuff has stuck around longer than perhaps it should have, and other new stuff isn't as great as the promises of what they would offer. But overall, we're surrounded by a vast number of great technologies that have made UI, application, and back-end system development faster and easier than ever. It costs less than ever to actually get an application up and running and we can scale them faster and easier than ever before.

We're sitting on the bleeding edge of ever-increasing gains in productivity, scalability, cost-management and performance. It's good and right to acknowledge the weaknesses and failures of the tech we have today, but let's not forget the good things also, lest we nudge ourselves ever closer to drudgery. The best way to enjoy what you do is to be thankful for what you have, and there's a lot to be thankful for the state of software development today.