Many of us have been duped into working at companies that are painful to write code for.
What things would you like to know about a company's development environment/philosophies before even considering a job?
- What is the platform? What tools are used? Is there integration between issue/task tracking & source code & builds? Using CI? - What is process/budget for procuring or updating additional productivity/developer tools and hardware? - Is there a development/QA/staging environment? Who maintains those?
- What development process is used? How long are cycles? How is it measured? Who is responsible for the process and the various activities in the process? - How does development process integrate with support/delivery/ops processes? - How is product roadmap and direction set? How are changes handled? - Who is responsible for overall architecture & UX? Who makes trade-off decisions? - How can I evaluate if I am being productive & effective in the organization? - Who will be most likely to give me feedback about code, features, contributions?
Re: testing comment - Ask "What is your definition of quality"? Is it related to meeting expected behaviors or do they use a narrow metric like bug count / severities? How are expected behaviors of the system established? Via written documentation, team discussions, etc? How are bugs reported, triaged, resolved? Via tool like Github, Jira, or TFS, or via Excel/email/verbal? Do bug reporters have access to tools for screen capture? Do application logs provide sufficient information?
- Links to public software contributions - API Documentation
- Delivery/Deployment methodology (shrink wrap, separate releng process, continuous delivery)
- Who is on call for production, process or code issues?
- What software code metrics are tracked/graphed?
- What process metrics are tracked/graphed?
- What is the companies take on security?
- How are tasks assigned to engineers?
- Do you have a separate tools/devops/process team?
- Is there a separate project management department?
- Does the company contribute to meetups, local communities?
- Who goes to conferences, career training sessions?
- Is there internet access at the office?
- What is the office setup like? cubes, desks, offices? standing desks?
- What are the office amenities? snacks, dinner, drinks, showers, gym, yoga, surf, video games?
Do you use source control? Can you make a build in one step? Do you make daily builds? Do you have a bug database? Do you fix bugs before writing new code? Do you have an up-to-date schedule? Do you have a spec? Do programmers have quiet working conditions? Do you use the best tools money can buy? Do you have testers? Do new candidates write code during their interview? Do you do hallway usability testing?
- Iterations: how often do they ship/what does QA cycle look like
- Pair Programming/Code Review: how does the company keep everyone in the loop?
- Project Management (Agile?)
- Testing (Process, Tools)
- Code Reviews
- Current Libraries