As a junior engineer, you&#x27;re expected to be able to handle specific tasks, that usually have been specified to some degree, or that follow existing patterns.<p>This is in contrast with senior engineers, which are expected to be able to handle responsibility for a large system or subsystem, and to be able to design and coordinate execution of work at a larger scope.<p>In consequence, junior engineers usually are not expected to have necessarily a very broad knowledge of different disciplines, methods and tools; they need to have sufficient knowledge to execute the tasks that will be assigned to them, and the ability to execute them correctly.<p>One particularly important skill to develop is how long one should try to find out things on their own, before asking for help. Many people fall into extremes -- either ask for specific help at every step (which hints at incompetence for that task) or waste many hours or days following a wrong path when a 5-minute chat with someone could have pointed them in the right direction (e.g. &quot;use this library&quot;).<p>So my advice would be to find out which are the kind of tasks that you are expected to do at this point, which tools (including programming languages, database, web server, etc.) that you need to know, and focus on doing a good job in those specific tasks.<p>At the same time, slowly start increasing your scope (e.g. by doing reading and playing with different tools in your own personal time).<p>My main practical advice would be to make sure you understand the requirements of the tasks that are assigned to you. It&#x27;s very common that senior engineers take something for granted, as obvious, but junior engineers miss those implicit requirements. E.g. &quot;of course it needs to be highly available, fault tolerant, and with sub-millisecond latency, duh!&quot;