Johannes Brodwall, Chief Scientist, Steria Norway
Read my blog
Who am I?
Johannes Brodwall is a software developer, software architect and
an opinionated thinker. He's enjoys most to work on small projects
where he can take responsibility from concept to cash. But fate
seems to throw him into large projects. He takes a holistic view
even of a large project, using the experience from small projects
to improve on large projects.
Johannes is especially interested in studying what makes projects
more successful and less successful. He has helped transition
organizations to more agile practices, both as part of an
architecture board during a full organizational transformation,
and in more advisory roles.
Johannes is engaged in growing the software development community in Oslo, and
has been organizing the Oslo XP
Meetup, an Agile User Group with monthly meetings, for four years. He
was also one of the initiators and organizers of two community-oriented
conferences for the local agile community in Oslo:
Smidig 2007 and
Smidig 2008.
Johannes is passionate about quality and rapid iterations in software.
He likes to be the dissenting voice in a discussion and provoke thoughts
in others.
Key Expertise
- Application Architecture
- How do you construct a large scale system that can handle the constraints of your staff, your technical environment and currently available technology?
- Technology selection
- What products are available that will help you develop software faster now? How to you introduce open-source into an organization? I wide and deep knowledge of the technology spaces Java, .NET, C++, Ruby and databases.
- Security
- How do you analyze your system's threat profile? How do you avoid common coding and architectural mistakes that will leave you exposed?
- Automated Testing
- How do you write unit tests for a new or existing system? How do you test database, web pages, interaction? How do you go from having merely a tested system to a system that you know will work and fullfill the requirements?
- Java
- How does the Java language work? What libraries are available? How do you use Java for your greatest advantage?
- Databases
- How do you create good models in a database? How do you interchange data between your database and application?
- Process
- What is the possible benefits of agile development and extreme programming? How do you achieve them? What stands in your way?
- Presentation
- I have a pedagogical, energized and engaged approach to presentations for small and large crowds. I speak Norwegian and English at a native level.
Available courses
Agile introduction and improvement
As a <your project role>, I want to learn more about agile software development, so that <your goal>.
I conduct agile training sessions in an agile and including manner. In a large group, I lead a more moderated discussion about the what, how and why's of increasing the quality and frequency of the feedback in your process.
For a smaller group, we start by the participants writing their own "Participation story" to document what they want to get out of the session. Then the participants prioritize from a range of prepared topics, and we cover
those areas that are most relevant to the participants current experience and goals.
The course takes from 1 hour to half a day.
Introducing Unit Testing into Your Organization
Unit testing is the cornerstone of agile development practices. Once you have this in place, you can start making incremental improvements to your code, architecture and process. But many organizations find it very hard to introduce testing in an existing codebase. I can help:
- (Optional) An evening introduction to testing for your organization
- Initial review: We set up a few hours to go through your codebase and decide on your testing strategy
- Intial test (off site): I write the first tests for your codebase. The tests will run and exercise about 1000 lines of code in your existing system. This is on a "no cure, no pay" basis: If I don't present a running test case for your system, you will not have to pay anything.
- Presentation of findings: I show you how to create similar tests for your codebase and how to get started.
- Follow-up: Pair programming sessions. If you encounter problems while writing tests of your own, I can follow up with a helping hand. This is on a "no cure, no pay" basis: If I can't get your test to pass, you will not have to pay anything.
- (Optional) Continuous integration: Once you have gotten testing up and running, it is time to automate it. I work with your engineers to get a build server up and running.
- (Optional) Architectural improvement: Once you have a stable foundation, you can improve your architecture. I can show you your current best areas of improvement.
Contact me for a program customized for your needs. (Only available for Java)
Project Architectural Kick Start
Are you about to start a new project with Java, .NET, or Ruby? Are you unsure as to what technology to choose? I can help you avoid common traps and choose technology and methods that will save you time and money. Contact me for a program customized for your needs.
Ruby on Rails
Ruby on Rails provides hyperproductive web development. See my Series of Articles to learn more about Ruby on Rails.
I am currently giving this course through Programutvikling in Oslo. My next course will be December 9th to 15th. You can read more about the course at Programutvikling's web site.
Other courses
I have the necessary material to conduct the following courses. I can provide training ranging from one hour to about a day.
- Agile Java Frameworks: Using J2EE frameworks like Spring, Hibernate, Maven, and more in enterprise applications.
- Custom made: I can provide custom made training within my areas of expertise.
Experience
Project highlights
- BBS, STAY (2004-2007)
- Lead Java Architect and Agile Evangelist for a large project. Hibernate, Spring, J2EE, JUnit. Technology selection, security, test strategy and yes, programming.
- BBS, Nettbank (2004)
- Internet banking. Web sevices. Unit testing. Integration testing. Automation. Java. Tomcat.
- Chat.no (2004-2006)
- Full technical responsibility for development, deployment, monitoring, security of online chat service. Unit testing, automation. Applets.
- PetroOnline (2003-2004)
- Architect, technical lead and project manager for redevelopment of a petroleum depot automation system. C#/.NET. NUnit.
- Telenor (2002)
- Worked as developer on Telenor's mobile payment initiative. Java, EJB, networking. Integration testing.
- Ericsson (2000-2001)
- Worked as a developer on the team implementing a H.322 IP Telephony proxy. H.323 IP telephony. Java concurrency. RUP.
- Systek (2000-2003)
- I was employed as a consultant in Systek for 3 years. My responsibilities included software architecture, coaching. Critical technologies: J2EE, Unit testing, Extreme programming.
- Accept Data (1999-2000)
- Worked as a C++ developer on the Win32/MFC-based replacement of existing backend system for financial applications. C++. Double-entry bookkeeping, Database.
Presentation Highlights
Here are some of the presentations I have given on more than one occasion.
- JavaZone 2001-2008
- I am a regular speaker at JavaZone, Norway's largest developers' conference. My presentations have included Unit Testing, SOA (video available), Java versus .NET (video available), J2ME, enterprise software architecture,
and continuous deployment (video available).
- Test-driven development
- I have introduced Test-driven development for several organizations and at two conferences.
- Introduction to Ruby on Rails
- What you can do with Rails, and how to do it. Video recording available from NUUG Site (in Norwegian)
- Java Safari
- Introduction and overview of Java and Java Technologies. Held for multiple companies in 2001-2003.
- Introduction to Extreme Programming
- The basis of extreme programming, and how to get started.
- Organizational challenges with Open Source
- The legal and organizational impact of adopting open source.
Bibliography