Если бы Вы хотели улучшить разработку программного обеспечения в своей организации, и у Вас было 1 000$ для расходов, на что Вы потратили бы ее? [закрытый]

Это забавно, у меня просто была потребность в этом на днях, и я не мог найти реализацию стоящей использования..., таким образом, я записал свое собственное:

import functools

class EnumValue(object):
    def __init__(self,name,value,type):
        self.__value=value
        self.__name=name
        self.Type=type
    def __str__(self):
        return self.__name
    def __repr__(self):#2.6 only... so change to what ever you need...
        return '{cls}({0!r},{1!r},{2})'.format(self.__name,self.__value,self.Type.__name__,cls=type(self).__name__)

    def __hash__(self):
        return hash(self.__value)
    def __nonzero__(self):
        return bool(self.__value)
    def __cmp__(self,other):
        if isinstance(other,EnumValue):
            return cmp(self.__value,other.__value)
        else:
            return cmp(self.__value,other)#hopefully their the same type... but who cares?
    def __or__(self,other):
        if other is None:
            return self
        elif type(self) is not type(other):
            raise TypeError()
        return EnumValue('{0.Name} | {1.Name}'.format(self,other),self.Value|other.Value,self.Type)
    def __and__(self,other):
        if other is None:
            return self
        elif type(self) is not type(other):
            raise TypeError()
        return EnumValue('{0.Name} & {1.Name}'.format(self,other),self.Value&other.Value,self.Type)
    def __contains__(self,other):
        if self.Value==other.Value:
            return True
        return bool(self&other)
    def __invert__(self):
        enumerables=self.Type.__enumerables__
        return functools.reduce(EnumValue.__or__,(enum for enum in enumerables.itervalues() if enum not in self))

    @property
    def Name(self):
        return self.__name

    @property
    def Value(self):
        return self.__value

class EnumMeta(type):
    @staticmethod
    def __addToReverseLookup(rev,value,newKeys,nextIter,force=True):
        if value in rev:
            forced,items=rev.get(value,(force,()) )
            if forced and force: #value was forced, so just append
                rev[value]=(True,items+newKeys)
            elif not forced:#move it to a new spot
                next=nextIter.next()
                EnumMeta.__addToReverseLookup(rev,next,items,nextIter,False)
                rev[value]=(force,newKeys)
            else: #not forcing this value
                next = nextIter.next()
                EnumMeta.__addToReverseLookup(rev,next,newKeys,nextIter,False)
                rev[value]=(force,newKeys)
        else:#set it and forget it
            rev[value]=(force,newKeys)
        return value

    def __init__(cls,name,bases,atts):
        classVars=vars(cls)
        enums = classVars.get('__enumerables__',None)
        nextIter = getattr(cls,'__nextitr__',itertools.count)()
        reverseLookup={}
        values={}

        if enums is not None:
            #build reverse lookup
            for item in enums:
                if isinstance(item,(tuple,list)):
                    items=list(item)
                    value=items.pop()
                    EnumMeta.__addToReverseLookup(reverseLookup,value,tuple(map(str,items)),nextIter)
                else:
                    value=nextIter.next()
                    value=EnumMeta.__addToReverseLookup(reverseLookup,value,(str(item),),nextIter,False)#add it to the reverse lookup, but don't force it to that value

            #build values and clean up reverse lookup
            for value,fkeys in reverseLookup.iteritems():
                f,keys=fkeys
                for key in keys:
                    enum=EnumValue(key,value,cls)
                    setattr(cls,key,enum)
                    values[key]=enum
                reverseLookup[value]=tuple(val for val in values.itervalues() if val.Value == value)
        setattr(cls,'__reverseLookup__',reverseLookup)
        setattr(cls,'__enumerables__',values)
        setattr(cls,'_Max',max([key for key in reverseLookup] or [0]))
        return super(EnumMeta,cls).__init__(name,bases,atts)

    def __iter__(cls):
        for enum in cls.__enumerables__.itervalues():
            yield enum
    def GetEnumByName(cls,name):
        return cls.__enumerables__.get(name,None)
    def GetEnumByValue(cls,value):
        return cls.__reverseLookup__.get(value,(None,))[0]

class Enum(object):
    __metaclass__=EnumMeta
    __enumerables__=None

class FlagEnum(Enum):
    @staticmethod
    def __nextitr__():
        yield 0
        for val in itertools.count():
            yield 2**val

def enum(name,*args):
    return EnumMeta(name,(Enum,),dict(__enumerables__=args))

Как хотите, это сделало то, что мне был нужен он, чтобы сделать:)

Использование это как:

class Air(FlagEnum):
    __enumerables__=('None','Oxygen','Nitrogen','Hydrogen')

class Mammals(Enum):
    __enumerables__=('Bat','Whale',('Dog','Puppy',1),'Cat')
Bool = enum('Bool','Yes',('No',0))
19
задан 6 revs, 3 users 83% 29 November 2013 в 22:33
поделиться

34 ответа

1000 долларов, кажется, достаточно, чтобы купить Visual Помогите 5-7 членам команды за два месяца. Это только для команд Visual Studio.

3
ответ дан 30 November 2019 в 01:44
поделиться

Если ваши команды работают с Windows Vista, сделайте предзаказ на Windows 7 и дайте им облегчение, что они наконец-то стали бесплатными.

3
ответ дан 30 November 2019 в 01:44
поделиться

Разделите деньги на книжный бюджет для каждого члена команды и отправьте их на этот вопрос для получения идей. В частности, если они хотят использовать AddAll для поиска выгодных сделок, это поможет хоть немного пополнить библиотеки.

3
ответ дан 30 November 2019 в 01:44
поделиться

Установите высокопроизводительный SSD и 4 ГБ ОЗУ на каждую машину. На те 500 долларов, которые у вас останутся, достаньте всем как минимум 2 20-дюймовых плоских экрана.

2
ответ дан 30 November 2019 в 01:44
поделиться

Я бы взял эти деньги и создал больше стимулов для ваших программистов. Если у них есть какой-то бонус за достижение определенного уровня измеримых улучшений в каком-то аспекте вашего бизнеса, то это может их уникальным образом мотивировать.

2
ответ дан 30 November 2019 в 01:44
поделиться

Я бы посмотрел Axure, http://www.axure.com/ , я еще не пробовал бесплатно скачать, но скоро буду, и инструмент для создания прототипов, через который даже один человек может пройти и разработать требования с заказчиком, вероятно, очень поможет вам, и я знаю, что лицензия стоит около 500 долларов. Правильный дизайн, соответствующий потребностям клиента, вероятно, принесет вам максимальную отдачу от вложенных средств.

2
ответ дан 30 November 2019 в 01:44
поделиться

Несколько цветов и увлажнитель воздуха, и ручка, если я просто не нарушил бюджет.

3
ответ дан 30 November 2019 в 01:44
поделиться

You should buy a foosball table for the team. Nothing builds team morale better than letting them have fun once in a while. And let them play a game or two in business hours each day. It is very refreshing for both mind & body!

We have a table where I work and it is a pretty good reason for staying at the company. The team has much fun (and would you believe it, but we even won the town championship!).

PS - Put the table in a room where it does not disturb too much if possible.

2
ответ дан 30 November 2019 в 01:44
поделиться

As everyone else has noted $1000 isn't going to do a lot in terms of better software. So I'd concentrate of the morale of my developers.

Pizza, Mt. Dew and a nice Espresso machine.

EDIT

Actually I did think of something $1000 would buy. Some testing systems running some kind of VM software. The hardware would probably be around $250 a pop, and you can find CRTs for free. Since no one is going to be using them for prolonged periods this should be fine. Back when I was using Ardence Smart Clients each license went for $125 per system so you could probably get 3 testing systems with $1000.

1
ответ дан 30 November 2019 в 01:44
поделиться

This really depends on your team.

Depending on the size of the team, $1000 isn't much. Developer tools go a long way - ie: things like Resharper can do wonders to increase productivity, and are inexpensive.

That being said, if your culture supports it, $1000 can be a very effective motivator as a bonus.... I'd argue that it can bring more results per dollar than any other single thing, if handled property. This is a tricky thing to manage, though, so it really depends on your team.

3
ответ дан 30 November 2019 в 01:44
поделиться
1
ответ дан 30 November 2019 в 01:44
поделиться

Да ладно тебе ... этого еще никто не сказал?

Без сомнения, получите копию FogBugz для своей группы.

4
ответ дан 30 November 2019 в 01:44
поделиться

$1000 isn't a lot (eg. to spend on training or something similar). So i would invest it in the tooling and hardware.

  • ReSharper for everyone (if you're a .NET dev group). If you are tight on budget, you can consider just using the free CodeRush Xpress from DevExpress, which is better then nothing.
  • Dual Monitors.
  • Max Memory (this is so cheap nowadays).
  • Books!

Some Various and inexpensive software that I personally use:

  • Beyond Compare - file comparison tool
  • Snag It - screen capture tool
  • RegexBuddy - regular expression helper
  • Ultramon - Enhanced multiple monitor environment, such as having a taskbar for each monitor
  • TeraCopy - faster file copying/moving tool that integrates with windows shell
  • Grep Tool such as WinGrep or BareGrep, although both have free non-registered versions

I would definitely go and ask the team this question though, chances are they know the tools or hardware that they need that will make their jobs easier. After all, they will be the ones using whatever is purchased.

48
ответ дан 30 November 2019 в 01:44
поделиться

Второй ЖК-монитор с диагональю 20 дюймов для каждого человека или, если это уже так, стулья получше.

37
ответ дан 30 November 2019 в 01:44
поделиться

Если у группы еще нет доски в каждой рабочей области, как частной, так и общей, измените это.

24
ответ дан 30 November 2019 в 01:44
поделиться

Раз в неделю приглашайте команду на обед в ресторан средней ценовой категории (не в пиццерию). Когда кончатся 1000 долларов (продолжительность зависит от вашего региона), сражайтесь за больше денег.

Дело в том, что моральный дух имеет огромное влияние на скорость развития. Знание людей, на которых вы работаете / которые заботятся о вас как о личности, а не просто о ресурсе, означает, что вы одинаково заботитесь о них и о том, что вы для них делаете. Мотивация выполнять хорошую работу в хорошем темпе может обеспечить такую ​​же скорость / скорость / что угодно, как и лучшие инструменты (и вы не можете позволить себе лучшие коммерческие инструменты за 1000 долларов)

. Стоит проконсультироваться с командой, чтобы узнать, что они предпочитаю, если у вас есть пара вариантов. Если вы можете приглашать их на обед каждую неделю или дважды на бейсбольный матч, спросите их, что они думают. Игра в бейсбол может показаться вам чрезвычайно увлекательной, если вы любите бейсбол, но она может оказаться самой скучной вещью в мире для половины команды. (говорит по опыту на этом)

34
ответ дан 30 November 2019 в 01:44
поделиться

Я бы получил команду:

  • наушники , чтобы убрать отвлекающие факторы
  • лучшие клавиатуры и мыши , более быстрый набор текста и т. Д.
  • большие мониторы , лучшее рабочее пространство, но, возможно, неосуществимо с 1 КБ
  • памяти , насколько это возможно, паузы вызывают переключение контекста, производительность падает

В этом порядке (если нет явной нехватки памяти, то сначала).

21
ответ дан 30 November 2019 в 01:44
поделиться

Вы можете купить дюжину или больше книг на это. Все ли в команде прочитали Прагматичный программист ?

14
ответ дан 30 November 2019 в 01:44
поделиться

Купите много кофе.

11
ответ дан 30 November 2019 в 01:44
поделиться

За тысячу долларов лучшее, что вы могли бы сделать, это вложить средства в перевод ваших разработчиков на систему с двумя мониторами. Для руководства это звучит глупо, но даже если вы заметите увеличение производительности на 1%, это довольно высокая норма прибыли на зарплату разработчика.

Конечно, интересно то, что исследования показали, что эта цифра на самом деле ближе к 20-30%!

http://lifehacker.com/software/dual-monitor/dual-monitors-increase-productivity- 168488.php

Лично у меня в домашнем офисе есть 3 монитора (26-дюймовый Samsung 1680x1050, который я использую для чтения газет, 30-дюймовый 2560x1600 Dell, который я использую для кода, и 42-дюймовый HDTV с разрешением 1920x1080, который я использую браузер, чтобы не мешать работе или использовать при просмотре презентаций. Полностью заполнив свое периферийное зрение, я не не отвлекаться почти так же легко. У меня всегда есть все, что мне нужно, под рукой, и я могу перекрестно ссылаться и сравнивать разные источники, не теряя места и не перетаскивая окна в сторону, чтобы увидеть.

В офисе я использую гораздо менее яркую компоновку с двумя мониторами, но это по-прежнему чистая победа над простыми взглядами на дисплей ноутбука.

6
ответ дан 30 November 2019 в 01:44
поделиться

Помните, что основная, самая медленная и самая дорогостоящая проблема программного обеспечения не имеет ничего общего с инструментами или производительностью - это осознание того, что вы строите правильную вещь. Все остальное проще, чем это.

Что касается увеличения скорости, вы должны знать, что есть препятствия, что они такое, и как вы можете их устранить, и можно ли потратить 1000 долларов на это? Если нет никаких препятствий, почему вы думаете, что команда может увеличить скорость?

Множество вещей, которые почти ничего не стоят, могут улучшить окружающую среду: сокращение бессмысленных требований к соблюдению, удаление телефонов, улучшение участия заинтересованных сторон и т. Д. лучшие практики описаны в литературе: PeopleWare, Mythical Man-Month, Code Complete, Writing Solid Code, и т. д.

1000 долларов не уйдут далеко, но они запустят библиотеку, так что я думаю, что книги - ваш лучший выбор. Я бы позволил разработчикам решать, как пополнить библиотеку. Я бы также дал каждому разработчику отмеченную часть полки, где можно хранить личные любимые книги, как в книжном магазине, где люди рекомендуют свои любимые книги. Также существует возможность подписки на Safari или членства в ACM или IEEE с цифровыми книжными полками.

6
ответ дан 30 November 2019 в 01:44
поделиться

Wrist-rests for keyboard and mouse.

5
ответ дан 30 November 2019 в 01:44
поделиться

Если у вас достаточно разработчиков, устройте добровольное соревнование по программированию на выходных, чтобы решить проблему подходящего размера, имеющую отношение к вашему бизнесу. 1 тыс. Долларов (или все, что останется после оплаты пиццы и т. Д.) Достается победителям (или, возможно, получат 1-е, 2-е, 3-е места). Если для этого вы сгруппируете людей в команды, вы (будем надеяться) укрепите корпоративный дух.

5
ответ дан 30 November 2019 в 01:44
поделиться

«Так что я бы сосредоточился на моральном духе моих разработчиков».
Я тоже - сколько стоят тазеры?

4
ответ дан 30 November 2019 в 01:44
поделиться

Для гибких команд вам могут быть интересны инструменты управления проектами, ориентированные на гибкую разработку. Судя по тому, что я слышал (не использовал их сам), и Mingle, и Scrum'd довольно хороши. Если вас это не интересует, ReSharper - незаменимый инструмент для .NET-разработчика. Вы также можете подумать о настройке какой-то системы непрерывной интеграции.

4
ответ дан 30 November 2019 в 01:44
поделиться

I'd spend the $1000 on a banner that says "$1000 is not a significant amount of money in software development!" Licensing pretty much any tools you'd want or need is going to be more than that, and while you can buy a low-end computer that way, if your teams need hardware that badly, you're already starving them to death.

It MIGHT be enough for a book budget for a short while for a small team. MIGHT.

9
ответ дан 30 November 2019 в 01:44
поделиться

Кофеварка хорошего качества, которую можно бесплатно использовать.

3
ответ дан 30 November 2019 в 01:44
поделиться

Пригласите каждую команду разработчиков на выпить в пятницу и используйте $ 1000 для покупки раундов. Это в значительной степени укрепит ваше лидерство и боевой дух команды.

1
ответ дан 30 November 2019 в 01:44
поделиться

Я бы определенно вложил деньги в большой монитор, красивые кресла и наушники ...

1
ответ дан 30 November 2019 в 01:44
поделиться

Сообщите своей команде, что они могут выдать 25 долларов (подарочная карта) кому угодно в любое время за выполнение исключительной работы. Это может быть для того, чтобы дать вам 30-минутный обзор кода, помочь вам исправить неприятную ошибку или выполнить рабочее задание за время выше среднего. С 1000 долларов этого хватит на 40 наград. В среднем около 0,5–1,0 награды на человека в неделю.

Время / дата / причина должны быть записаны одной стороной, чтобы снизить риск злоупотреблений. У меня было это на моей последней работе, и я не знал о каких-либо проблемах.

Некоторые люди могут подумать, что использование бонуса - плохой способ поднять моральный дух, но 25 долларов на самом деле не так уж много, так что это скорее признание вещь. Когда награды исходят от коллег, а не от менеджеров, это обычно оказывает большее влияние на получателя. Я считаю важным, чтобы люди не остались в стороне, даже самые новые сотрудники, поэтому для разных рабочих должна быть разная шкала.

Я бы попробовал это в течение нескольких недель, если есть проблемы, то внесу поправки или попробую что-нибудь другое.

4
ответ дан 30 November 2019 в 01:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: