FAQ
Hi guys,

We are developing certain web service for those who use it by paying money.
I'd like to know suitable design pattern for development of Golang.

There are lots of useful packages on Github or another repository.
However our team tends to develop everything by ourself without such outer
packages even if it's useful.
In my opinion, I'd better to use more those useful packages to
work effectively.
To persuade my co-workers, I want to know best practice and that reasons.

Thanks in advance.

Harry.

--
You received this message because you are subscribed to the Google Groups "golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Search Discussions

  • Henry at May 18, 2016 at 7:01 am
    Hi,

    There is no easy answer to this. I guess the correct answer is "it
    depends". When deciding whether to use a third party library, the first
    thing you may want to look at is the license. Is it suitable for your
    project, or is it too restrictive? If it isn't free, is there a room in
    your project's budget for this? The next thing you may want to evaluate is
    whether the library is suitable for your needs, and how much work is
    required to integrate the library with your project. Usually for
    trivial parts or for the critical parts of your project, you may want to
    develop in-house. For others not so critical that consumes a significant
    amount of resource to develop, you may consider using a third party
    libraries. In some companies, the decision to use a third party library is
    often not up to the development team. You may need to get approval from the
    legal, the accounting, or the upper management.

    The primary consideration is usually control vs cost. When you develop
    in-house, you have absolute control over it. You own it and you can do
    anything with it. However, how much are you willing to pay for having such
    a control?
    On Wednesday, May 18, 2016 at 9:03:39 AM UTC+7, Harry wrote:

    Hi guys,

    We are developing certain web service for those who use it by paying money.
    I'd like to know suitable design pattern for development of Golang.

    There are lots of useful packages on Github or another repository.
    However our team tends to develop everything by ourself without such outer
    packages even if it's useful.
    In my opinion, I'd better to use more those useful packages to
    work effectively.
    To persuade my co-workers, I want to know best practice and that reasons.

    Thanks in advance.

    Harry.
    --
    You received this message because you are subscribed to the Google Groups "golang-nuts" group.
    To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscribe@googlegroups.com.
    For more options, visit https://groups.google.com/d/optout.
  • Harry at May 18, 2016 at 9:32 am
    Thanks Henry.

    I agree with you. It depends on project.
    However our team just sticks to develop everything without reasonable
    reason.
    What's worse, they develop poor packages that is terrible performance.


    2016年5月18日水曜日 16時01分22秒 UTC+9 Henry:
    Hi,

    There is no easy answer to this. I guess the correct answer is "it
    depends". When deciding whether to use a third party library, the first
    thing you may want to look at is the license. Is it suitable for your
    project, or is it too restrictive? If it isn't free, is there a room in
    your project's budget for this? The next thing you may want to evaluate is
    whether the library is suitable for your needs, and how much work is
    required to integrate the library with your project. Usually for
    trivial parts or for the critical parts of your project, you may want to
    develop in-house. For others not so critical that consumes a significant
    amount of resource to develop, you may consider using a third party
    libraries. In some companies, the decision to use a third party library is
    often not up to the development team. You may need to get approval from the
    legal, the accounting, or the upper management.

    The primary consideration is usually control vs cost. When you develop
    in-house, you have absolute control over it. You own it and you can do
    anything with it. However, how much are you willing to pay for having such
    a control?
    On Wednesday, May 18, 2016 at 9:03:39 AM UTC+7, Harry wrote:

    Hi guys,

    We are developing certain web service for those who use it by paying
    money.
    I'd like to know suitable design pattern for development of Golang.

    There are lots of useful packages on Github or another repository.
    However our team tends to develop everything by ourself without such
    outer packages even if it's useful.
    In my opinion, I'd better to use more those useful packages to
    work effectively.
    To persuade my co-workers, I want to know best practice and that reasons.

    Thanks in advance.

    Harry.
    --
    You received this message because you are subscribed to the Google Groups "golang-nuts" group.
    To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscribe@googlegroups.com.
    For more options, visit https://groups.google.com/d/optout.
  • Egon at May 18, 2016 at 10:02 am

    On Wednesday, 18 May 2016 05:03:39 UTC+3, Harry wrote:
    Hi guys,

    We are developing certain web service for those who use it by paying money.
    I'd like to know suitable design pattern for development of Golang.

    There are lots of useful packages on Github or another repository.
    However our team tends to develop everything by ourself without such outer
    packages even if it's useful.
    In my opinion, I'd better to use more those useful packages to
    work effectively.
    To persuade my co-workers, I want to know best practice and that reasons.
    Everything part of your system is your problem -- if you include a package,
    then you have to maintain it, if there is a bug you need to fix it. If
    there are other people using the same package, this means that there is a
    bigger chance that the bug gets fixed. Packages also come with an
    integration cost -- the better the package, the smaller the cost. For
    example the Go standard library has a very small cost for the integration
    part.

    However those aren't the most important factors. The major question should
    be asking yourself is --- *how and why does it provide value to the
    customer?*

    Basically ask yourselves, is it the most valuable thing that you could be
    doing right now.

    Sometimes finding a better color scheme for an application is more
    important than getting 50ms off the response times. In other cases
    optimizing 50ms could increase 10000$ of revenue per day for the customer.

    *So,*

    *1.* is it the most valuable thing for the customer that you are doing
    right now,
    *2. *are there better and easier ways of creating the same value
    *2.a* is doing it better than everyone else going to make a difference or
    *2.b* can you just use some 3rd party library and move onto some other
    important thing

    Basically decide what you *don't work on*, it makes the question where to
    put your effort easier.

    I love a quote by Eric Evans:

    *"Not all of a large system will be well designed."*


    And this interpretation of it: *You need to decide what parts of your
    system will be well designed and what parts will be poorly designed, that
    way you spend more time on things that make a bigger difference.*

    + Egon

    --
    You received this message because you are subscribed to the Google Groups "golang-nuts" group.
    To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscribe@googlegroups.com.
    For more options, visit https://groups.google.com/d/optout.
  • Harry at May 19, 2016 at 8:12 am
    Thanks Egon.
    It's great idea and useful.

    That work is nice and I was impressed.
    *"Not all of a large system will be well designed."*

    Thanks again!

    Harry.

    2016年5月18日水曜日 19時02分49秒 UTC+9 Egon:
    On Wednesday, 18 May 2016 05:03:39 UTC+3, Harry wrote:

    Hi guys,

    We are developing certain web service for those who use it by paying
    money.
    I'd like to know suitable design pattern for development of Golang.

    There are lots of useful packages on Github or another repository.
    However our team tends to develop everything by ourself without such
    outer packages even if it's useful.
    In my opinion, I'd better to use more those useful packages to
    work effectively.
    To persuade my co-workers, I want to know best practice and that reasons.
    Everything part of your system is your problem -- if you include a
    package, then you have to maintain it, if there is a bug you need to fix
    it. If there are other people using the same package, this means that there
    is a bigger chance that the bug gets fixed. Packages also come with an
    integration cost -- the better the package, the smaller the cost. For
    example the Go standard library has a very small cost for the integration
    part.

    However those aren't the most important factors. The major question should
    be asking yourself is --- *how and why does it provide value to the
    customer?*

    Basically ask yourselves, is it the most valuable thing that you could be
    doing right now.

    Sometimes finding a better color scheme for an application is more
    important than getting 50ms off the response times. In other cases
    optimizing 50ms could increase 10000$ of revenue per day for the customer.

    *So,*

    *1.* is it the most valuable thing for the customer that you are doing
    right now,
    *2. *are there better and easier ways of creating the same value
    *2.a* is doing it better than everyone else going to make a difference or
    *2.b* can you just use some 3rd party library and move onto some other
    important thing

    Basically decide what you *don't work on*, it makes the question where to
    put your effort easier.

    I love a quote by Eric Evans:

    *"Not all of a large system will be well designed."*


    And this interpretation of it: *You need to decide what parts of your
    system will be well designed and what parts will be poorly designed, that
    way you spend more time on things that make a bigger difference.*

    + Egon
    --
    You received this message because you are subscribed to the Google Groups "golang-nuts" group.
    To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscribe@googlegroups.com.
    For more options, visit https://groups.google.com/d/optout.
  • Kiki Sugiaman at May 18, 2016 at 6:08 pm
    There's nothing wrong with using 3rd party packages if you and your team
    apply some common sense heuristics.

    Some ideas already floated in this thread are great. I'll add mine:
    - Does your team know what to do if Github suddenly stops working tomorrow?
    - For obscure packages, are you able/willing to spend a reasonable
    amount of time to understand everything the package does?
    - Do you and your team know what to do if the package maintainer ignores
    you?
    - Do you agree/tolerate the maintainer/community's major decisions such
    as API breaking and acceptance/refusal of features?

    Every yes the each question is more reason to use a 3rd party package.


    On 18/05/16 12:03, Harry wrote:
    Hi guys,

    We are developing certain web service for those who use it by paying money.
    I'd like to know suitable design pattern for development of Golang.

    There are lots of useful packages on Github or another repository.
    However our team tends to develop everything by ourself without such
    outer packages even if it's useful.
    In my opinion, I'd better to use more those useful packages to
    work effectively.
    To persuade my co-workers, I want to know best practice and that reasons.

    Thanks in advance.

    Harry.

    --
    You received this message because you are subscribed to the Google
    Groups "golang-nuts" group.
    To unsubscribe from this group and stop receiving emails from it, send
    an email to golang-nuts+unsubscribe@googlegroups.com
    For more options, visit https://groups.google.com/d/optout.
    --
    You received this message because you are subscribed to the Google Groups "golang-nuts" group.
    To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscribe@googlegroups.com.
    For more options, visit https://groups.google.com/d/optout.
  • Harry at May 19, 2016 at 8:18 am
    Hi ksug,
    Thanks another good points that I'd miss these points.

    I could negotiate with my co-workers and explain why we'd better to use
    these useful package.

    Thanks!

    2016年5月19日木曜日 3時08分43秒 UTC+9 ksug:
    There's nothing wrong with using 3rd party packages if you and your team
    apply some common sense heuristics.

    Some ideas already floated in this thread are great. I'll add mine:
    - Does your team know what to do if Github suddenly stops working
    tomorrow?
    - For obscure packages, are you able/willing to spend a reasonable
    amount of time to understand everything the package does?
    - Do you and your team know what to do if the package maintainer ignores
    you?
    - Do you agree/tolerate the maintainer/community's major decisions such
    as API breaking and acceptance/refusal of features?

    Every yes the each question is more reason to use a 3rd party package.


    On 18/05/16 12:03, Harry wrote:
    Hi guys,

    We are developing certain web service for those who use it by paying money.
    I'd like to know suitable design pattern for development of Golang.

    There are lots of useful packages on Github or another repository.
    However our team tends to develop everything by ourself without such
    outer packages even if it's useful.
    In my opinion, I'd better to use more those useful packages to
    work effectively.
    To persuade my co-workers, I want to know best practice and that reasons.
    Thanks in advance.

    Harry.

    --
    You received this message because you are subscribed to the Google
    Groups "golang-nuts" group.
    To unsubscribe from this group and stop receiving emails from it, send
    an email to golang-nuts...@googlegroups.com <javascript:>
    <mailto:golang-nuts+unsubscribe@googlegroups.com <javascript:>>.
    For more options, visit https://groups.google.com/d/optout.
    --
    You received this message because you are subscribed to the Google Groups "golang-nuts" group.
    To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscribe@googlegroups.com.
    For more options, visit https://groups.google.com/d/optout.

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupgolang-nuts @
categoriesgo
postedMay 18, '16 at 2:03a
activeMay 19, '16 at 8:18a
posts7
users4
websitegolang.org

People

Translate

site design / logo © 2021 Grokbase