What ideas should be mastered to go from a junior to a middle skilled iOS developer? [on hold]

I taught myself how to develop iPhone apps and have been doing so for 5 years. My skill level (junior) is described here: https://github.com/BohdanOrlov/ios-skills-matrix

What ideas must I master to become a middle level developer? What resources would you recommend? Particular books to dive into would be very appreciated!

I’ve learned to code following this line of thinking: “if it works, it works.”

With this, I’ve built several apps from idea to production (some gaining 100k+ users) but as you can imagine, my code is messy.. or at least I think it is. I’ve worked on web apps (php, javascript) and iOS apps (objective-c and swift). Moreover, when I interview for iOS dev jobs, I feel a bad case of imposter syndrome. While juniors who’ve never shipped code that is used by people land jobs, I don’t pass any interviews.

I want to cross the junior to middle skill matrix. What must I learn to do so? Ideas I know I am no expert is so far are: architecture, testing and documentation. What else?

Hi, I’m a rising junior in high school, and I have a few questions about majoring in Computer science

I have a few questions regarding Computer Science jobs/majors.

1) How often do you use math in your job? 2) What kind of math do you use in your job? 3) What does the average day look like in a Computer Science Job? 4) What math courses did you have to take in college? 5) How is the job market for a job in computer science? 6) What were your motives for majoring in Computer Science? 7) What careers are oriented around Computer Science.

I just want to let you guys know that I appreciate those who took the time out of their day to read and/or answer my questions.

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)