Software Engineering is an amazing career choice. We use our skills, continuously learning along the way, to solve business problems in ways that provide impact to the business and the world. With all of that being said, there are some known uncomfortable truths we can accept about software engineering.
Five uncomfortable career truths that developers don't want to hear. Big salaries, fancy companies. What's not to love? From the outside, it seems like developers have it easy. We get paid well to do a highly specific job. Usually we go home at 05:00 p.m. And don't work weekends. Often we have a support team culture at work. Developers build a software that's running the world. Take a closer look though, and you'll realize that developer's curiosity comes with its own challenges. Like any other job, it's not perfect. Let's talk about the reality of software engineering. Take off those rosecolored glasses and acknowledge some hard truths. Number one, social skills are better than technical skills. The reality is that being successful in this career requires communication. A lot of it. At certain points, you'll have to collaborate with teammates, project managers and clients on features. You'll have to ask for help on things you don't understand. Even more important, being wellliked is how you keep your job and gain new opportunities in your career. It doesn't matter how good of a developer you are. You could write thousands of lines of code per day, but if you don't communicate about it effectively, you won't get ahead. Number two, you're never an expert. Cliche alert software is constantly changing. People love to point out the counterfactual. To me, fortune dubs are making tons of money right now because they are so rare. They're so rare because their jobs are going away. To work in this field successfully, you'll have to keep up with the changes. However, you also need to avoid chasing every shiny new tool. In software development, expertise is a bit of illusion. Don't get me wrong, they're expert developers. But they're not experts because of how much they know about a particular technology. Instead, they're experts because of how many technologies they've seen come and go. It takes years of consistency to get grade. If you think you're an expert, then that's a sure sign. You're probably not. Experts know how much they don't know. Number three, the job is often boring. The reality is that software engineering can be boring. You spend hours staring at screen, fixing bugs, implementing features, or refactoring someone else's old code. A large portion of software out there is just crud apps with simple functionality. Most days, the task at hand won't be that interesting. Seniority helps, but it also makes the problems harder. Now you're scaling a Crud app or finding much more challenging bug. Sometimes it's quite frustrating, actually. Every day comes with its own little annoyances. Staying engaged and curious is hard work. Number four it's a young man's game. Overwhelmingly, developers are young men. Outside the expected groups age, race and gender your path will be more difficult. The difficult truth is to acknowledge it's wrong, but it's real. The terrible thing is that the lack of diversity hurts us all. If the engineers building software aren't diverse than the products that they create are missing the perspective of other groups with the power software holds in today's world, that's kind of scary. Within this truth, there's another truth about software that goes often unknown. Everyone becomes old. So eventually you'll be forced out into early retirement or consulting, or opted into management, or very few small architect roles. Number five there's no such thing as perfect developers like clean, Complete Solutions. Software is almost never clean nor complete. You'll constantly be frustrated by technical debt, lack of documentation, poor test, or something else that's missing from your code base. No code will ever be perfect. If you strive for perfection, you'll work yourself to the bone and you'll never achieve it good enough. That's the mantra of most developers who have been around to the block a few times. They know that the good feature ship today is better than the perfect feature ship the month from now. Requirements change so quickly anyway. You can spend hours on the perfect solution only to have the customer quote something totally different. This, of course, is the motivation behind the Agile Manifesto. But more personally, it can mean that the work is constantly kind of messy. There aren't clear, unchanging rules for the software we're building. Everything is up for debate, but in the end, it's still a fun job. It's forced the difficult parts, but I think we need to be more honest and open about the challenges we face. It's certainly not an easy job, but it does have its great moments.