How to balance zone time against open and active communication within a development team? [closed] - communication

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 1 year ago.
Improve this question
How to balance "zone" time against open and active communication within a development team?

Read "Peopleware"
Offices with doors.
phones you can turn off.
emails
Usable common areas with whiteboards.
There are some phases of development when lots of collaboration is very productive and other times where individual focus is important. Also, people work differently - you don't wantt o interrupt folks who do better when left alone and you don't want to isolate those who need feedback and help. I would avoid rules and just make it clear to t ateam that this is an issue and it is up to each developer to enforce their own desired environment. Management should support it.
USEFUL meetings are great, but open bullpens as work environments for "open communication" is a fantasy dreamed up by beancounters or managers who want to keep an eye on all their staff.

Our office converted recently to the "bullpen" style Tim referred to. Software people were unimpressed, to say the least. To work around this we implemented the following things:
1) Division internal mailing list
2) Dev-team internal mailing lists
3) Every developer is available via Google Talk for discussions without leaving our desks
4) Headphones means "it better be important"
5) If more than 2 people need to talk together, you find a meeting space so you don't disturb your colleagues.
6) We usually only use e-mail for speaking with clients or providing individuals with files through attachments.
The result of these actions is that the Signal-to-Noise ratio in communication is much better, since you are not bombarded with e-mail all day long.
One thing we tried that did not work so well was the "party chat" feature of Google Talk (basically using a Google Talk Contact as a stripped-down IRC chatroom). It could be because many of our developers are young (we have between 3-15 University co-ops year-round) but "party chat" became a very apt name for what it ended up being used for.
Whiteboards are scarce where I work but we sold management on the concept of a room that was to be used for 6 people maximum who could hole up and do intense design and development. It has a couple whiteboards, a DOOR, and all the lights except one can be shut off so it doesn't feel like a fluorescent sun is above your head. This may not be possible in your work environment, but if it is consider it as the room for intense "zone" time.

Related

Remaining up to date in an ever-changing world [closed]

Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 11 years ago.
Improve this question
How does a programmer remain up to date?
I don't mean with just a specific language; I'm talking about new technologies. For example, how would one know to switch over from ADO.Net to ORM? Or that the future of Silverlight looks dim in the impending light of HTML5? Or that ASP.Net Web Forms is being replaced by MVC?
How would an older-generation programmer realize that people use OOP rather than procedural programming? Or that agile has become the new way to develop?
Sure, there are plenty of ways to figure out any of the above; but is there any single place one can plug into and simply remain informed about everything?
I found a similar question here, but I don't feel like I found the answer I am looking for.
Note: The internet is full of places that can help one remain up to date. The problem is that these places are mostly helpful if one already knows what to look for. I'm looking for a place that will inform of updates in directions I wouldn't normally consider (among other things).
I keep up with new technology/dev approaches using a combination of services/tools that do the work for me while I am actually at work or sleeping. It's all about leveraging the various services out there and making it as non-intrusive as possible. At least that's my best approach. There is no silver bullet for what you are asking, though. The beauty of the internet is that there is no 'magic directory' out there and resources tend to be organic and evolve.
I will namedrop some services I use to make this easier, but I'm not plugging them or saying you shouldn't use some alternative. These things just work for me.
First thing I rely on is my Google Reader account and subscribe to a large number of RSS feeds/blogs and I'm sure to categorize the RSS feed appropriately to make it easier for me when i actually glance through the feed every week or two. Outside of the 'big name' developers, I stumble across various blogs when searching for a technical question and most of the time I will subscribe to the feed. If the content is not good, I just dump it a few months later. I have categories setup in Google Reader like 'ASP.NET MVC', 'Ruby', 'Microsoft Dev', 'Node.js', etc. If a blog overlaps, I will add it to multiple categories. Just makes life easier in contrast to having 50 feeds all in the same bucket. I read my RSS either in the browser on Google or use 'Reader', an app for iOS.
I also lurk on Twitter a lot and follow a large number of developers across various technology stacks. Combined with a tool/service like Instapaper (http://instapaper.com) (there are alternatives, but I have used Instapaper for a while now), I can add a link that sounds interesting from twitter and check it out when I have time.
Finally, I have a pinboard (http://pinboard.in) account which is just a bookmark site. Again, there are tons of alternatives here. I have my pinboard account setup to automatically bookmark anything I added to Instapaper each night as well as grab bookmarks/links from certain twitter feeds that are always pushing out good content.
I also have a Safari Books Online account and check out newly added books on certain topics each week. If I glance at it and think it needs further reading after 5-10 minutes, I will favorite the book and look it over at a later time.
In all honesty, I maybe look at this stuff once a week max. But when I do have the time, at least I can find items I would have normally missed and more often than not I find an excellent blog post on something I'm dealing with at work. A blog post I probably would have never found.

What production-ready SaaS (recurring billing) solutions are available for Rails? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 8 years ago.
Improve this question
I am working on a software-as-a-service (SaaS) application and I am looking for a billing plugin of some sort that will manage my subscriptions, customers, and recurring billing. There is the RailsKits SaaS kit ($249.00), but I prefer to use open source software. I have also found maccman's saasy, but the phrase "At the moment this is alpha code - use at your own risk" makes me a tad bit nervous.
You could just outsource the whole SaaS side of things.
http://Recurly.com
http://chargify.com
http://spreedly.com
http://cheddargetter.com
http://fusebill.com
http://chargebee.com
There are other providers like SAASY.com, 2Checkout.com who provide a bundled merchant account + payment gateway service along with subscription billing.
Unless your application actually does billing as its CORE FUNCTION, you definitely, definitely, want to get billing OUT of your app!
Get your business to find another solution for that function (or outsource it to e.g. Salesforce.com - most others do). Your development team should be working on the product you sell, not internally reinventing wheels.
I've heard a lot of good things about CheddarGetter for recurring billing. A friend of mine who did web design for a local e-mag said they ended up being the least expensive given the size of his little subscription pool... dunno how big you are but it might be worth checking out. Also, every once in a while I see retweets of them answering questions in my twitter feed... so that's probably a good sign.
EDIT: A quick check shows me it's on rails & open source as well.
Recurly http://recurly.com is also being used by many companies to launch professional subscription billing solutions. No setup fees, no cancellation fees. Easy to deploy.
Check us out.
We use CheddarGetter for a SaaS we're releasing at my office, and although it took a lot of research to get to that point, I'm really glad we're going with them. Their support staff was incredible - they answered our calls right away, and have a good knack of walking you through the whole billing process, which can be really confusing without some help.
Another reason we chose them was because we could opt to use their own gateway, and so didn't have to make customers leave our app to pay, like PayPal Standard would make you do. Plus, they allow for unlimited transactions and customers - which is good for our growing product - and their features cover all our recurring needs (changing subscriptions, multiple cards, billing at the start of the month, etc). They also have a well-documented API and a good wrapper library (even with code for Ruby!), which I'm sure we'll be digging into once we get everything set up.

When does innovative software development shows? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 3 months ago.
Improve this question
I've been working as a software developer for almost a year (not much though) in a corporate environment but all I've done so far is a raw software implementation of company needs. Senior coworkers don't seem to be doing some fairly different stuff. In fact their "benefit" for being experienced is simply an app design and getting their hands on new projects first. My elder software developer friend's jobs don't seem to differ from the overall picture.
Currently I'm a student of a CS department and what I really want to bring in this world is some innovative(not new but innovative) stuff that haven't been there. Something as great as google wave or JARVIS (if that can be done at all) or even much better, but yet it looked like that's not possible. The question is: when do people in a corporate environment choose to create something innovative? (from your experience/thoughts)
These are your options:
A) find a company that does something that you like
B) Find a company that gives you time to do your own thing
C) do your own thing at home
Notable innovation usually only occurs at a few select companies (Google, as others have said, Microsoft, though they're not doing it as much, and Apple). However, the main thing for an innovative program comes from just an idea.
Can you think of something others haven't done? Can you do it? Will you do it?
If the answer to any of these is no, then you're not going to be the guy coming up with "The Next Big Thing". It only comes from having an idea, and doing something with it. (I read something about this recently, I think from Joel, but not on his blog. Anybody know the article I mean?)
Unfortunately, working in a corporate culture, unless that corporation promotes new ideas (see above), you're going to be stuck doing the same crap as everybody else. I know for myself, I spend all day in front of a computer, looking at code. When I get home, I keep meaning to work on my own "innovative" idea, but I play video games, drums, with my dogs, go to the gym, hang with friends, whatever. I have no desire to spend yet another few hours in front of a computer working on more code.
The same thing happens to a lot of people, and unless you can get past this, you're never going to build something.
So, simple answer: When you have an idea, and actually do something with it.
Most of the time, the answer to your question would be never.
The motivation to go off and do something innovative is entirely dependent on the person. When it comes to typical corporate America, I wouldn't expect to be creating anything innovative and amazing. I would say the majority of anything truly interesting and innovative happens after hours on their own time if the person in question has a real job.
what I really want to bring in this world is some innovative(not new but innovative)
Don't we all. Sigh.
If you're actually brilliant, you'll have opportunities to do this. "working as a software developer for almost a year" Remain calm. The "long run" is 30 or 40 years of a working life.
If you're like the above-average people I've met, you'll be just able to produce software that's good enough to help your company get ahead. Until dumb management subverts things.
If you're like the rest of us, you'll spend your career struggling to chase after the above-average folks.
For the most part, software innovation doesn't happen very much in environments such as yours, and when it does it is usually done as a "skunkworks" project without official management approval. If you want to be involved in innovative work your goal should be to eventually work for a software technology company like Google or the like, or you can just join one of the many open source projects out there. Doing the latter is a good way to build credentials to get a job with a more interesting employer.
It shows when you can prove you have a market for your innovative software. Have a proof of concept ready and be prepared to defend your idea. If it can really bring in the cash, it will catch someone's eye. Ideas that are provocative yet fail to gain any financial support remain to be followed in your own spare time.

How to communicate well with the customer [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about programming within the scope defined in the help center.
Closed 5 years ago.
Improve this question
I have a challenge I need some input on.
I am currently recruiting programmers for a new development department. I am looking for people that are brilliant at their work – so brilliant that they might “lack” some other things that I normally would require them to have (e.g. speaking Norwegian and (to be honest) – social skills in order to be able to meet the customer (I’ve worked with several of them before :) )).
My issue is in regards to communication between the client (customer) and the development team.
Background: We have a strategy of becoming our customers extended development department over the next two years. E.g. they consider us as their own department just sitting somewhere else. While we are on our way towards this target, we will have to make money on smaller projects. The work is there, so I am not afraid that we will not manage to stay alive.
But – we all know that good communication with the customer is one of the key elements on providing the customer with what they actually want (we are scrumming by the way) instead of something else. How do I manage to do this with people that do not speak the language, or again, does not even have the skills to communicate with the customer (you all know someone very bright that is going into deep technical issues with a customer that hardly knows the difference between Firefox & Opera)?
I have landed on a solution where I will be the interface towards the customer, the customer will join in on planning sessions, etc., and where the team will still do the demo. But in regards to continuous communication (daily) between the dev team and the customer, I will be the one doing the comms.
I know that this is not the optimal solution – being a middle man a lot of information can disappear between the customer, me and the team. Have anyone been in a similar situation?
Create a wiki. Create a page for your customer which contains pictures, business information, things to look out for, etc.
Have everyone contribute to the wiki, including the customer.
As time goes on, this page (or pages if you split the information on numerous pages) will allow
new developers to understand the customer faster
see the possible problems that may arise
your developers would contribute to the wiki since they have a tangible documentation where everyone can see how much they have contributed to the customer.
make the customer feel as if he is part of the development process
since the wiki is, by effect, a collaboration document, a common language will appear between everyone. It might not be the same as speaking your customer's language, but it will be a combination of your customer's and developer's language.
We've had a somewhat similar situation when we did "Beta programs" for select customers. When the customers had questions, they could only turn to the developers at that stage of the project because e.g. the helpdesk was not yet familiar with the new features.
We also used a "middle man" for doingt the communication with the customer and then passing it on to the developers, and this has worked quite well for us. What were the advantages? The customer alsways knew exactly whom to contact, the communication was consistent, some on the simpler questions could be answered without the need to "bug" the development team at all while some more difficult questions could be "boiled down" from a superfluous explanation to the real problem before handing the question over to the developers, both giving the developers more time to concentrate on what they do best.
Of course, if you want this to work, you'll have to make sure you pass on information between development and the customer in a timely manner, but I think it can be worth the effort (and in fact, our developers prefer it that way).
Communication skills are arguably more important than technical skills. A programmer that doesn't communicate well may well cause enough disruption to negate what they bring to the table technically.
Having said that, you still have to realize that not everyone is the best person to be "customer facing". You might designate one or more members of the team as liasons to your customers, and have the communication go through them when possible.
The developers should be shielded from the customers. Developers are usually hardcore technical people who eat C++ templates at breakfast. The customers are often very non-technical. A customer asking a badly formulated question on some trivial issue to the developer usually irritates the developer a lot causing at least a temporary loss of productivity. So it's better to have special paid people that work in between.
Don't underestimate the value of being in the same place. If communication skills are lacking, being able to point and say "look at this" can be far quicker and more effective than trying to explain everything in a meeting or email. But from "they consider us as their own department just sitting somewhere else" this doesn't sound like it is an option for you.
Generally I expect that at least some of your developers will be open to learning proper communication with the customer. Involve those developers with the communication (even if it's painful at first). English is a pretty universal language and your customer will probably be able and willing to speak it.
Shield the developers that DON'T want to communicate or learn to communicate with the customers. They may damage your relationship with the customer and you will damage your relationship with your employee.
Be careful about allowing written contact between the customer and your developers. Written communication often gets interpreted wrong, especially when written by people who do not have much experience writing carefully balanced e-mails, memos or letters.
As you build your relationship with your customer, you'll get to know eachother's personalities, and communication will be smoother.

How to convince "The Management" to use all aspects of Visual Studio Team System? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 3 years ago.
Improve this question
Currently we have several defect and bug tracking systems, which include Quality Centre and bespoke support systems (both team and company wide). Also we use Microsoft Project - although I haven't seen a task list in months...
But what I find difficult to understand is why our company purchases VSTS and only utilises part of it - we currently use source control, automated overnight builds and team testing functions.
How can our team convince "The Management" to use project task items, defect tracking, reports and process guidance parts of the system? Surely this would save time and money once implemented correctly ?
If you already have the VSTS licenses then why does your team management need to sign off on anything? Start the features amongst your team for small areas and gradually ramp it up. Would you ask management to sign off on which text editor you use?
Management have a basic fear of anything that in any way may disrupt productivity, and rabid adoration for anything that increases productivity at no risk to themselves. Start small and let the results sell themselves.
This is how I've introduced both Unit Testing and Wikis at previous companies. When the results begin to show people quickly want to get involved.
Tell them if they not decide to, then in one hour you start to kill hostages every five minutes 10 at the time...
But more serious do the meeting with management or write some kind of request and show what time consumption it takes to use disintegrated system, and how powerfull and underused newly bought system is, but before do soem analyses if system does really fit all current ne4eds. But be carefull with your words and names,. If it really comes out that company got underused equipmentsoftware which got negative impact on productivity and information flow in company, and it means less of valuable work even heads can fall for this. It all depend how serious is your company in that cases.
Be aware that it would be not quire fluent process to switch frome one soft yo another, people got own habbits and things that they are used to so you will have to do this in some steps which include graduall introducing people to new system

Resources