Pragmatic Development
What does it mean to be a pragmatic programmer, or to program pragmatically? Generally speaking, acting pragmatically or being pragmatic means to act practically. Taking things for what they are, don't make things more difficult then they have to be. Take these ideals and apply them to development and you can be a very efficient, very productive, pragmatic programmer.
Andy Hunt and David Thomas have written a terrific book on Pragmatic Programming. They mention many qualities that they have found pragmatic programmers to possess:
- A fast and early adopter - Pragmatic programmers love drinking the newest flavors of the technology coolaid. Playing with a new technology is like getting to play with a new toy. It's fun and represents something new and unknown to be figured out.
- Curious and Inquisitive - Pragmatic programmers are always asking questions. Curious about how and why things work, and what the best way is to solve a problem. The knowledge picked up from these questions almost always becomes more useful in understanding future questions.
- Grounded and Realistic - Pragmatic programmers have a very realistic view on things. They won't forget that the webapp you're building is only a tool for the means, not the end to the means.
- Jack of all Trades - Being able to wear multiple hats makes pragmatic programmers more adaptable but also more valuable. Pragmatic Programmers have the ability to switch from one task to another pretty often, while still being able to claim a master or some.
- Care about their craft - As a pragmatic programmer you have to care about what you are doing if you are to really have an appreciation for what you do. A pragmatic programmer has fun crafting their code and finding elegant, yet practical answers to their problems.
- Always be thinking - A pragmatic programmer tries not to do things out of habit. Always asking "why?", and "how?" helps to always be thinking about your work and why you are doing it the way you are.
The Pragmatic Programmer
Interviewing Your Future Employer
Going through an interview can be a rather daunting experience, however this is a good time for a candidate to find out more in depth information about the company, it's culture, processes and many other aspects that may not be immediately realized. This list should serve as a starting ground for job hunters looking to build a dialogue during their interview process.
I would first read through this list and break these up into categories that work for you. Save certain questions for round two or three, or for a more technical person, or for someone in more of a management role. It may be useful to ask some questions only once, or some towards each new intervewer you chat with to get a feel for how each role feels about a certain topic. Also, if you are fortunate to get the name of the person interviewing you, do your research on that person to build up some more topics to talk about during the interview. Finally, do your research on the company as well as demo their products/servces if you can and read through some source code they may have released to the Open Source world (you never know what sort of funny comments you might find that could spark a conversation).
Job Opening
- What brought on the need for this opening, client? project?
- What would be my title?
- Who would I report to?
- Were do I fit in on the company org chart?
Working Conditions
- What kind of team will I be on?
- How many people are on the team?
- What skill sets the team members possess?
- Take me through the day in the life of a developer.
- How long is an average work day for a person in this position?
- How often does the team have late night sessions to meet deadlines?
- What sort of flexibility is allowed for work hours?
- Can I work from home occasionally?
- What sort of hardware is provided to developers? Multiple Monitors?
- What is the usual expected productivity rate or utilization rate of your team?
Process
- How are teams organized?
- Explain the relationship between developers, creatives and account managers and how they work together on a project.
- How is employee performance measured? By Whom?
- Explain the lifecycle of a project from beginning to end and how each team is involved in each phase.
- How does your team learn from there previous mistakes?
- How does your team manage the tradeoff pyramid? Which point does the team continually find compromising on?
- How are employees expected to track time? Using what software? To what accuracy?
- How does the company share knowledge? (Is there a company wiki? Basecamp?)
Company
- What are some difficulties the company is facing right now? What's the strategy in place to overcome those issues?
- What's the toughest technical issue you are facing right now? Non-technical issue?
- What is the companies policy on intellectual property?
- What is the companies turnover rate?
Culture
- Employee Age range?
- What sort of extra curricular activities does the company provide? Are these organized by employees?
- How often do departments get to mingle and meet one another?
- What's the dress code?
- Who was the last person you met for the first time at [COMPANY HERE]?
- Where do most people live in the area?
- Do people carpool?
Growth
- What's the opportunity for growth within the company?
- Where can I go? What can I do?
- Does the company provide allowances for employee education? Conferences? Training? Workshops?
- What is the company policy on being transferred to other offices?
- Is there a mentorship program or something similar?
Development & Best Practices
- Code Repositories? Which one?
- How do you handle staging/development sites?
- How do you handle bug reporting and testing? Is there a QA team?
- How is a project schedule managed and maintained?
- How is the office noise level?
- How do people communicate around the office? Instant Messenger? Email? Twitter?
- Is there a library available for developers?
- Are there code reviews?
- What Project Management tools are being used?
- Does the team contribute code to the open source community?
Interviewer Specific
- Should a developer be a jack of all trades or a deep specialist?
- Why do you like working here? What are your favorite parts about your job? Least favorite parts?
- How long have you worked at [COMPANY HERE]
- What's something that you or your team has done that you are really proud of?
- Where do you see me in 6 months?
- What are you looking for in an ideal candidate?
Fun
- Is your coffee filtered or unfiltered? Free?
I have assembled this list through various resources on the internet, Stack Overflow's - A Standard Set of Questions to ask and Interview as well as the infamous Joel Test by Joel Spolsky, friends and family. Thanks to all!
Please feel free to leave any additional questions or idea to the comments and I will try and add them to the list!


