Report
Is there a basic dictionary for non-techies like me to quickly grasp the capabilities of who does what in an early stage start-up?
These days those titles all mean the same thing. You can thank the concept of "title inflation" and Silicon Valley for that.
In general, I'd say, a "Developer", "Programmer", "Coder" all rank the same. The true differentiation should begin with the "Engineer" title wherein someone with that title or role should be capable of producing a complete software design specification which may even extend to include a system architecture and then software architecture.
If the first three titles are concerned with implementation (actually writing code, either based on a plan in their head or from a design provided to them), then the Engineer is someone who should be able to produce the design (on paper or digitally) that would be followed and then also be able to implement the design.
In reality, at more sophisticated companies, the architecture piece may very well be split off to someone that is skilled in that field.
In reality, the real differentiation that you may need to be concerned with is the difference between a front-end software engineer, back-end software engineer, operations engineer ("Ops" : concerned with infrastructure), development operations engineer ("DevOps": concerned with creating tools that make it easier for software engineers to deploy their code to infrastructure, setup by Ops), full stack engineers (who are supposed to have some level of understanding of both front-end, back-end, and possibly some level of infrastructure setup and maintenance).
Be careful of the full stack engineers. In my experience, individuals with those titles rarely can demonstrate much depth on the operations side, and then when it comes to back-end and front-end they will only have some real level of depth in one of those.
I've been at this for over 20 years, multiple startups, have worked practically with titles covering Operations, DevOps, Front-End, and Back-End. I call myself a full stack engineer but I'll be the first to admit that because of the rotating skill set my front-end skills are not as strong (at the moment) as the others. As I explained to someone else today (a client): I'm learning how to build Android apps, have worked on iOS apps, but don't consider myself an App developer of any sort... Other people would finish a YouTube video on the subject and then rush to update their LinkedIn profiles for sure.
Incredible lens, mate. Thank you. From what I'm picking up, at least for my 2 start-ups, an Engineer is too early and a Coder is perhaps not as impactful as a Developer can be as a tech partner. Is this an accurate assessment, in your opinion? Or is it too naive to rule Coders out?
As a non-techie, my corporate-speak comparison view, without offending anyone, is SVP (Enginneer), VP (Developer), Intern (Coder).
I'm not sure what you meany by "too early." If you were going to hire one person, I would hire a bonafide software engineer. A "coder" will build things, those things will hopefully look pretty, and those things will probably more or less do the things you want them to do but in reality it is 99% likely those things won't be designed very well, won't be implemented very well, and so "maintaining" them (which is technical speak for discovering and repairing bugs, adding features, etc.) will be more difficult.
I've had three clients over the past 18 months whose code has suffered from severe deficiencies created by past developers. They may have called themselves "engineers". I was told that "our ex-CTO tried to fix bug Y but said they couldn't figure it out, it was too difficult to track down." Reviewing the state of the code itself immediately reveals why this has been the case: it's all very very very poorly written. The company has itself to blame, however, in that they plainly stated that they don't want me focusing on addressing any "tech debt" (industry speak for all of the flaws that need to be repaired and that exist either due to poor skill, pressure on the dev team because of unrealistic expectations, or a combination of both). It's the "tech debt" that makes it hard to make things better and companies that don't spend any time addressing it end up with a situation that becomes worse .
I hate to say it, but the industry itself has made things confusing because of all of these labels. There used to be clarity up until about twenty years ago. But everyone wants to be Senior Software Engineer after two years on the job. It makes no sense.
Getting back to your response. None of those titles make sense. In the industry, titles like SVP and VP (e.g. VP of Engineering) are people and process management roles, those people don't write any code, nor do they design anything. But again, everyone wants a huge title of some sort.
An intern could be assigned any task. The key is that they are supervised. They are there to learn. A high percentage of their work won't ever make it to production. Why should any more be expected from someone that is still gaining an education?
The term "developer" comes from Scrum and it includes everybody in the team (besides the Product Owner and the Scrum Master): programmers, designers, QA Analysts, etc. "Developers are the people in the Scrum Team that are committed to creating any aspect of a usable Increment each Sprint." Scrum Guide (https://scrumguides.org/scrum-guide.html#developers)
Coders are the same as programmers. They are the people to build the code of the app.
Software Engineers are programmers with an engineering background, they have knowledge about architecture, methodologies, etc.
A developer -> Who creates software or applications, from start to finish. They are responsible for designing, coding, testing, and deploying software.
An engineer -> Who designs, builds, and maintains complex systems or structures. They use a systematic approach to problem-solving and have a deep understanding of engineering principles.
Coder -> Who writes code for a software application or program.
Understand with Example:
To illustrate the differences between these roles, let's take the example of building a website. A developer would be responsible for creating the website from start to finish. They would start by designing the website, coding the HTML and CSS, and developing the back-end code that connects the website to a server. They would also test the website to ensure that it works properly and deploy it to a production environment.
An engineer, on the other hand, would be responsible for designing and building the infrastructure that the website runs on. This could involve building a server farm or designing a cloud-based architecture that can handle a high volume of traffic. They would also be responsible for maintaining the infrastructure and ensuring that it is secure and reliable.
A coder, in this scenario, would be responsible for writing the code that runs on the website. This could include developing the front-end code that creates the user interface, the back-end code that handles requests from users, and the database code that stores and retrieves data.
Your description of "engineer" sounds more like a DevOps engineer.
When people say "software engineer," it's implied that they write code.
Especially love the example. Thank you.
welcome
How I'd describe it (would love to see other answers):
Coder - someone who writes code | This could be an intern
Developer - someone who develops full features | This is a "regular" or lead programmer
Engineer - someone who manages entire systems | This would be more CTO or Director level (at the very least a manager of sorts, this is also assuming your app isn't super complex)
Coders are useful for bug fixing or minor updates to a feature
Developers are useful for new features or major updates to a feature
Engineers are useful for managing systems to make sure things don't break
One last analogy:
Code is written
Features are developed
Systems are engineered
(But again would love to see others' answers)
Appreciate it!
Which of these, in your opinion, is ideal as a tech partner to a non-techie?
Not Ideal | Coders - May not be able to complete a designed features
Ideal | Developers - Will be able to complete a feature and features that solve problems aligned to customers can be sold (you don't need an entire app to start making money, as an example a web developer would finish a landing page or online store for you but an app developer should be able to finish a basic app for you)
More than Ideal | Engineers - They'll be able to take your idea from start to finish without having to switch out who you're working with. If you're just starting an engineer could be overkill (especially from a price or equity sense) and it may be really hard to convince them
Personally I like to work with developers early on as they're more willing to make pivots which for super early startups could be a crucial mindset to have. As you get users/customers engineers become more important for gluing code from different developers, data handling, and security reasons.
An exception to my personal take is if your idea can't be made with no-code then you might need to hire a full stack engineer to create the back end (the code that is ran when a button is hit) and connect/make the front end (the menus and buttons that run the code).
Hope this helps!
Love the insight. Thank you.
Are all developers created equal, at least in a geographic sense? Is a good to great developer in the West as good to great to one in the East? Is there a sense of which region in the world 1) tend to be more favorable in churning out good to great developers and 2) have more eager developers to work on nascent start-ups?
No problem!
I think that getting a developer who lives in the region where your app's users will be located will pay dividends in how they implement the design/code alongside the consultations they'll make through natural dialogue.
I've seen great developers from plenty of locations so I'd focus on aligning the developer to the user more. The only reason I can think of to focus on location would be to lower costs for development due to lower cost of living.
However if you're not a technical person this could be risky due to communication issues if you don't hire someone really fluent in your language.
I think the US, Canada, techy-euro countries, India, and a few countries throughout Africa and Asia are aligned with startup mentality, but to be honest freelance developers are pretty good at abstracting emotions from a project (in my main startup I work with artists, writers, programmers, etc and it's definitely harder to hype up a programmer vs an artist)
When hiring I'd focus more on logical choices (communication skills, timezone, reply speed, etc) unless you plan to make them a partner or give them equity then you'll want to make sure there's passion so they'll be ok doing the hardwork needed.
My advice would be if you aren't techie you'll want to align the developer type to something lighter (like a web developer [websites] or no code developer [less tech customization in apps]) so you can learn about developers/development as they code.
If you need a more "hardcore" type of developer (think menu coding plus custom use cases) or seek to give them equity I'd recommend grabbing a techie friend you really trust to get the friends to help with the hiring process or start a very small project with the potential developer to see how things go then transition into a bigger project once you know you work well together.
Freelance developers are usually pretty chill except around project scope so the smaller the project the better (for both you equity/price wise and working with the developer).
Incredible, mate. Thank you!
This comment was deleted 3 years ago.