From the course: Introduction to Career Skills in Software Development

The biggest challenges - Python Tutorial

From the course: Introduction to Career Skills in Software Development

The biggest challenges

- Programming is a career that I love! But that's not to say there aren't bumps you'll face along the way. Here are the top three challenges I've seen in this career. Number one, naming. Some parents spend weeks, if not months, picking the perfect name for their child. They may want a unique name that reflects their culture or one they believe will make the child more successful in the future. But that's something they only have to do once. Programming involves naming things daily. When you write code, each class, file and variable can have a name. And the name matters. Naming is a form of communication. It helps convey the purpose of the code, what someone should expect it to do. This is as important as eventually, the code may need to be changed. Naming things properly will make them easier to read and understand. Number two, working with Legacy Code. You will find various definitions of Legacy Code online. The definition I prefer is code that you're afraid to change. Why might a programmer be afraid to change code? It could be that the code is not up to date with the latest software practices and design, the original programmer who developed it no longer works with the company and the code is too complicated to understand, there are no tests or the tests are insufficient to feel confident in making changes. Working with Legacy Code can be a real challenge for all of these reasons and more. Number three, providing estimates. Very few programmers are good at estimating a task duration. The work we do is complex and often there are various unknowns. However, businesses need to know when their customers can expect to receive the new software or feature. This requires programmers to inform others how long they think it will take for them to complete a given task. Seems simple, no? Well, not quite. A programmer needs to take various factors into account when providing an estimate. How many total hours of coding will they have minus meetings and other tasks? What type of research is needed before coding this new feature? Will it be easy or difficult to write tests for this feature? Do they need to provide documentation for others? The answers to each of these questions will impact the final estimate. That's why software estimation is often referred to as an art. It takes time and experience to provide reasonable estimates to others. Don't let this scare you. Like any challenge, it's essential to be aware of them so that you can successfully face them all over time.

Contents