What I tell Jr Developers

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.
  • 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.