The difference between a junior and a senior developer? | YourDevOpsGuy

What is the difference between a junior and a senior developer?

Senior software engineers design solutions to complex, open-ended problems, with no guidance. They gather requirements, design solutions, tasks, code, deploy and maintain the system. They care about the system’s performance, security, testing, extensibility, scaling, instrumentation, and maintainability.

This is something I later learned as part of a training session at Amazon on how to move to the next level. They expect seniors to figure out how to solve problems on their own, while juniors need guidance. This does not mean they know everything. This includes knowing when and how to ask questions, which takes experience. Senior engineers take tasks that no one else wants to do and that cannot be solved with a simple Google search.

Do not equate years of experience with wisdom. There are people with 10 years of experience and people who have experienced the same year ten times. I recommend never getting too comfortable with what you are doing to keep growing.

This is a list of tips I wrote during my first year as a software developer. They come mostly from making mistakes and observing team leaders and principal engineers.

15 things I wish I had known sooner

How to work more efficiently

1. For every task you work on have a clear definition of done

2. Define the scope

3. Time estimates are hard

  • Design and choose a solution.
  • Change or add new tests.
  • Get my colleagues to approve my pull request.

4. Mindset

  • Ownership
  • Bias for action
  • Dive deep
  • Earn trust
  • Disagree and commit

Sometimes principles may contradict, so take make a decision based on your situation. A senior developer does not just write code but is a leader that takes impactful decisions.

How to optimize your work

5. Automate

6. Work incrementally

7. Premature optimization is the root of all evil

8. Get a rubber duck

9. Revise your assumptions

  • reading the wrong configuration file
  • using outdated information from an internal wiki page
  • problems with someone else’s code
  • copy-paste related errors

Logging and quick chats can speed things up.

10. Read the documentation

11. Beware of comments

“Code never lies, comments sometimes do.”

Ron Jeffries

The best comment is the one you don’t have to write. Comments, like code, can rot and be misleading. If you are going to write a comment, make sure it is the best comment you can write

  • Do not state the obvious
  • Be brief and precise
  • Check your grammar and punctuation
  • Remove comments that produce noise

12. Learn to communicate

Consider clear and effective communication as part of your job requirements.

How to approach complex, open-ended tasks

13. Ask questions

  • What are the inputs your system expects?
  • How many users do we expect?
  • What is an invalid input and what to do when you receive one?
  • What output do you need to produce?
  • How many requests per second?
  • Do we need to deal with internationalization?
  • What is our service level agreement (SLA)?
  • Do we need strong consistency in our database or is eventual consistency enough?

Sometimes you will not have all the information you need to start solving the problem. Chances are no one will and it is your responsibility to figure it all out. The moment you start taking this type of task you will know you are operating at a senior level.

14. Design on paper first

  • Where can the system break?
  • What are the bottlenecks?
  • Are we relying on third parties? What happens when something goes wrong on their end?
  • Can we use a cache to improve performance?
  • What is an appropriate TTL?
  • What is the worst thing that can happen if we temporarily serve stale content?
  • How can we log and monitor the system?

Document your choices, the rationale behind them, and potential risks.

Bonus tip

15. Do not be a one-trick pony

You don’t need to become an expert, but you will an appreciation of how the different pieces fit together. Try to learn a thing or two from other areas that you can apply in your career. You may find that you love something you had never tried before and change careers!

Originally published at https://www.yourdevopsguy.com on September 27, 2020.

Learn to think like a software engineer. Ex SDE @amazon. Currently SDE @ebay. Find me on Twitter @codinglanguages

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store