In addition to the continual learning aspect that other answers address, there's something else that's quite challenging about software development. The way that we intuitively organize ourselves for our work can lead to really poor outcomes in software projects. We tend to want to build the whole solution from start to finish, and then release it. It makes a big splash that way, and we can feel very proud. But, that doesn't really happen very often.
Usually, if you try that big-bang approach, when you get to shipping you realize that you haven't shipped something that your users really want! Instead, we're better off thinking about how to slice our work into tiny little pieces that we can deliver incrementally. At each step, you can get feedback from real users, and figure out the best direction to go next. After doing that for a bit, you'll build up an amazing solution that people will really love!
It's easy to describe this different work flow, but in practice, it's very hard to do simply because it means a lot of learning that you're wrong, and changing direction. If you want to work in software, you'll want to develop a feedback/response muscle to get used to hearing about what's working, what's not, and thinking about how to improve.
Because there are so many topics available to learn, it can be intimidating at times to feel like you don't know enough. This can be especially difficult for those newer to software to feel like they aren't adequate. It's important to remember that everyone has been in the same position and have had to climb the mountain of learning. Once you climb that mountain, it can be one of the most rewarding experiences. As a suggestion, find someone who is willing to mentor you and help you learn how to learn.
In my experience, the aspect of software development that I have trouble overcoming is the social and collaboration aspect. I am introverted when talking to others. When I learned software engineering in college, I thought that working with software would be individual-based and that social interaction wouldn't be important, but as I became employed, I learned how important teamwork and collaboration is with software when being with a team of developers.
Hi Zacariah- Software development doesn't mean that you just put your skills to work. It involves learning, growing and involving yourself. You need not be an expert in what you do, but having the flexible mindset to learn more will help you a lot. I was initially struggling with all these factors but now I have overcome the fear of having inadequate skillset by keeping myself open for learning more and new. Don't hesitate to ask your teammate for the opportunities that you have at your organization.
And most importantly don't forget to love and enjoy what you do.
Great question! It's always good to look at what may be a turn-off about a job in addition to the things that make it great. For me, the aspect that's been hard to overcome is dealing with some of the more tedious parts of the job. Often you'll need to do repetitive, tedious tasks over and over that can be a drain and take you away from doing the more interesting parts of your job. In order to combat this, you'll want to spend time thinking about automation. Nuilding tools that will do that work for you or embracing existing tools like Terraform, ansible, and many others can make the job much more enjoyable.
Casey recommends the following next steps:
continual Learning and Adopting to newer methodologies and technologies
o I think that quite often it’s easy to lose focus on what the end goal of the piece of code is supposed to accomplish. You need to think about how to best achieve that goal. Think about what works best to do this rather than think that you need to use the new technology or framework because you think it’s cool.
One other thing is to do things incrementally rather than trying to solve the problem in one fell swoop. Don’t be frustrated by code failures but rather use it as a learning experience to see why it failed.