Bitfield Institute of Technology

Bitfield Institute of Technology

gopher-standing.png

What BIT graduates can bring to your team

About BIT

The Bitfield Institute of Technology (BIT) is a software engineering school focused on the Go programming language, but that also teaches engineering and design skills which are applicable to all programming languages. Based in Cornwall, England, and run by renowned Go teacher and writer John Arundel, the school offers remote training and certifications in Go development to students worldwide.

How it works

The BIT program is delivered online, and students combine solo project work and study with regular remote pairing sessions with a mentor. During these sessions, the mentor will review the student's work, discuss questions and issues, and help the student plan what to do next.

In between sessions, the student receives code review via GitHub using a standard pull request workflow, which helps prepare them for working in commercial software development teams.

Approach

While it's important that students learn how to write clear, well-organised, and efficient programs in Go, the BIT program also aims to teach general software engineering principles, including:

  • Test-driven development (TDD)
  • Readability and maintainability
  • Project structure and layout
  • Library and package design
  • Problem-solving and troubleshooting workflow
  • Collaboration and communication skills
  • Agile project management
  • Building safe, reliable, and resilient software
  • Concurrent and distributed programming
  • Cloud infrastructure and container-based deployment
  • Programming at large scale and high performance

Many of these skills will serve the student well whatever language or technology they use in the future, but at BIT they are taught with specific reference to Go, and include best practices for Go development.

Software Engineer - Foundational

Adebayo Ogidiolu - Foundational.png

This is the first level of certification in the BIT program. Identified by a virtual yellow belt, in the tradition of martial arts schools, the Foundational certification indicates that the student knows how to:

  • create and run Go programs and packages
  • write and run tests
  • use the Test-Driven Development (TDD) workflow to build projects
  • write and test functions which return multiple values, including errors
  • write functions which take multiple or variadic arguments
  • use structs, slices, and loops to test multiple cases
  • validate inputs and create custom error values
  • use built-in types like strings, maps, and numbers
  • use key standard libraries like fmt and testing

To qualify for this certification, the student must not only demonstrate their knowledge of these topics, but also submit an open source Go project which uses that knowledge. The instructor will work with the student to revise and improve the project until it has reached the required standard.

Set text: For the Love of Go

Specimen project: Fundamentals of Go

Software Engineer - Intermediate

The green belt certification builds on the knowledge acquired at Foundational level, and shows that the student knows how to:

  • write clear and idiomatic code following Go best practices
  • test complex behaviours requiring dependency injection, mocks and stubs, or ambassador functions
  • build simple projects from scratch to prototype state, test-first
  • use most features of Go language and syntax
  • use custom types and methods, including pointer methods
  • work both independently and collaboratively on projects
  • explain fundamental Go concepts to beginners

To qualify, the student must submit at least one approved project, and satisfy their instructor that they have a good understanding of the Go language, specification, and tooling.

A student with this certification can undertake any project in Go with minimal help and supervision, except perhaps those involving concurrency, which is not taught at this stage. They are a good candidate for any position suitable for "junior developer" level, or even higher; in addition, they have demonstrated strong motivation, independent learning skills, and an ability to self-drive which would reflect credit even on some more experienced engineers.

Set texts: The Power of Go: Tools

Specimen project: Network chat server

Software Engineer - Advanced

This "blue belt" certification extends the previous levels to include not only an excellent understanding of sequential Go programs, but the ability to write safe, efficient, and correct concurrent programs too. Students can:

  • demonstrate a comprehensive knowledge of Go
  • use the Go tools to perform profiling, benchmarking, and cross-compilation
  • use standard concurrency patterns in Go
  • use goroutines, channels, mutexes, waitgroups, and select statements
  • build non-trivial concurrent programs
  • understand and use interfaces such as io.Reader/Writer
  • use type switches and type assertions to handle arbitrary data
  • test complex programs including network and database clients, and HTTP servers and clients
  • use generics
  • design elegant, effective, and usable libraries
  • design and structure projects with multiple packages, such as CLIs and APIs
  • explain the Go language and standard libraries to beginners
  • coach other students to at least Intermediate level

A candidate at this level is probably equivalent to a full-time commercial Go developer with six months to a year's experience, but probably with a more rigorous and comprehensive knowledge of the language than most.

Set texts: Know Go: Generics

Questions

If you have any questions about the Bitfield Institute of Technology, its instructors, programs, or certifications, then please contact John Arundel at john@bitfieldconsulting.com (or use the contact form on this site).

If you would like to check any reference or certification offered by a candidate for employment, for example, or even to talk to the candidate's instructor about their skills and aptitude, please do get in touch and we will be delighted to help.

Gopher image by egonelbre

VS Code and Go: a superhero's guide

VS Code and Go: a superhero's guide

Stop wasting time

Stop wasting time

0