In answer to Ahslee's post "10 Questions I'm Asking All Companies Before Scheduling Any Interviews" I also like to emphasize on "hidden duties" that you should spot as soon as possible.
Some companies like to merge three+ jobs into one but keep the payment on the level of one job. It is important to spot these practices and then run as fast as you can!
Some of the hidden duties are mainly wanting the software engineer to do
- Maintenance of legacy code
- Quality Assurance (beyond code-based testing)
- DevOps (they want to merge admins and developers but hide this fact and sell it as the sexy latest tech)
- Administration and infrastructure (they simply won't hire an admin)
- Design jobs (hidden in the "full-stack" description)
- Support (beyond fixes in the code you have written)
- Consulting (helping lazy or incompetent sales to close the deal)
- Administrative work (formal and bureaucratic processes that should never be done by yourself)
In order to spot these you may ask these open questions and check for the respective facts:
There is nearly always some legacy code treasure waiting for you to be opened. It is not necessarily bad but you should find out how well these legacy systems are documented. Does the product / service you will work on heavily depend on this piece of legacy software (= will legacy maintenance be part of your everyday work)? Does it involve to know/learn a new programming language in order to support the legacy parts?
You should raise your salary expectations based on the severity of legacy influence.
Check, if there are different processes, teams and environments for dev/staging/production testing. Make sure that UX, Usability and Accessibility are to be tested by somebody who is expert in this field.
Make clear you won't be a test-engineer and leave if they insist.
Check, whether you will have to leave your development environment and do any dev-ops related work. It could mean heavy duty work and can also involve lots of risk (downtimes, security etc.) that would require a high compensation to sleep well at night.
Raise your salary expectations by a lot if you feel competent enough for this task but leave if they decline or the task will be too heavy.
If this answer is anything different from "none, we have our administrators for that" it is the direct way to the door. If a company wants a software engineer to manage infrastructure, then they have a big structural and professional problem.
Make clear you won't be a systems-administator and leave if they insist.
See, if you are involved in this process that goes beyond technical issues. If they want you to "think in UX" when creating frontends then you are basically to replace a UX-designer's job.
Make clear you won't be a UI/UX-designer and leave if they insist.
Find out where you are in the support chain. Everything higher than 3rd level means time-intensive work beyond your main job. Third-level means you got a ticket that some of the code you have produced includes a part that needs to be fixed. Receiving any user messages and classification of the problem are 1st and 2nd level and should be done by support teams to take off the load from the engineering team.
Make clear you won't work beyond 3rd level support and leave if they insist.
See, if you have to be involved in any sales activity as "helping out with technical knowledge". Also check, if this would involve any physical presence (=travel) at these meetings or events like expos.
Ask if you get shares if deals are closed based on your help and competencies and also ask if travel costs are fully paid by the company. Otherwise leave.
Find out if there is any paperwork to be done beyond requirements, documentation, reports and all the things immediately related to what you will actually do as engineer.
Anything that involves money, paragraphs or authorities should usually not be part of your job and could also bring you into legal trouble. Better leave.
If you feel comfortable that your job description seems to be legit, then don't forget to check the contract. Make sure there have none of these hidden duties sneaked into it. Everything you have talked about is basically invalid, in case the contract.
Real World Data Structures - 30X Faster with 1 LOC
Renaissance Troll -
Over a year of working remotely; These are the top things that I have learned about thriving as a remote worker.
Wilson Reyes Collado -
Ten Tips for Becoming an Elite Developer
Daniel Warren -
21 Awesome DEV portfolios for your inspiration