How to become a coder, developer or software engineer?
Developer, coder or Engineer: which one is the best option to choose and be in the right path? If we knew the answer then we could stick to that one and be set for life.
That sounds easy, right?
If only life was that simple then there will be no need to choose between them. Back to the beginning of my journey into the technology field, I had this question and couldn’t figure out the answer.
Today after many years I finally get to know it. The answer is none and all at the same time. I will explain what I mean but first, let’s jump back on time.
During the different stages of my professional life from college projects, first job, and all others consequently, I have heard many persons referring to Software Developer as coders, developers, programmers, engineers, and others.
I didn’t know at first how to react to such tag names. Should I get offended, proud, not care, or rectify those persons?
Then I realized that I didn’t know the difference myself and it should be my first task if I wanted to be referred correctly.Take into account, this time was happening on my green early 20’s where our sense of pride, eagerness to be noticed and willing to conquer the world is always present.
Quest For The Truth
My first action was using an indirect approach to introducing the topic to some colleagues, coworkers, and friends to seek out their answers.
You will be blown away if I share every definitionI have heard. Answers were from : hmmm, a coder is a guy that do code and make things move (great! coder can be telekinetic and move objects), …a coder writes code, right?—what!!, or this one “developer is not who develop things”— no freaking way, this guy was a genius!). My favorite Do engineers study computer and that stuff? Aren’t those only who build highways, bridges, and buildings? —Didn’t know how to tackle this question.
Final conclusion gathered: Those people labeling me and others with different tags didn’t know at all why the words and their meaning. They were just repeating like parrots what they had heard from other. They believed to be right about that guy seating on the corner mumbling numbers, logic, algorithm and many other confusing phrases that not one understood.
There is no clear definition and still software developers are called many names.
Fast forwarding on time and after few job experiences…..
I started to actually comprehend that the use of these labels was influenced by different factors. Some of them are company size, people (referrers) background or my famous one: possible net pay if you were going to be hired for an open position.
If you think about it, a person trying to categorize those 3 levels from good to excellent will give you a position of “coder” to not pay you his concept of “engineer”. Below you can see how this statement become true.
After years of combined experiences in a variety of environment ranging from start-ups, small, medium and big companies, with technological people hiring their equals and people with no clue trying to hiring tech guys; I have broken down the definition, not by pay level or knowledge but product output quality when getting the job done.
Coder is a person capable to write any basic, medium complex code using fundamental concepts. Concepts such as IF/ELSE conditions or FOR loops to iterate in collections to get the job done. Job will just get done and don’t aim for a defensive coding like nice error catching or validations to make sure that objects are accessible. You should not and probably expect a solid object oriented code approach either. Application would run as required while enhancements might turn to be difficult. Having a good scalability for higher user demands and application crash recovery should not be expected here. It would be a plus if present. A lot of shortcuts when comes to technology or tools used could be forecasted as well.
Developer is a more advanced and experienced coder capable to write high complex logic, solid object oriented mentality. Also he is skillful in varieties of programming language and tools. Also, he/she will account for the unexpected, delivering a medium to high quality in user experience or outcome. He/she will be able to link multiple pieces like services, databases, and projects to create the final solution. Future application enhancements shouldn’t be a barrier here and should flow nicely. Solution could be scalable and reusable to similar projects; shortcuts are not common here but solid approach.
Engineer is a person capable to deliver a very high complex architecture using advance methodologies and concepts. He carries an optimum application quality. Engineers will analyze available tools and choose the best ones for the job, plus including or proposing any other viable alternative(s). He/she will be able to link multiple pieces like services, databases, and projects to create a final solution. Also, in the list of predicted way to think and act are to choose modular framework architecture, being proactive to validate logic for exceptions, implement graceful application crash recovery and set solutions to scale properly under higher demand.
Above custom definitions are not by any means related to studies any degree of education or years of experience. It is more around of person attitude, commitment to product quality, reliability, and critical thinking.
The reality is that company nowadays when looking out there for candidates matching their needs, either for full-time positions or contracts, they will classify you inside their minds, let’s face you cannot stop it.
However, we could take the game to the next level and sell them the appropriate image of ourselves by delivering a strong product/impression and get our fat net pay.
Let’s Solve The Mystery
In my experience, companies or individuals will classify you within these categories to determine what to expect from you when comes to service quality and how much it will cost them.
At the end, you get what you pay for right?
Numbers could vary among U.S states but if we take Orlando, Florida as example, we can say that small companies will be willing to pay between 32k – 45k for a good coder, while any developer could come to medium/big companies as low as 50k – 70k, 75k is possible for Lead or Manager position. However an experienced engineer (3 yr+) could get easily 75k – 120k; depending on the sector such as the database, mobile, the web, IT.
If we look to the previous breakdown, we have better chances to grab nice contracts if we sell ourselves and deliver as strong developer or engineers. Both options will require you determination, high studies on college or self-taught, passion, constant learning and professional output.
At the end, what option to choose?
I would say that there will be times when you will be required to be a coder. If time and budget allow, shoot for developer better as it will pay off in clients returning in the future. Other times you will resort to being a developer to avoid lengthy and complicated solutions, or keep costs down; always shot for your best within the allowed limits.
Finally, the engineer will be always the perfect choice on many places as they could figure out things, guide others juniors, architect solutions for profitability —less crashes and optimum quality.
In addition, an engineer can offer tailored solutions based on particular projects needs. They will have stronger possibilities to move up on corporate ladders toward management positions due to critical thinking and ability to see the overall picture.
All options are a good fit for someone, let’s just be prepared for what to expect once you are out there and trying to monetize your time.
I have been myself all of them at some point in life. Also, I have met plenty of people delivering in the real world as each one of them.
If anything we can take from this shared experience, shoot for Developer and you will do good, plan for Engineer and you will move up on wealth, want to relax and be laid back then let’s be a happy coder!
The ball is served , What will you do now?