When you are out on your own, or given more responsibility in regards to the way you approach software development tasks. At junior level you would mostly be working under others and contributing to projects through tasks assigned and delegated to you by a technical lead or more senior members of the team. At mid-level you would be involved much more in making critical decisions and given more autonomy in regards to the way you approach and solve software projects. You will be involved in decision making and have responsibility for being more autonomous than a junior level developer. You would be moving towards being a developer that gets things done regardless of the fact that decisions and pre-requisite steps are missing from the process when the task falls in your lap. Mid level developers use their skills to get things done by making critical decisions by themselves.