Everyone can be a "software developer". Even thought I went through a really though and challenging university degree, which I finished distinctly above average, I have to go through whiteboard interviews. This won't change with additional job experience. For some reason, companies do highly mistrust my skills and degree. Other jobs, equally well paid, do not require this.I don’t give any credence to the college someone graduated from when I’m conducting job interviews. I have a computer science degree, but I’ve seen too many people graduate with a computer science degree that cAn talk theory all day long but couldn’t program their way out of wet paper bag. On the “smart and get things done” quadrant, they were completely on the “smart” quadrant.
I have been a software developer for over 20 years, but unfortunately I spent way too long at one company and became an “expert beginner”[1]. So I’ll just talk about the last ten. For all intents and purposes, I may have gotten three solid years of usable experience out of my first 12. I’ve had 5 jobs in the last 10 years - my interview experience.
1. A semi technical interview. No white boarding. I just described my experience and thought process about delivering results. They were a startup and liked my practical experience delivering code.
2. I did a pair programming test where they had a project with failing unit tests and I had to refactor the code to make the tests pass. I think they had a written test with some practical questions and a coding part.
3. By now, my years of experience and practical worthwhile knowledge had finally gotten somewhat in sync. I was applying for senior level roles. They asked technically questions, a whiteboard interview where they wanted me to design a scalable, fault tolerant system and a normalized database system. They quizzed me on my design decisions.
4. A team lead position where the hiring manager asked me about my 90 day plan to create a software development department and to come up with a migration development plan to move them off of an old Access backed system.
5. A white boarding discussion about the company’s current technical issues with scalability, automation, fault tolerance and suggestions about how I would tackle them.
I did have to do a whiteboard coding exercise that consisted of writing a merge sort. I did it, they made an offer but after seeing the interview process, I knew that was a company I would never work for at the position they were interviewing for. They did make me an offer though.
You have to know _a lot_. Programming languages, Tools, Operating Systems, Tests etc. On top of that, specific domain knowledge is required. Unfortunately, my brain forgets and if I work with different technologies, after 1 year I will not start at 0 but definitely neither at 100%.
I consider myself a full stack developer/architect from the web down to (cloud hosted) net ops/Dev ops/development. I can go in with no infrastructure and design a pretty good system at each level. Yes if I am not constantly working on a part of the stack - especially the front end - I do have ramp up time to get at a high level of efficiency. But people do it all of the time.
This is no different than any other high paying profession. You’re expected to know a lot about your field or at least be able to ramp up fast.
After all it's "just" software. Besides yourself, nobody really cares how you solved the problem. Sure, it's quite appealing to think through a complex system, tune it, develop it etc. but often it includes cumbersome work and decisions are made elsewhere.
Most software development involves maintenance of other people’s code. People very much care about how you implement something.
As far as being able to make your own decisions, the secret is working for a small company. But only do that after you gain some real world experience and can learn from others.