If you are new to software programming, you may get confused about different titles of programmers, and probably you have questions in mind like
- what are the differences among them?
- which one should I target?
- where to start?
In this post, I am trying to clarify the picture for you, and answer your questions based on my own experience as I played all the above roles and more through out my 17 years career journey.
As the name states, this is someone that writes code, just writes code with no authority to make decisions on how the code look like. In other words, someone with more experience tells the coder what to write and what practices to follow while writing code. To be a coder in a specific programming language, you just need to learn its syntax.
Also, referred to as Software Engineer is using coding to develop the software, they are not just coders, they take design decisions while coding, they need to learn things like Algorithms, and Design Patterns beside syntax.
This is a very high level role in the team or the organization that takes high level decisions like what technology to use and how the system components communicate with each others and integrate with external systems. The Architects should be experienced developers for a while before becoming Architects, and they should not stop coding after becoming Architects. Otherwise, they will be outdated, and will get disconnected from the development team by taking decisions that may not be applicable by the team.
I kept this one till the end as it is a little bit confusing.
- In some organizations and teams, there are a dedicated Designer role that is something between Developer and Architect. In such setup, the designer plays a role similar to Architect role but on a smaller scope, let's say component scope, deciding in a lower level how for example a front end component is designed, what patterns to leverage, and what libraries and 3rd party components to use.
- In some other organizations and teams, there is no such separate role, in such case the high level design decisions are handled by the Architects, while the lower level design decisions are handled by the Developers/Engineers. The definition of what is high level and what is low level depends on the application size and complexity, which means there is no unique definition for that.
Don't try to be a coder, start by learning to become a developer/engineer, then you can decide if you would like to become an architect or something else or just stay as an experienced developer.