答:
They can (and often are) combined and done by a single person (there is no rule against this (its scrum after all)).

BUT you you need to balance the difference responsibility carefully as the two roles have competing and agendas (and it takes a special person to be able to do both simultaneously). I have seen many try but few pull it off over a long period of time (its a stressful position).

To be the SM you do need more technical knowledge than the PO (as you will be helping organize the development team). It takes detailed knowledge of the product to be able to pull things from the product backlog into the spring backlog (sometimes you just can't pull the top 'n' items as this may be counterproductive).

The PO requires more understanding of the user end of the equation than them SM.  This does not need to be as technical but does require knowledge of how the product is going to be used in the real world and the direction the customer wants to take the product.

If you can find a person that can do both roles then I see no reason to prevent this.

Problems may arise when the PO is being pulled by the customer in one direction that is causing significant strife to the developers (because they need to build some other infrastructure first). The SM job is not to follow the whims of the customer but to protect the developers from their whims. Pulling this off objectively is hard.

Title: In Scrum, why shouldn't the Product Owner and ScrumMaster roles be combined?

Body:
In the more traditional projects that I've worked on, the project manager (and, on larger projects, there might be associate/deputy/assistant project managers should one person be unavailable) is the person responsible for communicating with the customer, receiving project health and status updates, determining scheduling and budgeting, managing the process, ensuring the team has what they need to complete tasks, and so on.

In Scrum, however, these responsibilities are split between the Product Owner and the ScrumMaster. The Product Owner is the voice of the customer. They interact directly with the customer, create user stories, organize and prioritize the product backlog, and other user/customer facing issues. The ScrumMaster handles the process, overseeing meetings (including estimation and planning), removing impediments, and monitoring the overall health of the project, making adjustments as needed.

I've read in multiple sources, including Wikipedia, that the role of ScrumMaster and Product Owner should be held by two different people. I've not only read about, but worked on successful "traditional" style projects where the activities of both were handled by a single individual. In fact, it makes more sense for one to three people to be responsible for handling project (including human resources/staffing) and process level tasks, as they often go hand-in-hand. Process changes have an impact on scheduling, budgeting, quality, and other project-level goals, and project changes have an impact on process.

Why does Scrum call for isolating these activities into two roles? What advantages does this actually provide? Has anyone been on a successful Scrum project where the Product Owner and ScrumMaster were the same individual?


问:
PHP framework most similar to ASP.NET MVC3?
I've done a bit of work with CodeIgniter and a lot with straight PHP...

I had the opportunity to use asp.net mvc3 recently and was absolutely blown away with my productivity. Despite not "knowing" the framework, the combination of scaffolding + intellisense + code generation through the context menus left me feeling just as productive with asp.net as with PHP.

I've evaluated YII, CakePHP, symfony (a long time ago, pre 2.0), and Kohana... and while YII seems most promising none quite matched up to my experience with mvc3.

答: Symfony is extremely powerful in the areas you mention (scaffolding, code-generation etc.). Having used CakePHP, CodeIgnitor (personally, my least favourite) and others, Symfony stands head and shoulders above them in my opinion. Used with the Symfony support in NetBeans or with Eclipse it is an exceptional framework</p>

ContentLicense: CC BY-SA 3.0


答:
Codeigniter its really too good, it is far from what THE Visual Studio is, but when we talk about, we talk abou an framework, lot of premolded functions to increase the time of development, it's really simple to learn, and simple to use, lot of plugins and etc...

When we talk abou an IDE, PHP really don't have one, i work with PHP at 3 years and never found, maybe i'm wrong at this point but actually, we don't have nothing to develop with a great IDE like asp, however, even without and great IDE, php it's really good!

Title: PHP framework most similar to ASP.NET MVC3?

Body:
I've done a bit of work with CodeIgniter and a lot with straight PHP...

I had the opportunity to use asp.net mvc3 recently and was absolutely blown away with my productivity. Despite not "knowing" the framework, the combination of scaffolding + intellisense + code generation through the context menus left me feeling just as productive with asp.net as with PHP.

I've evaluated YII, CakePHP, symfony (a long time ago, pre 2.0), and Kohana... and while YII seems most promising none quite matched up to my experience with mvc3.


问:
What are the pros and cons for the employer of code questions during an interview?
The Joel Test question #11 is: "Do new candidates write code during their interview?". What are arguments for and against to ask new candidates to write code during the interview and to make a decision upon it?</p>

答:
Programming is a highly technical skill with a bunch of clear "deliverables." Either a candidate can or cannot deliver them. So there are no "cons" to asking technical questions.
It's entirely in order to say, "show me some code for this application, or "show me the code for an application you have ALREADY written."

NOT doing so could lead to a result like the following: A rich man interviewed a tutor to teach his children to play chess (as a mind-expanding exercise). The tutor opened up a checkered board and started talking about the 64 squares but didn't touch a chess piece. Pressed for time, the father hired the tutor anyway. And the tutor taught the children to play CHECKERS.


问:
Getting non-programmers to understand the development process
When starting a project for a company that's not primarily a programming company, one of the expectations is that there's a finished product at the end free of all bugs and does everything needed right away. However, that's rarely the case.

What are some ways to manage expectations and explain to non-programmers how software development differs from other types of product development?

答:
One approach that I've found successful is this:

We all know that a computer does only and exactly what it is told to do.

Programming is the way that we tell a computer now what we what it to do later.

This means that the way your behaviour behaves now is due to the combined intentions of everyone who wrote any of the code that is running on your machine. When you consider the complexity of the operating system, drivers, programming environment, libraries and so on, it's easy to see that in most systems there must be upwards of 20k people involved, and that there could be over 100k.

The code written by each person reflects their own understanding, motivation, intention and capability. Given that flawless operation of the system requires that all of the code written by these 20k people interacts without error - that all of the code must agree on the meaning and interpretation of the required behaviour, the suprising fact is not that we have bugs, but that we have so few of them.

ContentLicense: CC BY-SA 2.5


问:
Perks for new programmers
I intend on hiring 2-3 junior programmers right out of college.  Aside from cash, what is the most important perk for a young programmer?  Is it games at work? I want to be creative...  I want some good ideas</p>

答: I think having good challenges and learning opportunities is critical.  That's true when you're above the junior level too.</p>

OwnerDisplayName: Autobyte

Title: Perks for new programmers

OwnerDisplayName: nsanders


答: The opportunity to work alongside experienced programmers.</p>

Title: Perks for new programmers

Body: I intend on hiring 2-3 junior programmers right out of college.  Aside from cash, what is the most important perk for a young programmer?  Is it games at work? I want to be creative...  I want some good ideas</p>

OwnerDisplayName: schwerwolf


答: I personally like the office my company gave me.</p>

Title: Perks for new programmers

OwnerDisplayName: MagicKat


答: I always love going to conferences and training and consider that a perk. Not all companies pay to have their devs continue to learn. There's always more to learn. You benefit because they are learning more. They benefit from that too, but also have fun and get away from things for a couple of days and get to mingle with other devs.

Title: Perks for new programmers

OwnerDisplayName: Ryan Farley


答: be flexible about the starting hour.</p>

Title: Perks for new programmers

Body: be flexible about the starting hour.

OwnerDisplayName: Aaron


答: Two flat-screen monitors, an optical mouse -- two things I don't currently have -- and each their own whiteboard with a few markers.</p>

Title: Perks for new programmers

OwnerDisplayName: moffdub


答:
Flexible Schedule

Good PTO Program

Fun & Exciting Technology/Toys

Relaxed Work Atmosphere

A great idea would be to let all your devs design their own workspaces. Different people need different environments to be productive.

Title: Perks for new programmers

OwnerDisplayName: theo


答:
The opportunity to work alongside experienced programmers.

And also the possibility of learn from them.

Title: Perks for new programmers

OwnerDisplayName: Lucas S.


答:
Philip Greenspun wrote about this once. He suggested making the office a better place to be than home, which is easier for young programmers. For example, domestic hardware that someone living alone cannot justify: expensive coffee machine, pool table, huge TV with DVDs to watch.

Make the office more sociable: put beer in the fridge and have a drink together at the end of the day. Provide better food (easy for people who can't cook): get deli deliveries or a caterer.

Title: Perks for new programmers

OwnerDisplayName: Peter Hilton


答:
Good hardware: I'd be very interested if I was told that I would get a desktop system (WinXP is still my system of choice) and a Linux server box. Something I have root on and can run services on (local at a minimum, world visible would be nice.) A Virtual private server in the company data center instead of dedicated hardware would also work.

Another thing that would be nice would be access to good references: "We will buy you any books that are apropos to your job!" same with software to some point, "if it's under $60, we will just get it."

Edit: large screenS on pivot stands, good chairs, white boards, etc.

Title: Perks for new programmers

OwnerDisplayName: BCS


答:
The access to training and mentors.  The things that Junior developers want is pretty much what every programmer that I know wants.  They want to work in a relaxed and flexible environment with people who are at least as smart as them if not smarter.  They want to feel like they are a part of something.  They want to constantly be learning.

Make sure that you have a training/book budget.  Make sure that they are always learning and always have something interesting to work on.  Make sure that you do team building or some kind of thing like that on a fairly regular bases.  Lunch and learns are an increasingly popular tool these days.

One thing that Junior Developers might like more than more Senior developers is the use of cutting edge or even bleeding edge technology.  Be careful about this one, cause it can byte you in the butt, but it always helps.

Title: Perks for new programmers

OwnerDisplayName: Charles Graham


答:
Give them each a budget and let them configure their own computer setup.  Make them submit a plan for what they intend to purchase.  Talk over the plan with them.  It will be a great way to kick things off.

Give them a budget for a cell phone and unlimited plan that the company will pay for.

Pay for their home Internet service.

Little things like these they will show their friends to the response of, "Cool - I wish my company did that!"

Title: Perks for new programmers

OwnerDisplayName: shadit


答: Treat them as peers</p>

Title: Perks for new programmers

Body: Treat them as peers

OwnerDisplayName: brian


答: One nice perq we have here (beyond training, great environment, and the rest) is subsidized gym membership.</p>

Title: Perks for new programmers

OwnerDisplayName: Danimal


答:
give them responsibilities and some degree of freedom.

make them feel like they are developing something for themselves, with passion

Title: Perks for new programmers

OwnerDisplayName: ugasoft


答: Being able to work remotely + flexible hours, Tech books give-a-way, and lots of love!</p>

Title: Perks for new programmers

OwnerDisplayName: MarlonRibunal


答: Lets them, on company time, do some private projects (things that could be useful for the company, but things they get to pick)

OwnerDisplayName: Autobyte

Title: Perks for new programmers


答: The Joel Test has some good ideas, although you might not consider them "perks".</p>

Title: Perks for new programmers

OwnerDisplayName: mmyers


答:
I'm currently slightly experienced but I still call myself junior.
Here is what I appreciate of my employer:

Buys me books. I have a diverse taste from C# to perl to C to Asm to database design to tsql etc. Book prices vary from $20 to $50. This usually requires a PO and approval and such.

Allows me to critique current projects. I've re-written a few project to be MUCH cleaner through the experience I gain. Each time I document why I made those changes. Every now and then I re-write my re-writes. It's amazing to see how much you change. I do this one on my own. I initiated it.

A fast computer and a 24" monitor. This actually helps a lot, but for any developer. Less frustration and more code on the screen. Monitor also rotates for those kinds of days.

Title: Perks for new programmers

OwnerDisplayName: Nazadus


问:
What are the major differences when moving from console-based to GUI-based programming?
I started, like many others, with console-based (as in terminal, not Playstation) programming. But sooner or later, one needs to touch upon GUI-based programming, whether you want to or not. This transition holds many changes in how you need to think about the frontend (and possibly also the backend).

So, what are the major differences when moving from console-based programming to GUI-based programming?

答:
For me designing a good GUI has always been way more challenging that the technical details of implementing it.

It's easy to say "make it simple and clear, like a Mac". It's incredibly hard to make it such; there are always so many details that should be there available, but at the same time, they should be out of sight.

simplicity http://stuffthathappens.com/blog/wp-content/uploads/2008/03/simplicity.png


答:
There are a number of things that come to mind, and not even for junior people.

Training packages for use with conferences, certifications, or something similar.  Showing a dedication to future growth in the field

Provide flexiable starting times especially to those just getting out of college and not used to working a "day job"

if In an environment where they must work from home, help them out a bit there, subsidize internet service, and/or company cell phone.  If you must have access to them, giving them a way to do it helps.

Title: Perks for new programmers

OwnerDisplayName: Mitchel Sellers


答:
In my experience, good programmers want to program with as few distractions as possible.  Some of these are more relevant to big companies, and I'm not sure where you work, but here are some examples:

Casual dress code: Young programmers in particular will have a tough time avoiding resentment of a strict dress code.  "I'm just going to sit at my desk all day--why do I need to wear slacks/polos/other uncomfortable business clothes?"  In my opinion, this is half rebellion and half honest productivity-seeking: It really is much easier to program in jeans and a t-shirt than slacks and a formal button-down.  The question you probably need to ask yourself is if the potential productivity gain and morale boost is worth the potential loss of "professional" atmosphere.  It all depends on your situation... there are startups and Fortune 500 companies out there which allow jeans & t-shirts.

Few meetings: Almost nothing is more distracting than a constant stream of meetings.  Try to avoid team-wide "status meetings" that could be carried out via individual e-mails or conversations.  Programmers like it when their employer lets them program.

Experienced coworkers: Good programmers want to improve.  If any of your other employees have contributed to big open source projects, or have worked individually on some particularly successful internal projects, let your prospectives know!

Private offices: This is rarely practical anywhere but venture-capitalized startups, but if you can offer candidates their own offices, they'll leave the interview with hearts in their eyes.  Programming is so much easier when you aren't distracted by foot traffic and people singing happy-birthday one cube over.

Cool stuff: If you can afford it, subsidize games for lunch breaks and post-work hang out sessions.

Best practices: This will ensnare good programmers and intimidate less experienced ones: Show that your candidates will be working with reliable, sane version control, and that there are coding standards about unit tests or inheritance or anything.  Organization is important.

Don't nickel-and-dime: If you can be flexible with hours, do it!  No one likes having to clock out every time they go to the restroom; it feels like you're not being valued as an employee.

Dual monitors: Instant win for almost any programmer who's worked with dual monitors before.

Title: Perks for new programmers

OwnerDisplayName: Max Cantor


答: Work from home. (for voting)</p>

Title: Perks for new programmers

Body: Work from home. (for voting)

OwnerDisplayName: pdavis


答: Casual dress (for voting)</p>

Title: Perks for new programmers

Body: Casual dress (for voting)


答: Private offices (for voting)</p>

Title: Perks for new programmers

Body: Private offices (for voting)


答: Good hardware (for voting)</p>

Title: Perks for new programmers

Body: Good hardware (for voting)


答:
The chance to devote time to learning.  Give them the chance to spend longer than expected for a task so that they can pore through books and search across the net to learn the best way to do things.  Give them O'Reilly books.  Encourage them to spend time reading them.  Encourage them to make connections online and become familiar with sites such as this one where they can learn the habit of trying to program well instead of trying to program just to get done.

Yes, that's a perk.  For them as well as for you. :)

Title: Perks for new programmers

OwnerDisplayName: skiphoppy


答:
Admin rights to their PCs

An internet connection that's not gimped by bizzaro proxy rules

Dual Monitors

Work from home privileges

A soda fountain (not a drinking fountain that dispenses soda instead of water ala Brawndo, but like you'd use at the Taco Bell to refill your drink)

Title: Perks for new programmers

OwnerDisplayName: CrashCodes


答: I won't claim this is the most important perk, but I know of a company that has season tickets to all the local sports teams, and employees can use the tickets for free on a rotating basis. It's pretty popular.</p>

Title: Perks for new programmers

OwnerDisplayName: Jeff Miller


答:
Actually, Joel Spolsky has a really good article on this subject that I refer to from time to time:

Joel on Attracting Developers

EDIT: I read Joel's book on hiring devs, Smart and Gets Things Done. In the book, he says that this article is an embarassing bubble-era relic and he has learned a lot since then. I don't think the blog post is all bad, but it's true that the book is a lot more sophisticated.

Title: Perks for new programmers

OwnerDisplayName: Brian MacKay


答:
My company has purchased an O'Reilly Safari Online account for each of our developers. I have access to thousands of books online at any time.

We also have training videos available at online from CBT Nuggets but I find their content limited.

Also, some productivity tools, for Visual Studio, such as CodeRush/Refactor Pro or Resharper

Quality Coffee in-house.

Title: Perks for new programmers

OwnerDisplayName: benPearce


答:
When I was just starting out, I benefited greatly from the mentoring of others in the office. It helped a lot, and I viewed it as a serious perk -- I was often quoted as, "I'm getting paid to learn!"

There are all the trivialities (games in the office, DVDs, etc.) -- I think that while they make for a great interview carrot, they're not a reason said programmers will stay. Indeed, once their work ramps up, they'll probably realize they have little time for those "perks" and wonder why the company even bothers.

As a junior, learning from someone who respects you, is able to teach you and is able to lead you is very enticing long-term. It may not have the interview sex appeal that the others do, but it's something I think all serious developers did appreciate (or would have appreciated, if they didn't get it).

Sponsor a corporate-wide subscription to Safari. Allow a junior dev to take 2 or 3 hours a day learning. Make him feel valued. Let him contribute.

Which is another biggie: Make him feel like part of the team, and give him projects which not only interest him, but also challenge him. Too often, the junior dev gets the jobs like "move control X to the lower right corner," or "write all the property routines" (or getters/setters in Java/Obj-C/et al), or "add javascript validation." Give him something to do which makes him feel useful, like a real contributor. He'll appreciate that, too -- and probably become more passionate about your firm and your practices.

(BTW, my use of "him" is not meant to be sexist; it's just a shorthand. Please expand it to "him/her" mentally.)

Title: Perks for new programmers

OwnerDisplayName: John Rudy


答:
Good project management - with minimal BS and meetings under control

Good technical mentoring

Book reimbursement, resources, tools

And I take issue with the "aside from cash"

I think cash isn't really ranked up that high unless the environment is so poor - that's why they call it compensation.

Title: Perks for new programmers

OwnerDisplayName: Cade Roux


答:
Invite your whole team to the restaurant of their choice every Friday for lunch. A former boss of mine used to do just that and it really helped team bonding.

If budget doesn't allow it, you can do it once every two weeks or once a month. But think of the value of having closer team members.

Title: Perks for new programmers

OwnerDisplayName: Gilles


答: In addition to what has been said, make sure you have them work on stuff that has impact on the business.  If they feel that you value their work as a core part of your business, they might become much more engaged in their projects. If they do, that's the kind of developers you want full time.</p>

Title: Perks for new programmers

OwnerDisplayName: AlanR


答:
Speaking as an actual college student (senior), here's some things I'd like:

A degree of direction (tell me what you need done)

A degree of autonomy (trust me to get it done)

I'm probably unusual among my peers in that I prefer professionalism. As a general rule of thumb, I think casual dress would be very helpful, though it wouldn't be a huge issue for me personally.

But really, the big thing is trust, and letting me do what you're paying me to do. If I think I'm going to be stuck attending constant meetings and always worrying about office politics, that's a big strike against you. Competence is also very important... I don't know if I could work for a manager who knew nothing about programming. I understand that it's entirely likely a great manager might not even be as good a programmer as I am, but they should at least know enough to know what's feasible and what's not.

Oh, and probably the biggest thing for me: Long term prospects. I hate job hunting, and I'd tolerate an otherwise-mildly intolerable job if I knew that I wasn't likely to be laid off, out-sourced, etc.

Title: Perks for new programmers

OwnerDisplayName: Asmor


答:
Casual dress code and office environment

Flexible hours

Allow listening to music while working (earphones allowed)

Multi-monitor/powerful workstations

Skilled/experienced co-workers/bosses

Code reviews done by those co-workers/bosses

Being able to work on creative projects that they come up with, and having them reviewed by those skilled co-workers/bosses (Most valuable perk!)

Title: Perks for new programmers

OwnerDisplayName: Brian Kim


答:
Casual dress code
Free pop (This was one that I really liked back in the dot-com days and miss it sooo much)
Flextime and telecommuting
Configure there own machine w/dual monitors and a budget
Benefits like health care, dental and vision - Some of us like being able to get a discount on glasses or having our teeth checked.

I would also suggest making sure there is a clear process for how work will be done as junior programmers may not necessarily be aware of all the best practices and what kind of environment you want to give them.

OwnerDisplayName: Autobyte

Title: Perks for new programmers

OwnerDisplayName: JB King


答: I'm a new programmer myself. Things I found useful at my last internship are dual monitors (or a really wide one, good to look up things AND look at code at the same time), admin rights on my own box, flexible hours (really important one, put me at ease not having to worry about emergencies/appointments/talking to manager for those and the like). I also loved how my manager/supervisor would never look over my shoulder...feels easier to code that way. Also, our tools server had some free and tested (for our particular environment) programs like folder diff, tool to view method signatures in assemblies, etc. They help everyone but are especially handy to new developers.</p>

Title: Perks for new programmers

OwnerDisplayName: origin


答: Experience with experienced programmers. Games, free food, free massages, are just gimmicks (cough google cough)</p>

Title: Perks for new programmers

OwnerDisplayName: alvin


问:
Debugging applications
In my current developement, I have decided to keep the command prompt open so I can see debug messages. For example, if something wasn't happening when it should, I would put a cout statement at every function to determine where the broken link is. Sometimes, I might get hundreds of the same message (like WM_MOUSEMOVE) and I need to determine whether or not the messages are still coming, so I would using a static variable, and increment it, so I might have:

```<code>...
3> WM_MOUSEMOVE processed.
4> WM_MOUSEMOVE processed.
54> WM_CLICK processed.
5> WM_MOUSEMOVE processed.
...
</code>```

in my cmd. (Don't ask me why there would be 54 WM_CLICK and 4 WM_MOUSEMOVE)

What I would like to know is your opinion. Is this a good approach to debugging? What kind of syntax would you use for consistency? Does a syntax even matter? And would you make any suggestions to how this method could be improved.

答: I use couts/traces all the time - I find that breakpoint style debugging often interrupt my thought process too much and make it more difficult to actually follow the execution. At times, however, breakpoint debugging is absolutely invaluable. I think it's important to be familiar with several styles of debugging and choose the best for each case - breakpointing a mouse move would be hell, for one thing...</p>

Title: Debugging applications


答:
I'm surprised the cynics amongst us haven't said 'non brain-dead leadership'!

Attracting young people with toys is a bit patronising, better to say:

"Yeah so we could offer you lots of new shiny toys, but how about we guarantee you no PHBs instead?"

;-)

Title: Perks for new programmers

OwnerDisplayName: Dipak Patel


答:
Give them the choice of tools as far as possible. I know it's not always possible, but I guess there is nothing more demotivating than forcing a Linux guy to use Windows, a MAC Guy to use Windows, or a Windows Guy to use Linux.

Of course that's not always possible, but also what about favourite email clients? Some love thunderbird, others outlook and others mutt.

Title: Perks for new programmers

OwnerDisplayName: Yaba


答: An office kitchen</p>

Title: Perks for new programmers

Body: An office kitchen

OwnerDisplayName: bob


答:
Adjustable-height desks, I bet they are very nice. Sometimes I would love to write code while standing. I took the idea from here: http://www.joelonsoftware.com/items/2008/09/10.html

However a cool and comfortable chair will rock also. Something puffy or fancy, like those chairs that look like a hand. So I can stand for a while, then sit if I get tired and so on.

Title: Perks for new programmers

OwnerDisplayName: Gastoni


答:
The best equipment:

chair

monitors

modern workstation (e.g., nothing older than 2 years)

ergonomic keyboard

Matching 401k (the higher the match, the better)

Good mentoring.

Freedom to pursue creative outlets related to work projects (i.e., 20% time).

Update: after reading other answers, I think I'd also say:

private office

individual book/training budget

HDHP with the amount of the deductible given at the beginning of the year in the form of an HSA

Title: Perks for new programmers

OwnerDisplayName: Ben Collins


答: Casual dress is huge. I work for a large corporation (150K+ employees). When I started we were allowed casual dress and now are not. That is one main reason I am out looking again a year out of college</p>

Title: Perks for new programmers

OwnerDisplayName: Adam Lerman


答:
Well, remembering back to my days of interviewing for that first big job:

1) Actually hiring me!

Sorry... bad at interviews I guess.

Big favorites for me are a flexible work schedule and casual dress code.

Title: Perks for new programmers

OwnerDisplayName: Telos


答:
There were lots of good suggestions already. I did a quick search on the all the response I can't find these so I'm including these
1. Good health insurance coverage from the employer.
2. Paid time off. it really helps to re-boost employees.</p>

Title: Perks for new programmers

OwnerDisplayName: Prache


答:
In my opinion this will be great perks for new programmers. Though it would also be awesome things to have for any programmer. :)

Smarter and more experienced developers from whom you can learn from

Good software engineering practices that is used throughout the company

Exciting projects (though this might just come along after you find that the developer is fit for the job at interview time)

A friendly and supportive environment

Dual monitors

A comfortable chair (since you will be spending most of your day sitting down), and ergonomic keyboard/mouse

A programming books library, and the chance to request more books to add to the collection

Lunch time or after work gaming sessions

Clean kitchen with a decent coffee machine

On top of that there is an extra big plus for passing the Joel Test.

I am not too keen myself to give/have an own office. Mostly because lots of programmers are very sociable people, and it would be good to have some interaction during the day. However, that might just be a personal choice.

Title: Perks for new programmers

OwnerDisplayName: Marcel Tjandraatmadja


答:
Budget for Books / Mount a library

Good desktop tower with lots of RAM and a fast hard drive

Check what you will demand because that is what the programmer will care about

Title: Perks for new programmers

OwnerDisplayName: setatakahashi


答:
A decent manager, good training, and good motivation would be nice. In all of my past jobs, the training sucked, the managers didn't care, and they ended up "motivating" me right into a new job.

Treat your employees well, and the perks will matter less. (But free food never hurts, either :))

Title: Perks for new programmers

OwnerDisplayName: Scott S.


答:
Definately flexible working hours and lots of training/conferences. Free drinks and video games just seems too trivial.

This may seem a bit contentious but in my first programming job I really struggled for the first month because I had no money. Commuting, even just paying for lunch was a problem and it just made life harder. I couldn't enjoy the job. So maybe a small short-term loan to paid back over the next few months out of the pay-packet might help. Or maybe a one month agreement to pay expenses on production of tickets/receipts.

Title: Perks for new programmers

OwnerDisplayName: lewis


答:
One thing that would be very appealing is if an employer offered to sponsor one non-work interest for each employee. This could be something simple, like paying for karate classes or offering a small scholarship for those who are taking night classes for a graduate degree. I think that contributing to making an employee a more well-rounded person will actually pay dividends for the employer in the end.

Team outings are fun, help bring people together and act as much-needed breaks when projects get intense. Offering even bi-monthly events could be a nice incentive.

Title: Perks for new programmers

OwnerDisplayName: Evgeny


答: Merit based rewards are important; Developers generally despise politics and people being rewarded or promoted over someone who has done better work.</p>

OwnerDisplayName: Autobyte

Title: Perks for new programmers

OwnerDisplayName: BrewinBombers


答:
This is a sort of negative answer.

Don't give the office more entertainment than home.  No TV, video games or beer.  The office is for work and that is why I go to the office.  I go home for video games and TV.

Don't bother with team outings.  It's not relaxing.  It's just more work.  If I wanted to go somewhere to have fun, I'd go there with my own family or friends.  Or I would stay home and sleep late.  No doubt some people believe everyone else in the office wants to be friends and spend all their time hanging out.  It isn't true.  Sorry.

The same is true about company meals.  I like to go out and away from the office for lunch and dinner.  If there is a lunch meeting at the office, I will be making plans to leave work an hour early (with exceptions for crunch time, which had better not last more than a month or two out of each year.)

Title: Perks for new programmers

OwnerDisplayName: Zan Lynx


答:
We have a ping-pong table.

But mostly you want to find out what their co-ops and internships didn't get them that they wanted, and give them that.  I didn't like big companies because I wanted a real voice in the way things were done.  I've been with my small company since undergrad.

Title: Perks for new programmers

OwnerDisplayName: Kevin Conner


答: Lunches out - on the company, of course...with beers.  After work beers on Fridays.  Beer is the key.</p>

Title: Perks for new programmers

OwnerDisplayName: Ty


答: Give junior developers what they need to be productive on their tasks, within the bounds of company policy of course, then if possible, grant them what they want, in order to be even more productive. Though this is relative to individual tastes, just reading from the comments above is a good starting point.</p>

Title: Perks for new programmers

OwnerDisplayName: djwisdom


答:
I think the biggest perk for a new programmer is when they first join the company they have a plan and know exactly what there career "road map" is.

When I first started my current job I was given some interesting work right from the start and I knew exactly what was expected of me. Other fresh graduates were left to school themselves up which ultimately helped them to loose interest in the work completely.

Other gimmicks like a big screen etc are great but they don't make a boring job any better!

Title: Perks for new programmers


答: A chance to be part of a successful team.</p>

Title: Perks for new programmers

OwnerDisplayName: Bart


答:
You are slowly but surely reinventing the "logger" concept, where the three inventions you need are:

A seriousness indication of the message.  Is this trivial debug information or a notification that the disk system is corrupted?

The ability to skip messages you are not interested in.

A need for a message to go somewhere else than on your console.

Others have done the same before you and honed and polished the idea until they got a framework allowing you to say things like:

```<code>} catch (Exception e) {
  log.error("Subsystem X threw exception!", e);
}
</code>```

The logger subsystem then decides if this message should be logged at all, where it needs to go, as well as collects the exception thrown so it can go with the message.  It might be saved for later in a text file, sent as an email or notified in your favorite instant messenger.  This can be very useful for analyzing problems after they happened.

I wrote an introduction to how to start using logging in Java, which you might find interesting, regardless of what language you happen to use.  See http://runjva.appspot.com/logging101/index.html

Title: Debugging applications

Body:
In my current developement, I have decided to keep the command prompt open so I can see debug messages. For example, if something wasn't happening when it should, I would put a cout statement at every function to determine where the broken link is. Sometimes, I might get hundreds of the same message (like WM_MOUSEMOVE) and I need to determine whether or not the messages are still coming, so I would using a static variable, and increment it, so I might have:

```<code>...
3> WM_MOUSEMOVE processed.
4> WM_MOUSEMOVE processed.
54> WM_CLICK processed.
5> WM_MOUSEMOVE processed.
...
</code>```

in my cmd. (Don't ask me why there would be 54 WM_CLICK and 4 WM_MOUSEMOVE)

What I would like to know is your opinion. Is this a good approach to debugging? What kind of syntax would you use for consistency? Does a syntax even matter? And would you make any suggestions to how this method could be improved.

Body:
You are slowly but surely reinventing the "logger" concept, where the three inventions you need are:

A seriousness indication of the message.  Is this trivial debug information or a notification that the disk system is corrupted?

The ability to skip messages you are not interested in.

A need for a message to go somewhere else than on your console.

Others have done the same before you and honed and polished the idea until they got a framework allowing you to say things like:

} catch (Exception e) {
  log.error("Subsystem X threw exception!", e);
}

The logger subsystem then decides if this message should be logged at all, where it needs to go, as well as collects the exception thrown so it can go with the message.  It might be saved for later in a text file, sent as an email or notified in your favorite instant messenger.  This can be very useful for analyzing problems after they happened.

I wrote an introduction to how to start using logging in Java, which you might find interesting, regardless of what language you happen to use.  See http://runjva.appspot.com/logging101/index.html


答: Working with people who can explain why they do things the way they do.</p>

Title: Perks for new programmers


答: interesting work. When I started programming many years ago, you got lumped with the crap work as no one else wanted to do it. </p>

Title: Perks for new programmers

OwnerDisplayName: Aaron Arbery


答: A quality chair aeron chair http://www.hermanmiller.com/hm/content/product_showroom/products/images/P_AER_L146_W.jpg</p>

Title: Perks for new programmers

OwnerDisplayName: minty


答:
Don't throw them in with the general population. Give them a place with some degree of privacy, where they can concentrate and not be constantly distracted by phones, business conversations and foot traffic.

Try to give them specified projects with finite, tangible requirements. Give them goals to achieve, instead of open-ended projects that leave them at the mercy of business types who refuse to ever commit to a specification.

Have and enforce a change request policy. Have and enforce a clearly defined chain of command that requests have to flow through.

Make sure they have more experienced programmers to aspire to and seek advice from.

I would take these things over foosball tables and free soda any day.

Title: Perks for new programmers

OwnerDisplayName: Jerry


答: Hey, well, I'm still in university, so I guess I might be qualified to answer! I can tell you what would attract me personally to a job, but I can't really speak in general terms. For me, the most important thing is interesting work. I don't want to maintain a 40 year-old accounting system. I do want to do something challenging and fun. Maybe that's a bit much to ask for, but I would expect others to ask for it as well. I think this leads a lot of programmers into the game development industry, and apparently they get burned out there, so that's not cool-- but that doesn't mean other development can't be fun. It would depend, obviously, on the person involved. I'd love to do things like image manipulation and simulations (and, yes, game development), but I haven't gone deep into other areas. The number one pulling me into a job would really be the "fun" aspect-- cheap things like a dedicated wii room and comfortable clothes do help, but neither will make me want to take a job fixing the remaining y2k bugs, or whatever else needs doing.</p>

Title: Perks for new programmers

OwnerDisplayName: Devin Jeanpierre


答:
The type of people you'd like to hire tends to be a first-order concern when deciding what sort of perks to offer.  For the programmer who's thinking about or in the process of raising a family, paternity leave, company matching of adoption funds up to $X/year, flexible vacation and working hours, and a sense of job security may be much more attractive than a soda machine and free Segways for all.  You mention that you're looking for "junior" or "young" programmers, but many young folks do still fall into this category.

I sense, however, that by "young", you might mean "too young to be into that whole 'work-life balance' thing".  Let's call this 'The Google Strategy'.  The idea here is to make it so it just doesn't make sense to their analytical minds to ever leave work.  Have on-site services like free food, drink, and laundry, provide gathering places for informal conversations.  Make them feel like they're the rock stars of the company, and they'll repay you with long hours and hard work.  The good news for you is that these types of perks don't cost you much at all relative to the increased hours they'll be willing to put in.  The bad news is that this model tends not to be sustainable, and this dot-com era "irrational exuberance" no longer satisfies your programmers when they start to want to take vacations, get married and go on a long honeymoon, have kids, and so forth.  At that point, they want flexibility, more vacation time, a 401k, etc.  Besides the first one, these all cost significant coin.

Here's the most important point though: if you'd like to hire the absolute brightest people you can find, don't try to outsmart them.  Odds are, the really sharp ones will be a little less interested in the size of the Free Red Bull Fridge and the number of air hockey tables at their disposal, than whether you'll value them as an asset to the company and as an individual (both in terms of compensation and employer/employee relations in general), whether you have a sustainable business model/plan, whether your work really excites them, and whether your work really excites you.  I'd suggest reading a couple essays on Joel On Software, he treats the subject of hiring good programmers in a fair amount of detail ("Smart, and Gets Things Done", I think, is the name of one of the essays).

While your question certainly isn't without merit, and providing a work environment with some of the same perks as your competitors will make your sales pitch somewhat easier, the only people that will be truly swayed by these kinds of things are not the people you want the success of your small company to depend on.  Good developers want to feel like they're making a contribution to something that matters, like their skills are valued and put to good use, like they are responsible to their peers and to themselves.  Focus on having a truly great, dynamic company that does great work, and that treats its technical people with respect (things like private offices help here, too), and you'll really attract the type of people you're looking for.

(Thanks to Thomas Kammeyer for a tip on the last paragraph!)

Title: Perks for new programmers

OwnerDisplayName: Matt J


答: I am a recent graduate. In my opinion, the most appealing perk for me is having an interesting project to work on. I don't want to be writing simple in-house enterprise applications all day. This may be someone else's idea of fun. However, it is not mine.</p>

Title: Perks for new programmers

OwnerDisplayName: cdv


答: Smart people and cool projects would attract the best programmers.  IMO, if you rely only on monetary incentives, you'll most likely attract the wrong crowd.</p>

Title: Perks for new programmers

OwnerDisplayName: Ingrid


答:
Freedom to make mistakes and learn

Knowledgable and tolerant team
members

Great hardware and a single
widescreen monitor

Title: Perks for new programmers


答:
cool project

atleast one good / cool guy in the team they can learn from - say you have Linus or stallman coming in once a while - the entire college would be running behind you for getting hired

no dress code

flexible timings

powerful laptop + paid home access

good food and snacks

a good blog that talks about your company like what Joel does to fill his outfit with smart grads

trainings

not much process but newbies might not be knowledgeable enough to appreciate it. (Your blog could help there)

Title: Perks for new programmers


问:
Ideal programming language learning sequence?
What do you think? What is the ideal programming language learning sequence which will cover most of the heavily used languages and paradigms today as well as help to grasp common programming basics, ideas and practices?
You can even suggest learning sequence for paradigms rather than languages.

N.B. : This is port of the question I asked in stackoverflow and was closed for being subjective and argumentative.

答:
I would suggest first reading Eric Raymonds "How to become a hacker" since he has some very interesting points about how to get started, including Lisp which has the "code is data and data is code" notion.

For programming I would also suggest Haskell, Prolog, SQL and assembly language (just some).

Regardless of what you want to learn, take the time to learn it properly and write non-trivial amounts of code.  It is much like bicycle riding - you cannot learn it from a book.


答:
Some flexibility with regards to buying things.

TP add ons. Amazon books, technical magazine subscriptions.

They made me more comfortable and feel more valued.

Title: Perks for new programmers

OwnerDisplayName: Pace


答: Software and hardware for personal use. Like a nice notebook computer packed with development and productivity tools that you can use for both work related projects and personal projects.</p>

Title: Perks for new programmers

OwnerDisplayName: Bill


答:
only two things:

1) they must realise that they know nothing

2) they should listen to what more experienced people say and try to improve themselves

how simple :)

Title: Perks for new programmers

OwnerDisplayName: Neverrav


答: Programmers need vacation.  Lots of it.  Four weeks a year to start.  Minimum.  </p>

OwnerDisplayName: Autobyte

Title: Perks for new programmers

OwnerDisplayName: Dana


答: The best perks for new programmers are too offensive to most people.</p>

Title: Perks for new programmers

OwnerDisplayName: px


答:
WHen I was a young programmer right out of school (its been a while now) the thing that I lucked into were
1) Open Internet connection, no blocked sites except the nasty stuff
2) The ability to advance
3) Challenging work
4) Good hardware, it sucks when the build takes 2 hrs
5) A beer fridge (hard to maintain as the organization grows)
6) great Senior Developers
7) Flexible working hours

As these things became less of a priority at the company I was at, I left too!

Title: Perks for new programmers


答: The option to install whatever software you need to get the job done.  Notepad++, Pownce or whatever.</p>

Title: Perks for new programmers

OwnerDisplayName: appsbyaaron


答:
My own cool job that is at an Insurance investment company came with the following perks:  fully stocked kitchen with soda, coffee, snacks.  beer for afterhours, srsly!
'Free lunch fridays' where the entire company has lunch brought in (we have about 30 people).
triple 19' flatscreen monitors for development.
Large screen HD TVs
a good pay and casual work environemnt works well too :)</p>

Title: Perks for new programmers

OwnerDisplayName: SomeMiscGuy


答: Here's something: Don't leave them in the dark when they are just starting. They will be very uncomfortable if they have no direction when they start. Make sure they have very, very clearly defined tasks with measurable deliverables. When I first started, I was throw into a mess of a product with no direction and told to fix bugs that made absolutely no sense to me. Find somewhere appropriate for them to work and make sure you give them what they need to contribute positively. Otherwise you're just going to have a bunch of college kids surfing the web on your dime.</p>

Title: Perks for new programmers


答: Educate them. Give them the opportunity to work on their skill set.</p>

Title: Perks for new programmers

OwnerDisplayName: DennisLaumen


答: Free fruit</p>

Title: Perks for new programmers

Body: Free fruit

OwnerDisplayName: Dynite


答: A career path.  Not that they necessarily have to follow it, but give them the thought that they don't have to be a junior forever, and show them that there are opportunities in the company.  Give them an idea of what it takes to advance.  </p>

Title: Perks for new programmers


答:
I started about 3 1/2 years ago.

I was hired at the first place that interviewed me which I was thrilled about. It was a great first job because we got to use bleeding edge technology.

Problem was, my manager was rather disrespectful. I don't know why but it made me leave the company after a 1 1/2 year. I know my manager's manager wasn't too happy with my [ex-]manager. I had hoped to work there longer...

Regards,
Frank

Title: Perks for new programmers

OwnerDisplayName: Frank V


答:
I have graduated 3 years age and I remember how I felt when I was looking for a job.

First, thing that I remember after reading many job postings, is the realization of how little I knew about specific technologies and understanding that I would have to do a lot of learning to become successful in the field. So I applied for positions where they emphasized regular training.

Other thing, that I remember is being worried about being put in a position where I don't get to do much programming. I wanted a position that would have the least amount of repetitive task, because if I am not "creating" I am bored.

Things like private offices, corporate culture and even the pay did not concern me as much. It was my first real job, after having to work everywhere just to keep my tank and stomach full during college, so I basically had little understanding how it works. In fact dress code was the least of my concern; I actually wore tie/slacks to interview, orientation and first 3-4 days of work. In fact I thought it would be nice to work in good clothes. (I guess I am more fashion aware, than most fellow programmers.) Now I wear khakis most of the time and like it.

As I said, this is how I felt when looking for my first job, so this is purely subjective.

Title: Perks for new programmers


答:
Training is by far the #1 thing.  It was when I was starting out.

Company funding for books and/or conferences.

Time to work on projects that might not directly be a product but can help in advancing skills (and could possibly turn into a product).

Time with Senior level developers/mentors.

Title: Perks for new programmers

OwnerDisplayName: tidge


答: Be flexible with office hours. If a programmer gets his best work done between 1:00pm and 10:00pm, or he has other classes or some other reason to need flexible hours, why force him to work 9:00-5:00? Naturally you may need programmers in the office at certain times for mentoring/training/code review/important meetings, etc. But most programmers appreciate flexibility where it can be found.</p>

Title: Perks for new programmers

OwnerDisplayName: Joshua Carmody


答:
I think instead of thinking of them as perks, they should be thought of as the norm.

In no order of preference, the top 5 for me would be,

Either offer for free or help them with what excites and interests them related to work. For example, free conference passes, books, learning courses etc.

Definitely a good working environment like equipment, chairs and desk.

Give them the freedom to work "above their role". Credit them for thinking out of the box and encourage them when they don't.

Set goals and make sure you measure them. Fresh graduates and young programmers usually have trouble (mostly) setting and realising objectives.

Don't make Rules and Regulations up "just because"

Title: Perks for new programmers

OwnerDisplayName: Sarat


答:
flex time
2 monitors
good chair.
allow headphones
and an xbox360 in the break room.</p>

Title: Perks for new programmers

OwnerDisplayName: DanWoolston


答: A boss who would ask this question.</p>

Title: Perks for new programmers

Body: A boss who would ask this question.

OwnerDisplayName: JohnMcG


答: There is nothing like the company of an experienced fellow programmer guiding the new programmer. I am always thankful to my very first mentor when I entered into software development. (Thanks Chris!)</p>

Title: Perks for new programmers


答:
Private office

Casual dress code

Free coffee

Title: Perks for new programmers

OwnerDisplayName: izokurew


答: I would argue against private offices, I would promote more of an open office concept with "war rooms" so that the the newb's can quickly ask a more experienced person quickly & easily. But keep the rooms smaller, five or less people. Also, dual or triple monitors is a must.</p>

Title: Perks for new programmers

OwnerDisplayName: Nathan Koop


答:
Perks that I have liked:

1) a book budget to get technical books related and unrelated to the job

2) assigned mentor - someone more senior to help show me the ropes and tell me about the culture

3) pop/snack area with minimal (better is no cost) to staff

4) notebook,wifi and lounge where you can be more relaxed when you arent coding hard but still working on things like email. our company has 4 of them than you can pick up in the lounge and curl up on the couch and read mail etc during lunch or during an unwind time

5) budget for movie tickets, dinner out etc. to give to staff after they have done a grinder or delivered a key element on time - anything to make them feel special and remembered for hard work

Title: Perks for new programmers

OwnerDisplayName: MikeJ


答:
Perks?

Mentors:
Single greatest asset i was given.  Someone who showed me the ropes, listened to me, took me aside when i messed up, explain why (not how) things were done.  Someone who had knowledge of the product (not a HR/PR person), or could distill something in ten minutes or less.  Sometimes new people are afraid to ask questions.

Goals & Salary:
When your programmers start, have them write down three goals they'd like to achieve in three months.  They don't need to be "climb mount Everest", "write a compiler" type goals.  But They must measurable.  It's a great tool to find motivated people.

Fitness Bonus
Where i work, if you can accumulate 500+ km in one year biking to work, the company will write you a check for $500, just like that.  It's great way to encourage this whole "being green" thing and helps relieve stress and saves money.

The Best Tools
Provide programmers with the best tools.  I can't tell you how much resentment I felt was I was told that VS2003 was too expensive, but all the sales staff had blackberries.  It made me feel undervalued and i eventually quit.

Perk time
Allow your coders 20% of there time to work on their own projects.  It's a great way to spur ideas, and helps keep people motivated.

Title: Perks for new programmers

OwnerDisplayName: Chris


答:
I suggest reading these excellent articles from "Joel on Software" blog:

http://www.joelonsoftware.com/articles/fog0000000043.html - 12 Steps to Better Code

http://www.joelonsoftware.com/articles/BionicOffice.html - Bionic Office

http://www.joelonsoftware.com/articles/fog0000000040.html - How do You Compensate Programmers?

http://www.joelonsoftware.com/articles/FindingGreatDevelopers.html - Finding Great Developers

There are more by Joel, very specific to office layout and working conditions for developers, anyone knows?

OwnerDisplayName: Autobyte

Title: Perks for new programmers

OwnerDisplayName: DV


答:
Offices and fancy chairs are overrated. Responsibility, visibility and the opportunity to work on something cool and learn are critical to getting and retaining young developers to a non-established company. Fresh out of school, working on something impressive or world-changing was way more important than almost anything else.

Making work feel like college will help keep them in the office more hours, but it won't keep a young hot-shot developer working on dialog boxes for an internal insurance company application.

Also, money, lots of money, never hurts.

Title: Perks for new programmers

OwnerDisplayName: Kevin Goldsmith


答: In my opinion, the best perk a new programmer can have is a good mentor who is extremely knowledgeable and understanding.</p>

Title: Perks for new programmers

OwnerDisplayName: Jeremy Cantrell


答: Two words:  Starting salary.  It determines how much money you will make for the majority of your career.</p>

Title: Perks for new programmers

OwnerDisplayName: Kevin Conner


答:
I think private offices are overated, especially for junior developers. OTH managers must understand that every time a developer is distracted by noise, people walking around them, or being in a huge bullpen or a sea of cheap cubes that it costs the firm money in the near term.

Good work areas, especially good chairs and monitors, make a huge difference.

Any kind of dress code beyond 'naughty bits must be covered' is insane when applied to developers.  Having non-flexible work hours is insane when applied to developers.  In general what is known in management theory as 'Taylorism' is a good way to drive away the best developers.

All developers, especially junior developers, appreciate formal training opportunities.

Title: Perks for new programmers

OwnerDisplayName: Jim In Texas


答: Shower on the premises, so that employees can jog/cycle to work.</p>

Title: Perks for new programmers

OwnerDisplayName: Alexander


答:
As a college student hoping to enter the programming field I would really love to find a place that would offer me a chance to grow. So here is what I would love to see:

1) A great chair. I like supportive, comfortable chairs. However, nothing too comfortable like a La-z-boy chair.

2) A mentor or hero who could lend me advice when I need it, hugs and praise when I've earned it, and a gentle push when I am falling behind.

3) Food. Eating a proper meal and being as healthy as I can would be really nice if it fit into work.

4) Schwag. Company shirts, logos, bumper-stickers, etc.

Good luck.

Title: Perks for new programmers

OwnerDisplayName: Zee JollyRoger


答: Good working environment, competitive compensation, and the ability to do research and development.</p>

Title: Perks for new programmers

OwnerDisplayName: jantox


答:
Free coffee

Good nearby food

Well stacked library

Title: Perks for new programmers

OwnerDisplayName: daniel


答: Having worked at some &#!t jobs I have found that one of the nicest things is a training program.  Just expecting somebody to pick up the job and be swimming in the first week can be exceptionally frustrating.  If you set aside X amount of time and have them up to speed as to how things are done in the work place they feel a lot less out of place when they have to tackle the real issues.</p>

Title: Perks for new programmers

OwnerDisplayName: blackthorn


答:
Trust, it might not sound like much but when your just starting out in the field the notion that you take them and their skills seriously, and are going to provide useful feedback can be enormously satisfying.

Training & Certification is a huge plus, it can often make Jr. Programmers feel likes your investing in them.  It also helps weed out folks that view programming more as a hobby or something they feel into as opposed to a career.

I really liked the idea of building my own system on a budget above.  Its an interesting idea and I think it would attract people, it certainly would me.

Title: Perks for new programmers

OwnerDisplayName: Paul Allaire


答:
Lay out the metrics by which their work will be evaluated.  </p>

<p>Then, let them know that they have time and geographical flexibility where they may opt to work from home several days a week (with prior approval of the lead programmer).   </p>

Title: Perks for new programmers

Body:
Lay out the metrics by which their work will be evaluated.

Then, let them know that they have time and geographical flexibility where they may opt to work from home several days a week (with prior approval of the lead programmer).

OwnerDisplayName: Bob Minteer


答:
Apart from the hard stuff like offices, tools, gear, food and snack I'd like to add something that makes me feel special:

Let your developers in on decisions!

If you're getting new tools for them, or moving or starting a new project or even hiring new people -let your developers in on those decisions. It's only fair you get a say in who your new coworker is or what the next big thing you are going to work for a few years on.

One way to do this is to conduct meetings in a round table fashion where you specifically ask every attending person for their opinion, not just let them speak up if they wish.

Title: Perks for new programmers

OwnerDisplayName: Niklas Winde


答: Besides money, the greatest attraction for a new developer would be an experience that will allow him/her to build his career on strong footings. A developer can get this experience by working in an environment that will allow him to learn, improve, strive to achieve challenges, where 'quality' (of code, documents, etc) has some value, where best practices are followed, where people look for a better solution and most important point is - No internal politics.

Title: Perks for new programmers

OwnerDisplayName: Umer Azaz


答:
I can't get past the fact that new programmers should be paying us until they've learned enough to make themselves useful.

In medieval times, you had to beg and bribe your way into an apprenticeship at a guild, and then you had to haul firewood on your back for 30 years before the Master would even let you look at an anvil.

Overpaying junior programmers makes as much sense as small-market NBA teams drafting high school players.  The money gives them an ego which blinds them to their lack of knowledge, and by the time they figure out how to be useful, they declare free agency and they're gone.

Title: Perks for new programmers

OwnerDisplayName: MusiGenesis


答:
Being a college student who would go for job in a few short years, I'd say it's definitely

Casual dress code

-- why does my dress matter when I can program good enough?

Mentoring
-- some older, wiser programmers to guide you. I'd just have been out of college, used
to having a professor around the corner or a TA to throw questions at.

Friendly/productive atmosphere

-- I'd like to have people who will discuss codes after their job and not make me go to really stupid meetings that don't get things done.

Boss that understands programming

-- I've been surrounded by all CS people who think in similar ways and understand me.
I'd want to have a boss to be similar.

Gym/Fitness membership...
-- It just helps to vent off pressue of programming..

Some resources to work on own projects

-- I would want to do some of my own things, even after office hours if required.. I'd be glad to use to company resources.

Please please, root on my PC.. or admin

-- I know what I do, please give me rights..

Title: Perks for new programmers

OwnerDisplayName: prasanna


答:
In any environment in which programmers don't maintain their own equipment and IT does, making sure that IT helps rather than hinders the programmer.   Either a group of IT admins that support programmers as their main responsibility, or a dedicated admin for programmers.

Few things can be more frustrating than having to wait hours or days for simple tech tasks to be completed.

(Of course, it should go without saying that programmers must have root/local admin privileges on their own workstations.)

Another thing: make the day 1 setup for a new programmer a thorough thing.  Not something where it takes a day to get their account set up, another day for e-mail to be created, etc.  Ideally, everything is set up for them (and tested to work!) so they can then plunge in, start reading source code, start receiving training from their mentors, etc.

OwnerDisplayName: Autobyte

Title: Perks for new programmers


答:
Simply follow Jeff Atwood's (PBUH) Programmer's Bill of Rights and they will come.

It doesn't hurt to provide abundant caffeination infrastructure as well :)

Title: Perks for new programmers

OwnerDisplayName: pookleblinky


答:
These are all personal :-).

Free coffee. I have solved countless problems while waiting for my coffee to finish, or even walking to the coffee vending machine.

Laptops. I don't care about fancy dual monitor setups everyone keeps mentioning because I usually end up working on only one of them anyway. However, having a laptop and being able to work from any part of the company more valuable to me. I can just take my problem with me and it makes it easier for me do demonstrate what is going on to a college.

Smoking area. I smoke, and although I don't smoke that much, it's really nice to actually spend five minutes somewhere else. The most interesting discussions I have with peers are usually while smoking.

Open office. I don't like to sit in an office, by myself, for a prolonged length of time because it makes me feel like a machine. To me, interaction with peers is a huge motivation to go to work.

Whiteboard and artistic people around. If there are any webdesigners, 3d modelers, sound guys or whatever type of artsy people you can find; put them in the same room as the programming / tech guys. This too makes the job seem less mechanical.

No dress code. I'll quit the day someone will try to make me wear a suit. They honestly don't make me feel comfortable, besides that, I probably wouldn't fit in such a formal culture anyway. Besides that, I'm a pierced up coding 'goth' that delivers the best work when I don't have to worry about something other than code. That include clothing.

Learning opportunity. Doesn't matter what, it could be seminars, peer reviews, book, 'research time', anything goes.

If the job requires concurrent programming: a dual core machine at least.

A stash of ritalin, lol.

I don't care about:

Dual monitor setups. As stated previously; they distract me so, I tend to prefer widescreens.

Fast hardware; it hard these days to actually get slow hardware these days.

Gadgets.

Free internet at home, or a cell phone. I already have those.

The editor, IDE or OS I have to use as long as I can figure out how to work with it in an hour or two (it usually takes less time though).

Huge paychecks. Give me a pleasant working environment where I'm happy to be for the biggest part of the week and I'm happier than when I have a huge pile of money stashed away at the bank. Use that cash to improve the office conditions.

Game rooms, guitars, pooltables, foosball or airhockey tables et cetera.

Title: Perks for new programmers

OwnerDisplayName: Jasper Bekkers


答:
Subscription to Safari Library Books Online. Unlimited access to all their books and those of partner publishers, never goes out of date, searchable, training videos, and notes you make are kept forever, even through subscription lapses.

By the way, not all fresh-out-of-college programmers are young, nor are they male. Most are, I grant; but not all. :)

Title: Perks for new programmers

OwnerDisplayName: kajaco


答: Well, working on challenging and interesting projects, being respected and not being ignored (some junior developers are just forgotten in a corner of the office) can be better than throwing them games and gadgets.</p>

Title: Perks for new programmers

OwnerDisplayName: egapotz


答:
I'm a current college student, graduating in about a year, and the only thing that matters is respect.  Money, hours, aeron chairs, multiple moniters, admin rights to your own computer, private office, telecommuting rights, these all represent the same thing: the employer views you as a real employee.  Clock ins, lowball offers, drug tests, cubicle farms, folding chairs, ect., these all represent the opposite: the employer views you as a stupid little kid.

The most intelligent and hardworking graduates are probably not as interested in the free soft drinks and game lounges as they are in the idea that they will be viewed as important contributors, both to your company and the field of software engineering at large.

Title: Perks for new programmers

OwnerDisplayName: Dylan White


答:
Independence , and a feeling that
their Inputs matter

Work From Home

Allow for Personal work at Office
(initially there might be lot of
wasteage of time , Slowly it will
come down automatically)

Casual Dress code

Laptops and Not workstations

Creative projects

Allow them to Work on Other things
not limited by Work Profile (Like a
new programmer wold cherish the idea
of having the liberty to directly
interact with the Clients and
Understand / Solve Problems)

All this would be grt for them , And would think twice before leaving as they would feel suck would place would not be available elsewhere.

Title: Perks for new programmers


答:
Gym Membership

Video Games

Dual Monitors

4 weeks+ of vacation

Flexible starting hour

If no private office then noise cancelling headphones.

And MOST importantly other people their age to work with.

When you are 22-23 years old it is really hard to relate to your coworkers when they are all talking about their kids/families.

Title: Perks for new programmers


答:
Matthew 7:12

Therefore all things whatsoever ye
  would that men should do to you, do ye
  even so to them: for this is the law
  and the prophets.

Mohammed

The most righteous of men is the one
  who is glad that men should have what
  is pleasing to himself, and who
  dislikes for them what is for him
  disagreeable

Confucius - Analects XV.24

Never impose on others what you would
  not choose for yourself.

Title: Perks for new programmers

OwnerDisplayName: WOPR


问:
Programming as a conversation
I have often wondered if it would be possible to write a programming language that would work as a conversation. I would tell the computer that I want to store coordinates and it would ask what representation I would use. I would then ask to find the shortest path between points and it would ask if I want to use Djkstra's, brute force or use Floyd's? What research has been done towards producing a system like this?</p>

答:
What you're describing sounds less like programming and more like using an application.

Some problems you'd have to address in such a system:

Repeatable results.  The current source-code paradigm stores a list of instructions for the computer- in your 2-sided conversation, do you only store 1 half of the conversation?  If so, that's not really any different from what we have.  If you store both halves of the conversation, how would you go back and change things without disrupting the whole flow of the conversation thereafter?

Who decides what the computer can respond with- eg, what if you want to use shortest-path algorithm that hasn't been pre-coded for you to select?

How are you going to map this conversation onto the low-level language a computer really uses (which is still a sequential list of instructions)?

Title: Programming as a conversation


答:
bright colleagues

interesting challenges

flexitime

freedom to fail (if you never fail, you're not being challenged enough)

freedom to innovate (i.e. an organisation that doesn't stonewall ideas from juniors)

Google-style 20% time -- or something similar

the sense that attending conferences and education is encouraged, not merely allowed

casual dress code

dining facilities on site or very nearby

I would suggest that working from should not be the norm for junior hires - they need face to face contact in order to become part of the team. It's good if they have the facilities to work from in order to do out of hours work, or have occasional home days.

Title: Perks for new programmers

OwnerDisplayName: slim


答:
I just entered the job market and landed with a company where the hours (with the exception of occasional deadlines) are 9-5, 3 weeks vacation to start, and free lunch monday - thursday from different restaurants. This beat the other places that essentially said they would treat me like dirt and have me work long hours. The hours and benefits allow me to maintain a very healthy work/life balance, and this makes me more productive at work.

Oh yeah, and dual monitors rock.

Title: Perks for new programmers

OwnerDisplayName: Steve


答:
If I were to pick a few perks (as a junior developer) that would make me switch companies:

Games in the lunchroom, so you can play a bit during morning and afternoon breaks

Comfortable chair instead of "whatever the leasing company gives us"

Fridge stocked with beverages

Getting to order whatever programming books I need

Non-tolerance for incompetent developers

Company-sponsored team activities like paintball, lasertag, etc.

Getting to be around good developers my own age

Sponsored gym membership

Flexible starting hours

Title: Perks for new programmers

OwnerDisplayName: Stefan Thyberg


答:
Some of these have been mentioned before, while others seem to have been skipped over...

A bluetooth headset - preferably one that multi-pairs with my desk phone and my cell phone and lets me listen to music in stereo.  Less is more, right?  I don't want to have to keep switching headsets to answer different phones or listen to my music, and I definitely don't want to have to hold the receiver while I try and continue my daily work - and I don't want half a dozen gadgets cluttering up my desk, the fewer the better.

O'Reilly Subscription - I think this costs me $40 a month which I'd rather not pay for myself, but I refuse to live without it, so I do.

MSDN License - The one with all the nifty stuff like Expression Studio, Visual Studio Team Edition etc.  This currently costs me a small fortune, it would be nice if it came as a perk of my job!

Software - Don't give me hassle about purchasing software that will make me more productive when I ask - XmlSpy, Icon Workshop, Resharper/CodeRush just buy it and bring it to me when it arrives, the small amount of $$$ it costs, by the time you've wasted a half hour of my time having me write up justification and you've wasted another 10 minutes reading it, we've just spent more than the cost of the software.

Flex Time/Telecommuting - If I arrive late, chances are I didn't leave until late last night, don't quiz me like a five year old where I was at 8:30 when everyone else arrived!  Where were you and everyone else at 2am when I left?

Give me leeway to be myself.  Putting my feet on my own desk is perfectly acceptable behaviour, as is listening to music, eating, having pop on my desk etc.  As long as I'm not disturbing anyone else's workflow and I'm meeting all my deadlines/objectives, that's all that matters.

Home internet connection and VPN privileges - for those work from home days.

Time to think - without questioning what I'm doing "instead of working" - we're programmers, thinking is working, what's more, that's what you pay us for.

Bookshelf - for all my books

Books - to put on said bookshelf.

No micromanaging - I'm an adult, I don't need micromanaging!  Give me a task and some kind of idea of the direction you want me to take and leave me to do what you hired me for.  If you wanted to do the job yourself, be my guest I can always find something else to do.  If I need help, I'll ask.

A forum for answering questions/learning

Training/Seminars/Further Education (i.e. Masters Degrees, PHd's etc)

Life Insurance Policy

Stock Options

RRSP/401K

Occasional Team Building Days - Sailing, War Games, Paintball, whatever you like

And if you wanted to throw in a couple of nice personal perks:

Gym Membership

Golf Club Membership

Title: Perks for new programmers

OwnerDisplayName: BenAlabaster


答: Free headphones (good around-the-ear phones from Sennheiser or even Bose, maybe even noise-canceling ones)!</p>

Title: Perks for new programmers


答:
Anything with caffene in it should be free. Coffee, lattee, candy bars, soda (especially Mountain Dew) etc.

Seriously though, ask anyone who has worked in a place like Microsoft where they have great break rooms close by and they will tell you that they can be a godsend when working late etc.

Title: Perks for new programmers

OwnerDisplayName: JonnyBoats


答:
casual dress will have to be up on the list for me.

i used to work for an employer who would on occasion stock our department mini fridge with caffine (in our senerio it was Mountain Dew).

the most important thing to me was chemistry.  having coworkers that were intellegent enough to bounce ideas off of but social enough where we could invite each other to bar bq's.

finally, i think being comfortable.  i think the casual dress is a small preface to this, however, good chairs, good screens, performing machines, lowest stress conditions possible.  being a developer deadlines are already enough to stress out about.

Title: Perks for new programmers

OwnerDisplayName: Robert Sweeney


答: Substantial times of uninterrupted peace and quiet to get into that highly productive state of "flow" while programming.  A noisy office drives productivity down at least 50%.</p>

Title: Perks for new programmers

OwnerDisplayName: Jim Ferrans


答:
Quality chairs. A developer spends a lot of time during the day sitting. While a good quality adjustable chair may seem expensive, it's cheaper than having a developer miss work because their back is injured from sitting in an Office Depot $79 special.

In office catering. It doesn't have to be covered by the company, but having a secretary make a lunch run for the office is a great benefit. Not only does it enable the developer to work through their lunch, if they need/ want to, but it helps cut down on that time lost before lunch where everyone tries to coordinate about who's going where.

Dual monitors, or one large(30"+) high resolution widescreen format LCD. The productivity gain from having multiple monitors is amazing. Imagine a secretary having to work in an office with only a single file cabinet with just one drawer. That's what development on a single 17" 4:3 aspect ratio monitor is like.

Quiet. Even if you can't afford private offices for the developers, providing the developers with a space separate from marketing and people whose jobs are to talk to your customer base, or the sales team is very important to a developer. A developer has chosen to work with computers, and not people, because they are likely not an extrovert. Therefore, keeping them sheltered from the sales team's pep-talks and team building exercises will be very valuable. If you have to have a giant open floor plan for the entire business, look at getting some banners or sound dampening to hang from the ceiling.

Respect. Your developers are building the tools that your company uses to be more profitable. They may be making the software you sell, or the software that gives your company the advantage you need to be competitive, treat them with respect.

Books. Developers need knowledge like plants need water. If a developer isn't given an outlet to learn new techniques and practices, they will search for it themselves. Give your developers a quarterly library fund, or have a company library they can get books from, and request new books be added to. You can create an internal website which the developers can vote for new additions to the library with, and buy them once a quarter. A subscription to an online library resource like Safaribooks.com

A sense of being appreciated. You chose to hire these particular developers for a reason. Make them feel like they are special in some way. Have a quarterly/ monthly guest speaker, as you can afford it. If you can't afford a guest speaker, send some of them to conferences and workshops. Rotate your developers through conferences, so that everyone has the opportunity to go.

Managers who understand what is involved in developing software. Developing software is not the same thing as digging a ditch or laying bricks. A developer will not spend 8/8 hours writing code. Plenty of time will be spent on research, whether requirements gathering/ clarification, or on the right approach to solve a particular problem. In physical engineering, prototypes and stepwise refinement are part of the iterative development of a product. The same is true in software. Just because the final check-in for a task is only a few text files, doesn't mean that the developer didn't spend a lot of effort refining that feature or bug fix.

Guidance. As a recent college grad, your new developers are going to need someone who's been around to guide them to the correct technologies and practices to use to increase their value, both for the company and for themselves.

Title: Perks for new programmers

OwnerDisplayName: hasalottajava


答: One of these would get me interested:

Title: Perks for new programmers

Body: One of these would get me interested:

OwnerDisplayName: Chris S


答: To add to the list: snacks, and not sugar stuff, but actual energy food, fruits, oats, cheese, salad, sandwiches. May be a pain to set up, but if I had that, I'd be spending more time at work :)</p>

Title: Perks for new programmers

OwnerDisplayName: Eugene


答:
From my perspective the most important thing the job has to enable the employee is the personal growth. Find time to discuss about work and if possible provide them a mentor.

Beside this:

flexible schedule

drink

food

pleasant working environment

OwnerDisplayName: Autobyte

Title: Perks for new programmers

OwnerDisplayName: niko


答: Help them to research all the time in the research interest's of technology leading corporations and new technologies to help them acquire a good knowledge about breakthroughs, discoveries, new tools, etc, and be more creative about their work, just don't make them feel like they don't learn innovative stuff in their environment.   Also give them the liberty to finish their programming tasks without restricting them to sit for 8 hours in front of a computer every day.  Lockheed Martin gives their employees the liberty to work any time they want if they complete their 40 hours a week.</p>

Title: Perks for new programmers

OwnerDisplayName: KJP


答:
Natural Light.  </p>

<p>(it says my answer is too short!)</p>

Title: Perks for new programmers

Body:
Natural Light.

(it says my answer is too short!)

OwnerDisplayName: sixtyfootersdude


答:
Scott Adams, who talent was not so much just being funny as being seriously insightful and making us laugh about it, named the OA4 concept. He suggested that companies truly serious about their employees would be OA4 Companies and throw their employees Out At 4pm.

I'm into my 13th year of professional programming now, finally working for myself, doing only what I want with exactly the tools I choose, and getting OA4 is almost impossible. OA2am is currently more like it. But the truth of all-nighters and suchlike 'dedication', (and I pulled a 24 hour special only last week for a client deadline), is that it's just like credit card spending; sooner or later you have to pay it back.

The reward isn't in the perks, it's in the job. Help people do their job well - not compulsively, obsessively, heroically or with guilt. I'm not a better person for busting a gut whatever my feelings suggest; I'm a better person for starting at the same time every day; finishing at the same time every afternoon; and getting plenty of breaks away from the desk. Sometimes you do good work; sometimes you don't. If you follow a healthy routine, you'll do more good work more often. A good company as Adams suggests, would be one that encourages us to be better people.

Hey, anyone want to write some Cocoa with me? I'll let you Out At 4pm! :-)

Title: Perks for new programmers

OwnerDisplayName: Lachlan Scott


答:
Fast computer (not like mine)

more than 1 big monitors (not like mine)

Title: Perks for new programmers

OwnerDisplayName: Kai Wang


答:
In a few words, I'd say room for growth.

I'm not the great hacker that most of the people on this site probably are (at least the ones with over 10k rep - I have yet to successfully answer a question after being here for a year). So for me, when I was starting out, I knew that college was, effectively, nothing. And I needed to do all my learning in the real world. Sure I got my CS degree, but I was way behind all the other CS majors because I didn't play with computers when I was young. I had hardly ANY experience with FILE SYSTEMS, for God's sake, before I got to college.

So, how do you create room for growth? To me, I think you have to create a professional, fun, AND academic environment. Professional meaning the usual things you read about in a business-type book (respect, clear expectations, blah blah).

Fun meaning, aside from games, putting together a group of people who can sit in a room together and just shoot the breeze and be mostly laughing.

Academic meaning an environment where everyone is a student and everyone is a teacher. This is probably the most difficult to foster in my opinion for any number of reasons.

Title: Perks for new programmers

OwnerDisplayName: Ramy


答:
In my humble oppinion the following is good incentive for new programmers:

Mentorship from a senior programmer.

Games and fun team building event activities

Promote training and certification

Good software tools and hardware

Title: Perks for new programmers


答: Quality headphones. Music always helps...</p>

Title: Perks for new programmers

OwnerDisplayName: Shota Bakuradze


问:
How should one handle "free projects"? Should one accept them or not?
Ok, as a software engineer, I feel that my skills are valuable in other contexts, for instance, a friend came to me and asked me to setup a website for her research and I did it for free. At first I thought it would put my name out there and give me something to work with and hone my skills in my spare time... But I couldn't stop thinking that I was wasting my time with an unpaid job.

Now, a second friend comes to me with the same story: "Could you do it for me? I will put your name there, you know, it will get tons of views... Yadda Yadda..."

How do you handle this? Do you charge for services in your spare time, even if we are talking about friends? If so, how would you charge for it, for instance, as a consultant?

答:
It's really a case by case thing. There are many variables affecting your decision to charge or not:

Time: How much time will it take you to complete it.

Delivery: When is it expected to be delivered? Is there pressure to finish?

Profit: Is the project meant for profit? If someone is goind to make money of it, why can't you as well?

Relationship: How close are you to this friend? Did he save your life? Does he own a bar and constantly gives you free beer?

Time: Again, time, but this time your own time. How much available time do you have to work on it.

Expectations: Are they demanding? A one time delivery or constant support?

The main thing is that you feel comfortable with the arrangement. It could tear down a friendship If you feel taken advantage of by not defining proper terms and expectations. And if you decide to charge, do so correctly, by defining a requirements document, delivarables, timeline, the works... avoid a common problem which comes from entitlement. When someone, even a friend, pays for something, they rightfully feel entitled and they might demand more than was originally agreed, because "I am paying you!".


答:
My rule is: If they expect to make money off of it then I expect to be compensated for my time. No exceptions. Otherwise it can easily snowball and you wind up being taken advantage of (or are blamed when it all goes to pieces because you stopped working for free).

Alternatively, if it is hobby related (perhaps a fantasy football league, family photo album etc.) where no money is involved, I might help if I also find the 'hobby' in question of interest. I.e. if I would be likely to use the resulting site. It does however depend on the scale of the project and exactly who's asking.

I never work 'for publicity'. I'm well past needing some two-bit website to advertise my credentials. That may however be a point to consider if you are were new in the business.

Title: How should one handle "free projects"? Should one accept them or not?

Body:
Ok, as a software engineer, I feel that my skills are valuable in other contexts, for instance, a friend came to me and asked me to setup a website for her research and I did it for free. At first I thought it would put my name out there and give me something to work with and hone my skills in my spare time... But I couldn't stop thinking that I was wasting my time with an unpaid job.

Now, a second friend comes to me with the same story: "Could you do it for me? I will put your name there, you know, it will get tons of views... Yadda Yadda..."

How do you handle this? Do you charge for services in your spare time, even if we are talking about friends? If so, how would you charge for it, for instance, as a consultant?


问:
In Scrum, why shouldn't the Product Owner and ScrumMaster roles be combined?
In the more traditional projects that I've worked on, the project manager (and, on larger projects, there might be associate/deputy/assistant project managers should one person be unavailable) is the person responsible for communicating with the customer, receiving project health and status updates, determining scheduling and budgeting, managing the process, ensuring the team has what they need to complete tasks, and so on.

In Scrum, however, these responsibilities are split between the Product Owner and the ScrumMaster. The Product Owner is the voice of the customer. They interact directly with the customer, create user stories, organize and prioritize the product backlog, and other user/customer facing issues. The ScrumMaster handles the process, overseeing meetings (including estimation and planning), removing impediments, and monitoring the overall health of the project, making adjustments as needed.

I've read in multiple sources, including Wikipedia, that the role of ScrumMaster and Product Owner should be held by two different people. I've not only read about, but worked on successful "traditional" style projects where the activities of both were handled by a single individual. In fact, it makes more sense for one to three people to be responsible for handling project (including human resources/staffing) and process level tasks, as they often go hand-in-hand. Process changes have an impact on scheduling, budgeting, quality, and other project-level goals, and project changes have an impact on process.

Why does Scrum call for isolating these activities into two roles? What advantages does this actually provide? Has anyone been on a successful Scrum project where the Product Owner and ScrumMaster were the same individual?

答: If the same person represents the dev team and the users/customers, the only recourse you have in a dispute is to look at the contract. Although it may eventually come to this, you're better off if a representative from both sides with equal power can work out an agreement.</p>


答:
If you are going to do a free website, do it understanding that it will not give you any benefits beyond helping a friend.  In my experience, the whole "it gets your name out there" argument is pretty much garbage.  I've done a half dozen websites for free, and have never had a paying job come of it.  Nor did I expect one.

If people ask me to do a website for them for free, I decide if I want to spend the time, and say yes or no.  If I say yes, I specify exactly what I will do, which is typically set up the CMS/Wordpress/Site/whatever, with a free theme, and show them how to update it.  If it ever broke, I'd probably help fix it, but I don't promise that.  It's vital that you be absolutely clear what they should expect from you, and that you are NOT their personal web developer on call 24/7.


答:
The answer is:

NO, I NEVER WORK FOR FREE, EVEN IF IT IS ENJOYABLE.

The reason is:

This action ruins the IT market. Yeah, you do your friend a favor. But then another friend comes in and expects to return with full hands. This way, your friend thinks that gaining an IT solution is really cheap. Next time he won't pay for someone else's work.


答:
Also, keep in mind most often than not, you are not working on 1 customer at a time. Product Owners might manage several customers and can concentrate on that part of the business, and ScrumMasters can concentrate on project development.

Like many have said, both roles have distinct interests, but a common goal and differents skillsets to aquire it.


问:
Using Agile development in a one person team

Possible Duplicate:

  Agile for the Solo Developer

I am going to be starting a project soon and plan to use as much of agile methods as I can (CI, TDD etc.). What have been people's experiences doing agile development when working solo? I want to get good practices in place now while its a one person team so when I scale up to having several people the basics are in place.

答: I would say try personal scrum..its an interesting way to speed up your 'any' kind of project even if only one person is envolved. may be check out http://blog.jgpruitt.com/tag/agile-methodology/</p>


问:
How to "read" rails apps?
I've just finished the first rails tutorial and now want to learn something about how other developers use it. So is it possible to "read" rails web applications to learn about its architecture and design?</p>

答:
I am not sure exactly what you mean, but if you didn't do this tutorial, I would highly recommend this: Ruby on Rails Tutorial

You build an application and learn a lot of details on how to think about the application.

Title: How to "read" rails apps?


问:
"Do you have any questions for us?" In an interview
You know the prospective company fairly well but are asked "Do you have any questions for us?".  To show interest, what are some of your favorite questions to reply?</p>

答: I haven't seen this one yet, but I always ask what the companies 3 year plan is. Every company should have a good idea of what they want to achieve in 3 years, if they don't then they're just not serious enough for me to really want to get involved with.</p>


问:
How can I use Scrum with a freelance team?
I'm working in a start-up. I have a background with teamwork and management, but I'm currently the only developer. We have a project that will involve a few developers in the form of 2 freelancers. I will function as a developer as well as the ScrumMaster. The project is scheduled to last three to four months. The 3 developers (myself and the two freelancers) have never worked together before.

Would it be possible or advisable to use Scrum to manage this type of project? Would there be any problems organizing or running the team using Scrum?

答:
Theroatically you can do it. But it is highly dependent on you your organizational skills and the way you lead the team. It also depends how other members understand the process. May you start following hard specification of Scrum methodology and as you go along you will get more experience of applying it :).

Good Luck!


问:
Saying "no" to people asking questions

Possible Duplicate:

  When do you not give help to less experienced programmers?

Currently, I am finding a lot of my day is taken up by people asking domain knowledge/system questions.  This impacts personal productivity.

Should developers learn to say "no" more to ensure they get asked less questions and be more productive, or should the developers help each other out?  Stuff does get documented, but it is often easier to ask a "quick question".

How do you handle this sort of scenario?

答:
I find that a little (stress on the little) well-placed rudeness or condescension goes a long way towards solving these issues.

If the question is a good one and the person has made an effort already, make an effort yourself to help them. This is part of your job. Use the suggestions in other answers to regulate the flow of questions.

On the other  hand, if they have interrupted you instead of reading the docs or are saddled with an obviously googlable question (which is what I think you are referring to as "a quick question"), do say something along the lines of "why don't you just google this?" or "can't you read the docs yourself?". You might consider adding some profanity if it's an oral discussion and your work environment allows for it. In any case, convey that you don't think that this was an warranted interruption.

It's not the nice-guy answer, but you need to get things done. If people are interrupting you constantly instead of reading the docs, they are the ones being rude in the first place and abusing your niceness. Most people get the hint very quickly.

Title: Saying "no" to people asking questions