Software developers love sharing knowledge. If it wasn’t for this one key fact, there wouldn’t be such a large supply of helpful information online for free, which is almost always better than that available for pay.
There are always a lot of younger developers entering the industry. Many of them will do very well without anyone’s help. Others will struggle for years, under utilized, under a paid, under appreciated, and not growing their skill sets.
When I get the chance, I like to chat with junior developers about things they should be aware of and/or actively doing.
- Software development isn’t all about technology, design patterns, and architecture.
- Complex software often requires a team of people.
- The most important thing to be produced from a software development project is working software.
- Making working software effectively and consistently requires a good software development process.
- Learn your software development process. Learn how to continuously improve it.
- Take chances by executing on things that aren’t happening.
- As a junior developer, the majority of the time you will gain responsibilities because there is no more-senior developer to take them on.
- As you become more senior, you will have the opportunity to do things that the company isn’t doing because no one is willing to take them on.
- In all organizations there are people that have defined responsibilities. For those people, that responsibility will be the most important aspect of the company’s inner workings.
- They will ruin your efforts if they think it is causing them problems or extra work.
- If at all possible, try not to explicitly give others extra work.
- You don’t do this out of respect.
- You do it because they won’t do extra work for you.
- You won’t learn everything you need to know at your job.
- All organizations that produce software experience some type of technology lock-in. This is often the result of two concurrent forces.
- The first is developers who don’t want to to learn new way of doing things.
- The second is management who desire to standardize on processes and technology.
- Standardization without continuous improvement leads to organizations that are resistant to change.
- Change is necessary to achieve long term goals, match industry changes, and client business needs.
- All organizations that produce software experience some type of technology lock-in. This is often the result of two concurrent forces.
- You won’t learn everything you need to know at one job.
- Do not plan to stay at your first few positions. Work until you feel you are not learning anything new, then leave for more experiences and always more pay.
- As a junior developer you need a breadth of experiences. The only way to get those is to work with different businesses, technology, and other developers.
- Have side projects
- You must have something to constantly keep your mind active and an outlet to explore things that your job won’t allow.
- All the real problems in software development are people problems.
- Technology problems are not major issues for a software development project.
- A technology problem is just an undiscovered technology solution.
- The types of problems that kill progress on software projects are people problems.
- Miscommunications
- Stalling over decision making authority
- Interactions with groups outside the immediate software project leading to delays.
- Ego, fighting, disagreements, etc.
- Technology problems are not major issues for a software development project.