How to lead a team full of junior developers?

Currently I’m leading a team of 4 developers, all of them started their careers 5-6 months ago. I can consider ourselves lucky, as we’ve been assigned to a greenfield project, it’s completely up to us to achieve the business goals. The company itself is quite small and they have a long history of maintaining legacy applications and they are far from being up to date. These circumstances led to a certain level of isolation within the company. I was extremely motivated at the beginning but after several months I began to feel burnt out. My position is quite tricky: since it’s only 5 of us, without any management or business team assigned specifically to the project, mostly I deal with it. Designing architecture (and writing huge part of it), holding code reviews, organizing the backlog, trying to drive everything and communicating our progress towards the management. As I mentioned, I started to feel burnt out, frustrated. I can’t really get any help, not even technical discussions with someone, and I can’t realistically expect the juniors to challenge my decisions.

Anyhow, my real question is: How do I deal with all this? I’m trying to keep the codebase as clean as possible, while maintaining progress, so the project won’t be shut down, but sometimes I feel like I accept solutions that otherwise I wouldn’t, for the sake of progress. These might sound silly questions, but I’m sure some of you might’ve experienced it before: how many times is it ok to decline a pull request? How many trainings do I need to hold or how many percent of my work should be writing documentations so I’m not a single point of failure? I obviously don’t expect anyone to specifically answer this, but rather I’d like to hear an opinion.

Should a (junior) developer try to push for better processes and practices in their development/IT team?

I’m a junior developer that is given the ability to help shape my team’s processes if I can justify the change, and if it helps the team get work done. This is new for me as my past companies more or less had rigidly defined processes that came from management.

My team is fairly small and somewhat new (<3 years old). They lack:

  • a well defined software development/work management framework (like scrum)
  • strong product ownership
  • well defined roles ( e.g. business staff will do manual testing)
  • regular standup meetings
  • a consolidated issue tracking process (we have a tool, the process is still being developed)
  • a unit, system, regression, or manual testing suite or list
  • documentation on business logic and processes
  • a knowledge base to document internal and customer facing tips

And the list goes on. Management is open to the implementation of improvements so long as the value is justified and it helps the most important work (namely the development) get done. The underlying assumption however is that you have to take ownership in the implementation, as no one is going to do it for you. And it goes without saying some of the above projects are non-trivial, without a doubt time consuming, and are clearly not development work.

Is it worth a (junior) developer’s effort to try and push for the above as time goes on? Or is it best to “stay in your lane” and focus on the development, and leave the bulk of the process definition, and optimization to management?

As a junior developer, how can I broach critism of not-yet used chosen tools

So I started a month ago at relatively small company (12 people in the building) as a junior developer without professional experience apart from my own (7 years) and no degree. We’re building a JEE app that’s been going on for 15 years, and for the next version it was decided we would rebuild the frontend, removing frames/iframes/JSP and using a restish API. They also decided that we would use ExtJS as a framework. I just started discovering it and here is what I thought:

  • They have a large, although far from exhaustive, base of available components

However:

  • The framework provides poor information over encountered errors. For instance, it doesn’t test the type of data sent to classes, leading to cryptic x is not a function where a proper framework like react would have said x is y expected a z.
  • The community is small and googling errors is often useless, so you are left helpless / requiring a senior dev’s help
  • The UI looks like shit. Seriously. Their icons are ugly. Their buttons are just rectangles. They have a poor choice of colors. Do the even have a designer? A six years-old could have done a but better job.
  • The underlying mechanics are not obvious: scopes are unclear, what a single param will effectively do is unclear…

I’m not the only one feeling that way, our intern webdesigner agrees.I’d like to bring this up to my manager, I think if I brought it up the right way he would listen. Although, it’s not the first time I talked about technology choices (we still use CVS and we don’t use any build tool like maven) but I do believe that the technology choice, when rebuilding from the ground, is a matter of importance and going off the wrong foot might be detrimental.

I already asked why they would choose ExtJS over React/angular etc and it seems because – our headquarters like extjs, and already paid for it – licensing might cause issue with another approch (since we would need several libs) – tech debt could be an issue (eg Angular versionning)