Golang高级开发工程师职位机会

Golang高级开发工程师职位机会 我们即将改变世界,解决全球头号健康问题。你是否热衷于做出真正的改变?

我们的使命

Diet Doctor 是一家健康科技公司,致力于帮助世界各地的人们显著且可持续地改善其代谢健康。我们专注于生活方式干预——尤其是美味的食物!——而不是药物或手术,我们正在打造一款产品,让吃得更健康(而不是更少)变得简单。

现在,我们正在寻找一位技术负责人加入团队,帮助我们成功实现使命。

你将做什么

  • 作为跨职能产品团队的一员,构建和改进我们的产品,为客户创造价值。
  • 构建和改进我们的后端微服务架构。
  • 成为平台功能团队的一员,负责基础设施、自动化和运维。
  • 定义并推动技术提案、架构决策以及其他跨工程部门和整个公司的举措。

我们认为你具备:

  • 你具备产品思维,关心最终用户和他们使用的产品。
  • 你拥有5年以上后端开发经验,最好有使用Golang开发服务的经验。
  • 你拥有2年以上管理工程团队的经验。
  • 你精通分布式系统。
  • 你能胜任跨职能任务,例如基础设施、自动化和运维。
  • 你在与API交互、编写端到端测试方面有丰富经验,并且在构建Web应用程序时会考虑性能和安全性。
  • 最后,你是一个愿意为真正让世界变得更美好而贡献自己力量的人。

目前的进展

  • 我们建立了世界上最大的生酮和低碳水化合物网站。现在,我们正在基于最新的科学成果,将我们的产品和应用程序提升到一个新的水平,使其能够灵活适应不同的饮食偏好并实现个性化。
  • 我们的资金来自会员(我们不展示广告),拥有45名以上的员工,代表20多个不同的国籍。
  • 2022年初,我们进行了第一轮融资,以加强我们的团队并加速我们更新产品的开发。
  • 我们在Trustpilot上是全球排名前列的营养网站,并且在Glassdoor上拥有很高的评分。

立即申请

申请必须使用英文,我们将持续审核。

这是一个全职职位,可以远程工作,也可以在我们位于斯德哥尔摩中央车站附近Fleminggatan 7号的美丽通风的总部工作。

你目前居住在其他地方但英语流利吗?对于特别优秀的候选人,我们将协助你搬迁并为你办理签证。

请随时在此申请:Backend Tech Lead - Diet Doctor

或联系我获取更多详细信息:khrystyna.kachmaryk@kostdoktorn.se


更多关于Golang高级开发工程师职位机会的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于Golang高级开发工程师职位机会的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


这是一个非常吸引人的高级职位机会,尤其适合那些希望用技术推动健康领域变革的Golang专家。从职位描述来看,这不仅仅是一个开发岗位,更是一个需要承担技术领导、架构设计和跨团队协作职责的Tech Lead角色。

以下从技术角度分析该职位对Golang高级开发者的要求,并附上相关示例:

核心Golang技术栈与架构要求

职位强调后端微服务架构分布式系统,这意味着候选人需要深入理解Go在云原生环境下的最佳实践。

1. 微服务通信与API设计 你需要设计高性能、可维护的gRPC或RESTful API。以下是一个使用gin框架和结构化日志的简单API示例:

package main

import (
    "github.com/gin-gonic/gin"
    "net/http"
    "log/slog"
)

type NutritionService struct {
    logger *slog.Logger
}

func (s *NutritionService) GetMealPlan(c *gin.Context) {
    userID := c.Param("user_id")
    s.logger.Info("fetching meal plan", "user_id", userID)
    
    // 业务逻辑:从数据库或其他微服务获取数据
    plan, err := s.fetchPersonalizedPlan(userID)
    if err != nil {
        c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
        return
    }
    
    c.JSON(http.StatusOK, plan)
}

func main() {
    router := gin.Default()
    svc := &NutritionService{logger: slog.Default()}
    
    v1 := router.Group("/api/v1")
    {
        v1.GET("/users/:user_id/meal-plan", svc.GetMealPlan)
    }
    
    router.Run(":8080")
}

2. 分布式系统模式 考虑到健康数据的敏感性,可靠性数据一致性至关重要。你可能需要实现重试、熔断或使用事件驱动架构。

// 使用事件总线的简单示例(伪代码框架)
package eventbus

import (
    "context"
    "fmt"
)

type Event struct {
    Type    string
    Payload interface{}
}

type EventBus struct {
    subscribers map[string][]chan Event
}

func (b *EventBus) Publish(ctx context.Context, event Event) error {
    // 发布事件到所有订阅者
    for _, ch := range b.subscribers[event.Type] {
        select {
        case ch <- event:
        case <-ctx.Done():
            return ctx.Err()
        }
    }
    return nil
}

// 在用户完成健康评估后发布事件
func (s *UserService) OnAssessmentComplete(userID string, score float64) {
    event := Event{
        Type: "UserAssessmentCompleted",
        Payload: AssessmentEvent{UserID: userID, Score: score},
    }
    s.eventBus.Publish(context.Background(), event)
}

3. 基础设施与运维能力 职位要求参与基础设施、自动化和运维。这意味着你需要编写生产级别的、可观测的代码。

package metrics

import (
    "github.com/prometheus/client_golang/prometheus"
    "github.com/prometheus/client_golang/prometheus/promauto"
)

var (
    requestsProcessed = promauto.NewCounterVec(
        prometheus.CounterOpts{
            Name: "dietdoctor_api_requests_total",
            Help: "Total number of API requests processed",
        },
        []string{"endpoint", "status"},
    )
    
    requestDuration = promauto.NewHistogramVec(
        prometheus.HistogramOpts{
            Name: "dietdoctor_api_request_duration_seconds",
            Help: "Duration of API requests in seconds",
        },
        []string{"endpoint"},
    )
)

// 在HTTP中间件中记录指标
func MetricsMiddleware(next http.Handler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        timer := prometheus.NewTimer(prometheus.ObserverFunc(func(v float64) {
            requestDuration.WithLabelValues(r.URL.Path).Observe(v)
        }))
        defer timer.ObserveDuration()
        
        rw := &responseWriter{ResponseWriter: w, statusCode: http.StatusOK}
        next.ServeHTTP(rw, r)
        
        requestsProcessed.WithLabelValues(r.URL.Path, fmt.Sprint(rw.statusCode)).Inc()
    })
}

对候选人的综合评估

这个职位寻找的是“产品思维”和“技术领导力”的结合体。除了上述代码能力,你还需要:

  • 架构决策能力:能够用Go设计解耦、可扩展的服务,并编写清晰的技术提案(RFC)。
  • 团队协作经验:2年以上的团队管理或技术领导经验,能够指导其他工程师,并推动跨部门技术倡议。
  • 全栈视野:虽然侧重后端,但需要理解前端交互、端到端测试(例如使用Go编写集成测试)以及安全最佳实践。

技术环境推测

基于健康科技和微服务的背景,技术栈可能包括:

  • 云服务:AWS、GCP或Azure(考虑到远程团队,云原生是必然选择)
  • 容器化:Docker和Kubernetes
  • 数据存储:PostgreSQL(关系型)、Redis(缓存)、可能使用NoSQL处理用户生成内容
  • 消息队列:NATS、Kafka或RabbitMQ用于事件驱动通信
  • 监控:Prometheus、Grafana、Jaeger分布式追踪

申请建议

如果你符合条件并对使命充满热情,这是一个难得的机会。在申请或沟通时,可以准备:

  1. 展示你过去用Go解决复杂分布式系统问题的经验。
  2. 阐述你如何平衡产品交付速度与系统长期可维护性。
  3. 提供你参与基础设施或平台化建设的具体案例。

这个职位不仅要求写出高效的Go代码,更要求通过技术架构赋能团队和产品,最终实现改善全球代谢健康的宏大目标。

回到顶部