1
00:00:00,000 --> 00:00:04,520
Hey everyone, this week we have one of our interviews with a SpringOne Platform speaker

2
00:00:04,520 --> 00:00:09,040
where you get to not only hear a little bit of what they'll be talking about, or preview if you

3
00:00:09,040 --> 00:00:14,240
will, but some about themselves as well. Now we have SpringOne Platform coming up in my hometown,

4
00:00:14,540 --> 00:00:19,860
Austin, Texas, October 7th to 10th. Now if you're listening in the future, this is in 2019.

5
00:00:20,480 --> 00:00:25,580
Sorry if you missed it. You have to write a letter to me, tell me how 2025 is doing.

6
00:00:25,580 --> 00:00:30,940
Always curious. Anyhow, you should take a look and register for it. If you register before

7
00:00:30,940 --> 00:00:37,020
August 20th, you'll get a nice discount from it. Otherwise, if you just go to springoneplatform.io,

8
00:00:37,360 --> 00:00:42,920
you can sign up for it and come see us in Austin. So with that, enjoy the interview.

9
00:00:43,460 --> 00:00:49,400
Today we're joined by Trisha G in our Women of SpringOne interview series, and I would like to

10
00:00:49,400 --> 00:00:54,320
just kind of start things off by asking Trisha to share a little bit about herself, kind of give us

11
00:00:54,320 --> 00:00:58,800
some background, and we'll take it from there. So Trisha, welcome, and please tell us about you.

12
00:00:59,720 --> 00:01:05,460
Hello, thanks for having me. I'm Trisha. I'm a developer advocate for JetBrains. I mostly work

13
00:01:05,460 --> 00:01:10,020
doing developer advocacy type stuff for IntelliJ IDEA, which means that generally speaking, I try to stay

14
00:01:10,020 --> 00:01:15,280
up to date on what's happening in the whole of the Java community, Java language updates, and try and

15
00:01:15,280 --> 00:01:20,680
keep developers up to speed on stuff which is going to be helpful for them in their day jobs when they're

16
00:01:20,680 --> 00:01:23,080
hopefully using that IDE if they're using IntelliJ IDEA.

17
00:01:24,400 --> 00:01:28,020
Well, at this point, I have to say, who wouldn't use IntelliJ? I mean, really?

18
00:01:30,020 --> 00:01:35,920
Well, yeah. I mean, and for those of you listening, I know and have known Trisha for a long time.

19
00:01:36,160 --> 00:01:39,860
Deepest respect for her and all the things that she has and is accomplishing,

20
00:01:40,300 --> 00:01:45,240
has accomplished, is accomplishing, I guess. For those of you who don't maybe know Trisha as well,

21
00:01:45,700 --> 00:01:51,920
I was hoping we could maybe tease out some thoughts, some background from her, and maybe all of us get to

22
00:01:51,920 --> 00:01:56,720
know her a little bit better. So Trisha, if you would, please tell us, how did you get into tech?

23
00:01:56,920 --> 00:01:59,600
Take the Wayback Machine, and we'll see maybe where we lay out.

24
00:02:01,020 --> 00:02:06,700
I have a fairly standard classical way of getting into development, really, the same as a lot of

25
00:02:06,700 --> 00:02:11,620
other people in the industry in terms of, I actually studied computer science at A-level,

26
00:02:11,820 --> 00:02:16,940
so I come from the UK, so at 16 to 18, I was studying computer science, and I went to study

27
00:02:16,940 --> 00:02:21,160
computer science at university. I originally wanted to do astrophysics, actually, because I wanted to be

28
00:02:21,160 --> 00:02:26,220
an astronaut, and I wanted to, I don't know, I wanted to go to Mars. But it turned out I wasn't that

29
00:02:26,220 --> 00:02:31,680
excited about all the physics equations and stuff, and I really liked programming. So I studied computer

30
00:02:31,680 --> 00:02:37,700
science at university instead. I did an undergraduate placement at Ford Motor Company, where I was

31
00:02:37,700 --> 00:02:42,520
doing programming, a bit of, I was doing a bit of web development, a bit of programming, and so then

32
00:02:42,520 --> 00:02:49,420
when I graduated, which is now way back in 2001, I kind of just fell into programming type roles. At that

33
00:02:49,420 --> 00:02:56,200
point in time, I'd studied Java at university, had done a little bit of Java, let me see,

34
00:02:56,220 --> 00:03:01,680
did a bit of Java for my final year project, and ended up doing Java programming roles back in

35
00:03:01,680 --> 00:03:07,300
2001, when Java was a fairly new language. And I've basically been doing professional Java

36
00:03:07,300 --> 00:03:12,220
development since then, which is a little bit scary, because I still feel like I'm just kind of getting

37
00:03:12,220 --> 00:03:16,780
the hang of this programming thing. I've been doing it for nearly 20 years. Well, if you count all of the

38
00:03:16,780 --> 00:03:22,580
programming, I've been doing it for more than 20 years. I've been doing Java for 22 years, if you

39
00:03:22,580 --> 00:03:31,480
include university time. Oh my goodness, that's more than half my life. And so yeah, I did programming to

40
00:03:31,480 --> 00:03:36,440
begin with as a graduate, and I just really liked it. And the jobs that I had were largely, to begin

41
00:03:36,440 --> 00:03:41,840
with, had this kind of classic big industry thing of trying to put you first to the technical role and

42
00:03:41,840 --> 00:03:47,100
then advancing you into management. But that's not really where I saw myself. So I ended up jumping

43
00:03:47,100 --> 00:03:52,800
from programming role to programming roles, taking stints of about two years in each different company. So

44
00:03:52,800 --> 00:03:55,760
it means I've worked for a lot of different companies. I've worked for these big enterprise

45
00:03:55,760 --> 00:04:00,060
companies, I've worked for small startups, I've worked for not-more profits. I worked for this

46
00:04:00,060 --> 00:04:04,960
great company called LMAX in London, which is a financial exchange, which is where I actually used

47
00:04:04,960 --> 00:04:09,020
some of my computer science degree in terms of understanding like what big O notation really

48
00:04:09,020 --> 00:04:15,120
meant and how it impacted the performance of your programs. And then after that, I ended up going into

49
00:04:15,120 --> 00:04:20,820
developer advocacy. Because what I really found super interesting is having spent all this time

50
00:04:20,820 --> 00:04:24,960
learning how to program, working in all these different types of environments, understanding

51
00:04:24,960 --> 00:04:28,660
what's difficult about this job, I really wanted to make other developers' lives a lot easier.

52
00:04:28,960 --> 00:04:34,060
So I kind of want to tell people all the useful stuff that I've picked up the hard way. I want to teach

53
00:04:34,060 --> 00:04:39,680
them the useful bits of Java. I want to teach them how to use the IDE so they don't have to think about

54
00:04:39,680 --> 00:04:44,300
what they're doing. They can just get on with their job. So that's how I ended up working for

55
00:04:44,300 --> 00:04:49,260
JetBrains. I've been working for JetBrains for nearly five years now. And so that's really a sweet spot

56
00:04:49,260 --> 00:04:55,220
for me. I'm still doing Java type stuff. I'm still doing coding. But a lot of what I do is like figure

57
00:04:55,220 --> 00:05:01,080
out how are real developers solving problems? How can I help them solve those problems more usefully

58
00:05:01,080 --> 00:05:04,100
without having to bang their head against the brick wall of the tools they're using?

59
00:05:05,600 --> 00:05:11,900
Well, that actually is a phenomenal, bring us up to speed type of review of your background. And it also

60
00:05:11,900 --> 00:05:16,000
covers the next question I was going to ask, which is what you love about it. But I think you've very

61
00:05:16,000 --> 00:05:20,520
clearly stated what you love about it. But actually, that leads me in a slightly different direction now

62
00:05:20,520 --> 00:05:26,040
that you've brought this up, because developer advocacy is kind of an interesting field, if you

63
00:05:26,040 --> 00:05:32,640
will, an interesting specialization. And sometimes I get the question, how do you go into advocacy? How do

64
00:05:32,640 --> 00:05:37,780
you get started? And, and many times I've, I feel like if, you know, when you kind of look at the

65
00:05:37,780 --> 00:05:43,300
cross section of those of us crazy enough to kind of enter into that area, it almost seems like it's an

66
00:05:43,300 --> 00:05:49,240
accidental evolution, because we start sharing and talking to colleagues about things that we find

67
00:05:49,240 --> 00:05:54,420
useful. And then we start expanding that, or they suggest we go and share our same tricks, tips,

68
00:05:54,520 --> 00:05:58,880
whatever with a local Java user group. And then that evolves to maybe a local conference, and then

69
00:05:58,880 --> 00:06:03,840
other conferences. And then before you know it, you're just there. Was your kind of transition in

70
00:06:03,840 --> 00:06:07,700
that a gradual kind of enlightening? Or was that something that you looked at and said, you know

71
00:06:07,700 --> 00:06:12,460
what, I can do so much good by doing this? Was it kind of a conscious decision? How did, how did you

72
00:06:12,460 --> 00:06:18,480
get here? I guess it was kind of accidental and conscious. Obviously, like you say, to become aware

73
00:06:18,480 --> 00:06:24,000
of this sort of role, you sort of kind of accidentally move into that direction. So for a start,

74
00:06:24,000 --> 00:06:29,180
when I was doing all of my other development roles early on, like my first role after Ford,

75
00:06:29,680 --> 00:06:34,480
I distinctly remember doing a very thorough job of documenting the code base, we were using a

76
00:06:34,480 --> 00:06:39,260
homegrown library, which wasn't well documented, it wasn't clear how to use it, I really struggled

77
00:06:39,260 --> 00:06:44,580
getting started on it. So what I did when I knew I was leaving the company is I actually put aside

78
00:06:44,580 --> 00:06:49,440
some time to fully document it. As a developer, how do I use this library? And that's like my first

79
00:06:49,440 --> 00:06:54,960
proper role as a graduate. And, and that's where I've always been as a developer, I've always been

80
00:06:54,960 --> 00:07:00,560
very thorough in documentation, I've always tried to write self describing code. And even when my code

81
00:07:00,560 --> 00:07:04,160
wasn't that great, it's always been like, look, I've done it. And it's not great way. But these are

82
00:07:04,160 --> 00:07:11,040
the reasons why I did it this way. So I definitely always had that kind of instinct of, you know, I enjoy

83
00:07:11,040 --> 00:07:16,440
programming, I think it's fun, but I struggle a lot to, to use things the way they're supposed to be used.

84
00:07:16,440 --> 00:07:20,720
And if I've struggled, I want to write it down. So I kind of started from there. And I started with

85
00:07:20,720 --> 00:07:27,080
blogging and things like that. But then there came a time, let me see, around about maybe 2011,

86
00:07:28,120 --> 00:07:35,000
something like that, where, so I joined the London Java community in 2008, when I moved back from New

87
00:07:35,000 --> 00:07:38,840
York, and I needed a job. So I joined the user group, it seemed like a sensible thing to do.

88
00:07:39,640 --> 00:07:44,520
Right, I kind of got involved in it in the user group for an entirely selfish point of view, like,

89
00:07:44,520 --> 00:07:48,800
what do I need to know, what jobs are there, I need to meet people in London, I've been living

90
00:07:48,800 --> 00:07:54,360
in London before, but I felt super disconnected to the city. So I needed a way in, the user group

91
00:07:54,360 --> 00:07:59,800
was a way into that. And then over the next few years, when I met people who are now fairly famous

92
00:07:59,800 --> 00:08:04,800
in the Java community, people like Martin Verberg, like Ben Evans, and I met these people in the London

93
00:08:04,800 --> 00:08:10,200
Java community, and they were big in open source, and they were big in the community. They sort of

94
00:08:10,200 --> 00:08:19,240
opened my eyes to what was kind of what the Java community was. Before I'd been a typical nine to

95
00:08:19,240 --> 00:08:23,480
five type developer, which I have no problem with nine to five type developers. But you know,

96
00:08:23,480 --> 00:08:28,680
I'd go to work, I would read the internet to find stuff, but I generally just do whatever I needed to

97
00:08:28,680 --> 00:08:33,960
do for the job. And the London Java community has opened my eyes up to all sorts of other stuff that

98
00:08:33,960 --> 00:08:39,240
are out there, open my eyes up to open source, and to, to being able to use other people in the

99
00:08:39,240 --> 00:08:44,360
community in different types of roles. So I kind of was trundling along with that for a little while.

100
00:08:44,360 --> 00:08:50,840
And then I think it was 2011, Martin sort of pushed me to do my first lightning talk. And I also,

101
00:08:50,840 --> 00:08:56,440
at the same time, I met Martin Fowler in the pub, weirdly, and complained about the lack of women speakers at

102
00:08:56,440 --> 00:09:00,920
various conferences. And he was like, well, you're in the perfect position to do something about that,

103
00:09:00,920 --> 00:09:05,000
because you're a technical woman. And I'd never thought of it that way before.

104
00:09:06,120 --> 00:09:07,000
Right?

105
00:09:07,000 --> 00:09:10,600
Because I'm like, just moaning about these conference organizers not doing more.

106
00:09:10,600 --> 00:09:15,160
And in actual fact, I'm the one in the position to do the most about this, I can stand up and I can

107
00:09:15,160 --> 00:09:19,160
present at these conferences. And by me standing up and presenting at some of these conferences,

108
00:09:19,160 --> 00:09:25,720
I can maybe double the number of women speakers alone. Right? So it became very clear to me that

109
00:09:25,720 --> 00:09:31,000
I have a role to play in this community. And I can do this, especially with the help of mentors like that.

110
00:09:31,000 --> 00:09:35,640
They were super supportive. All of these people were like, you know, you can do this. You've got this.

111
00:09:35,640 --> 00:09:37,640
This is a good thing for you to do. You've got the skills.

112
00:09:37,640 --> 00:09:42,920
So very quickly from in the space of about a year, I started from, I already had a blog.

113
00:09:42,920 --> 00:09:47,000
So that's kind of trundling on. But in the space of about a year with people's help and mentoring and

114
00:09:47,000 --> 00:09:51,640
pushing, I kind of started speaking at conferences. And then at that point, I was like, yes, this is

115
00:09:51,640 --> 00:09:58,120
what I want to do. I want a job where I am doing things like blogging and conferences and teaching

116
00:09:58,120 --> 00:10:04,680
people as the main part of my job, not just as a kind of side aspect. And then I very deliberately

117
00:10:04,680 --> 00:10:09,320
steered my career into, into that direction. One of the other things I wanted, which is kind of

118
00:10:09,320 --> 00:10:16,600
related is that I knew I wanted to work remote. I knew I wanted to be able to, well, I knew I wanted

119
00:10:16,600 --> 00:10:21,000
to be able to work from home. I knew I wanted to start a family in the next five years. Cause you know,

120
00:10:21,000 --> 00:10:25,880
I'm a woman and I was like coming up to 35. So I think even before I had a boyfriend at the time,

121
00:10:25,880 --> 00:10:30,920
I'm like, no, this is on the cards and I need to be in a position professionally where I have

122
00:10:30,920 --> 00:10:35,720
flexibility. Should I want to have a family? And so developer advocacy, although there's travel

123
00:10:35,720 --> 00:10:40,200
involved in that also seemed like a good fit because I know that a lot of people can work from home

124
00:10:40,200 --> 00:10:45,320
doing that. So again, something I deliberately steered my career towards because it was going to fulfill

125
00:10:45,320 --> 00:10:51,320
what I needed from a personal point of view. Yeah, that is an excellent point because it does give you

126
00:10:51,320 --> 00:10:57,000
a great deal of latitude. It also adds a lot of, um, a lot of other tasks. Sometimes folks ask what

127
00:10:57,000 --> 00:11:01,960
it is like to do developer advocacy. And one of my responses is it gives you about a hundred different

128
00:11:01,960 --> 00:11:06,360
things to do. So you're never bored. The problem is there at any given point in time, there are about

129
00:11:06,360 --> 00:11:11,400
a hundred different things you should and could be doing. Yeah. I'd say that's the biggest challenge

130
00:11:11,400 --> 00:11:15,400
to developer advocacy. And I really struggle with it. Um, that's the one thing I really do struggle

131
00:11:15,400 --> 00:11:19,960
with because partly a lot of it's pressure from myself. There's just so many things I want to do.

132
00:11:19,960 --> 00:11:23,480
There's so many places I want to go, so many conferences I want to do. There's so much I want

133
00:11:23,480 --> 00:11:29,400
to write about. I really want to be doing in-depth written tutorials. I also want to be doing screencasts,

134
00:11:29,400 --> 00:11:35,320
but there's all sorts of other rubbish, like loads of admin because, um, because I'm fairly the way

135
00:11:35,320 --> 00:11:39,480
that we're structured inside JetBrains. I also have to book my own travel and I have to do a lot of my own

136
00:11:39,480 --> 00:11:44,200
admin for expenses and stuff like that. And that's just, you know, extra overhead. So there's always just

137
00:11:44,200 --> 00:11:50,360
all this rubbish to do as well as all the really awesome stuff you want to do. And because my,

138
00:11:50,360 --> 00:11:57,160
the remit I've given myself is cover all of Java and all of IntelliJ IDEA and these are just massive

139
00:11:57,160 --> 00:12:03,080
products and it's impossible to do all of that by myself. And, um, and so, yeah, there's always just

140
00:12:03,080 --> 00:12:08,360
so many things to do and prioritizing them is almost impossible. And figuring out what's valuable is also

141
00:12:08,360 --> 00:12:13,000
quite difficult because something which gets, you know, 300 people at a conference talk,

142
00:12:13,000 --> 00:12:17,640
how does that rate against, you know, 10,000 people reading blog posts or, you know,

143
00:12:17,640 --> 00:12:22,280
X many subscribers on Twitter? How do you measure these things? Is it really giving value

144
00:12:22,280 --> 00:12:24,360
to the company, to the product?

145
00:12:25,720 --> 00:12:32,120
Yeah, it is very difficult to assign specific value to specific actions. It seems like everything kind of

146
00:12:32,120 --> 00:12:37,840
builds on everything else, but I can say with a lot of gratitude, I'm glad that you do all of the

147
00:12:37,840 --> 00:12:42,480
things you do because there have been several times I've watched at Tricia G screencast. And

148
00:12:42,480 --> 00:12:49,360
I've also sat in on talks. I've read your, uh, your articles. All of them are just superb. I want to take

149
00:12:49,360 --> 00:12:53,760
it back though to something that you mentioned in terms of your traveling and speaking. There have

150
00:12:53,760 --> 00:12:58,400
been times even where you weren't able to travel that you've delivered a talk. I remember one time at

151
00:12:58,400 --> 00:13:04,800
Java one, I think it was two or three years ago. Uh, you were unable to travel to Java one and you even, uh,

152
00:13:04,800 --> 00:13:10,000
set it up to where you could do it remotely, which was amazing. Uh, and, uh, after some initial

153
00:13:10,000 --> 00:13:14,240
technical issues, you work those out and everything, or they work them out, the local team or whatever,

154
00:13:14,240 --> 00:13:18,880
but you were able to deliver that talk. It was wonderful. I was, uh, more than impressed with,

155
00:13:18,880 --> 00:13:23,280
with what you did just to make sure that you, uh, met attendees where they were literally,

156
00:13:23,280 --> 00:13:26,560
even if you couldn't literally be where the attendees were.

157
00:13:26,560 --> 00:13:29,600
Yeah, it's, it's a bit challenging. That's another one of these challenges as well, because

158
00:13:29,600 --> 00:13:33,040
the reason I couldn't chat, couldn't travel is because I was like eight months pregnant. So

159
00:13:33,600 --> 00:13:34,640
I wasn't going anywhere.

160
00:13:34,640 --> 00:13:39,680
Yeah. No, I really wanted to give that talk at Java one. Um, and one, this is one of the other

161
00:13:39,680 --> 00:13:43,840
things that kind of ties into finding the balance. I don't really know where to find the balance

162
00:13:43,840 --> 00:13:49,840
between. I want to, I want to continue working because I enjoy it. I also want to want and need to

163
00:13:49,840 --> 00:13:55,840
maintain my visibility. Whilst also, you know, like I've had two kids since I joined JetBrains and,

164
00:13:55,840 --> 00:13:59,040
you know, you have other stuff that gets in the way, other family thing gets in the way. There's

165
00:13:59,040 --> 00:14:04,080
other things that you have to take care of as a human being and learning to balance,

166
00:14:04,080 --> 00:14:08,960
well, learning what that balance is, is quite tricky. So the, the instance you're talking about

167
00:14:08,960 --> 00:14:12,640
is, um, when I was pregnant with my first child, when I was pregnant with my second child, I was like,

168
00:14:12,640 --> 00:14:18,080
I'm not doing that. You know, it's nice to do that. It's nice to try and, um, maintain the visibility

169
00:14:18,080 --> 00:14:22,240
to try and reach the audience that you like reaching. But there's sometimes where you're just

170
00:14:22,240 --> 00:14:27,040
like, no, I, I need to, you know, I'm eight and a half months pregnant. I should be chilling out,

171
00:14:27,040 --> 00:14:31,440
relaxing. I'm only taking four months maternity leave and I should just fully enjoy those four

172
00:14:31,440 --> 00:14:36,960
months and be there with my kid and then slowly ease back into it afterwards. So these are some

173
00:14:36,960 --> 00:14:42,640
lessons that we have to learn as well about balance. Well, and I think that makes you better overall,

174
00:14:42,640 --> 00:14:48,160
really, right? I mean, if you take time away to clear your head, to focus on the things in life

175
00:14:48,160 --> 00:14:52,000
that are truly important, it allows you to see everything with a much clearer lens.

176
00:14:52,640 --> 00:14:57,120
I think so. I find that when I'm super, super busy and really, um, productive in terms of

177
00:14:57,120 --> 00:15:01,760
ticking things off, sometimes I'm so busy ticking things off. I'm not stepping back and looking at

178
00:15:01,760 --> 00:15:08,400
the big picture and you could have done like, I don't know, three articles and five, um, screencasts

179
00:15:08,400 --> 00:15:13,120
and 27 tweets. But at the end of it, you're like, well, none of these are really key to the business

180
00:15:13,120 --> 00:15:16,880
or none of these are reaching my customers or none of these are what I feel passionate about.

181
00:15:16,880 --> 00:15:20,720
You do sometimes need to be able to step back and say, look, I need some time to figure out what's,

182
00:15:20,720 --> 00:15:24,960
what's really important, what the big picture is. And not necessarily just work wise. It's like,

183
00:15:24,960 --> 00:15:29,280
if you can connect with yourself as a human being, it makes you, particularly as a developer advocate,

184
00:15:29,280 --> 00:15:33,760
it makes you better at connecting to other people as well. I don't think we should be constantly,

185
00:15:33,760 --> 00:15:38,000
there's a lot of pressure at the moment to stay up to date, stay on top of things and just be all go,

186
00:15:38,000 --> 00:15:43,360
go, go in terms of technology. And I think sometimes it's down to people like us to say,

187
00:15:43,360 --> 00:15:46,800
hold on a second, you know, in this case, it's August, it's summer, you know,

188
00:15:46,800 --> 00:15:49,280
perhaps you should be chilling out, just taking some time to,

189
00:15:50,000 --> 00:15:54,880
to, to decompress and, and not stressing out about everything all the time.

190
00:15:55,600 --> 00:16:00,160
Yeah. Too true. I almost hate to take the conversation in a different direction now,

191
00:16:00,160 --> 00:16:05,840
because as, as always happens, anytime I get a few minutes of your time, I just find so many gold

192
00:16:05,840 --> 00:16:10,960
nuggets in the conversation that I, I hate to see that part of it in, but let's, let's take this in

193
00:16:10,960 --> 00:16:14,960
a different direction and find some gold elsewhere. I guess taking things back to SpringOne, because

194
00:16:14,960 --> 00:16:19,680
obviously this interview is part of the profiles, right? The interviews of women of SpringOne platform,

195
00:16:19,680 --> 00:16:24,480
uh, you haven't presented at SpringOne before, but you're no stranger to the spring community and

196
00:16:24,480 --> 00:16:30,160
topics that are near and dear to our hearts. Uh, you have, uh, had a great talk at spring.io called

197
00:16:30,160 --> 00:16:37,440
is groovy better than Java for testing, which is just, uh, uh, the suspense is killing me. So can you

198
00:16:37,440 --> 00:16:44,000
tell us a little bit more about that? Uh, yes, this is a talk I gave in, in 2015. Uh, that was again,

199
00:16:44,000 --> 00:16:48,640
like I, I distinctly remember because I flew over to Barcelona, which is only an hour from where I live in

200
00:16:48,640 --> 00:16:54,080
Seville. Um, again, quite pregnant with my first child. And, um, I kind of flew in, gave the talk

201
00:16:54,080 --> 00:17:01,120
and flew back the same day. And I was like, no, I'm not doing that again. But it's, I like that talk.

202
00:17:01,120 --> 00:17:06,240
It's, I would like a chance to explore this topic a bit more is groovy better than Java for testing.

203
00:17:06,240 --> 00:17:12,480
Of course it's a clickbait type title because the answer of these things is it depends in the context

204
00:17:12,480 --> 00:17:18,320
in which I came up with the content for that talk, um, groovy, but specifically the spot

205
00:17:18,320 --> 00:17:26,640
framework was a much better way of encouraging the team to think in terms of how to write unit

206
00:17:26,640 --> 00:17:32,000
tests in a sort of given when and then type way, how to clearly separate what you're really testing

207
00:17:32,000 --> 00:17:39,520
versus set up. Um, the, um, groovy allowed us to be much more, um, even though I, when I started

208
00:17:39,520 --> 00:17:43,440
doing this, I was not really a groovy person. I was very thoroughly a Java person. And yet I still

209
00:17:43,440 --> 00:17:48,000
found the groovy tests a bit more readable, um, because it reduces a lot of the noise in terms

210
00:17:48,000 --> 00:17:52,720
of the boilerplate. And this is also in the context of MongoDB and in MongoDB, we do a lot of creating

211
00:17:52,720 --> 00:18:00,320
hash maps and that's quite clunky in Java and much more readable in groovy. So for this particular use

212
00:18:00,320 --> 00:18:07,040
case groovy and specifically spark, um, was a much better, much better set of tools for us to do

213
00:18:07,040 --> 00:18:17,440
testing. Um, since then with J unit five and some of the modern, uh, advances if you like in unit testing,

214
00:18:18,000 --> 00:18:22,320
you could argue there's not as much between them, but it also depends a lot on the team. I've just

215
00:18:22,320 --> 00:18:27,520
found pretty much better for the team that we were working with because, uh, it focused people on how to

216
00:18:27,520 --> 00:18:31,680
write the tests, but in other teams where they already have a discipline in how to write tests,

217
00:18:31,680 --> 00:18:36,720
sometimes Java is much better because Java being statically typed being, you know, I know that you

218
00:18:36,720 --> 00:18:41,920
can compile Ruby, but everyone says that to me. I know, but that's not, it's not the same thing.

219
00:18:41,920 --> 00:18:47,360
Java being statically typed, Java being, um, much more amenable to things like refactoring inside

220
00:18:47,360 --> 00:18:53,280
tools like IntelliJ IDEA. Sometimes it's just better to write stuff in Java from the beginning because

221
00:18:53,280 --> 00:18:57,760
everyone on the team should probably may understand Java, uh, everyone on the team can use something

222
00:18:57,760 --> 00:19:03,280
like IntelliJ IDEA to refactor the things you get, uh, you get really fast failure if you have

223
00:19:03,280 --> 00:19:08,400
compilation problems instead of Groovy where it only tells you when you run it. So, you know,

224
00:19:08,400 --> 00:19:13,600
in the end it depends, but I'm still a big fan of Spock for testing. It's just a really nice framework.

225
00:19:14,960 --> 00:19:19,440
Okay. Well, great answer. I was kind of hoping for the definitive. Yes, absolutely. Or

226
00:19:19,440 --> 00:19:23,920
absolutely not. But yeah, I guess it's like most things, right? We still have to reason through

227
00:19:23,920 --> 00:19:32,000
it in our current circumstances. So I still choose spot first and foremost when I'm trying to write

228
00:19:32,000 --> 00:19:36,320
tests, but every now and again, when I start to, that's usually when I create a new project, but

229
00:19:36,320 --> 00:19:40,400
often when I have to maintain the project, I just find it a bit easier to have stuff written in Java

230
00:19:40,400 --> 00:19:45,840
because it's easier to move code around in Java automatically. And the groovy stuff, because it's

231
00:19:45,840 --> 00:19:51,120
dynamic sometimes just doesn't, it just doesn't refactor or get changed in a way that you want it to.

232
00:19:52,400 --> 00:19:58,320
Yeah. Yeah. Completely understand that. Um, but now of course, you, you know, this has to be

233
00:19:58,320 --> 00:20:04,720
coming, right? Um, what are your thoughts about Kotlin for testing or otherwise anything really?

234
00:20:05,280 --> 00:20:09,600
I made the mistake of, of taking that code base that we've just been talking about where we had

235
00:20:09,600 --> 00:20:13,840
loads of spot tests and trying to turn those into Kotlin tests. This is my, this is the first thing

236
00:20:13,840 --> 00:20:18,960
I tried when I joined JetBrains. Groovy to Kotlin, even though the language kind of looks fairly

237
00:20:18,960 --> 00:20:23,920
similar because there's not so much boilerplates, they're not the same because groovy is at one

238
00:20:23,920 --> 00:20:29,600
end being like super dynamic and like bloaty light and Kotlin on the other end, but it's, it's not just,

239
00:20:29,600 --> 00:20:34,320
um, static types, but it's also really strict in terms of nulls and things like that.

240
00:20:34,320 --> 00:20:38,640
You can't easily turn groovy tests into Kotlin tests. You just get a lot of compilation

241
00:20:38,640 --> 00:20:45,280
problems straight away. So my first trial at using Kotlin for testing was not super encouraging.

242
00:20:45,280 --> 00:20:49,280
I do think if you've come from a Java point of view and you've been writing your tests in Java,

243
00:20:49,280 --> 00:20:54,880
I think that Kotlin can make, can help you write much more concise tests. Uh, again,

244
00:20:54,880 --> 00:20:59,280
can get out of your way in terms of boilerplate, allow you to set stuff up much more easily without

245
00:20:59,280 --> 00:21:04,320
having a lot of the ceremony that people complain about with Java. And of course you get, uh,

246
00:21:04,320 --> 00:21:07,760
uh, the advantages again, you've got strict compilation and stuff. So you get compilation

247
00:21:07,760 --> 00:21:12,080
failures rather than waiting to run the test to find that you've got some sort of weird typo,

248
00:21:12,080 --> 00:21:18,160
which is causing problems. So, um, Kotlin, I think is a good choice for, for a testing language.

249
00:21:18,160 --> 00:21:22,000
I'll be completely honest though, even though I've been working at JetBrains for nearly five years,

250
00:21:22,000 --> 00:21:26,960
I've not written a lot of Kotlin and partly because we already have loads of Kotlin advocates

251
00:21:26,960 --> 00:21:32,560
and we only have two Java advocates. So I definitely still end up doing a lot of Java stuff.

252
00:21:32,560 --> 00:21:36,880
And, uh, so that's kind of the main reason really, but also because I'm just kind of

253
00:21:36,880 --> 00:21:42,880
super used to writing Java stuff. So it's still my first go-to language for, for a lot of things.

254
00:21:43,760 --> 00:21:48,640
Yeah. Makes perfect sense. I'm a big fan of Kotlin, but, uh, yeah, I, I think, uh,

255
00:21:48,640 --> 00:21:53,680
the depth and the breadth that Java brings to the table just due to its longevity as well as its

256
00:21:53,680 --> 00:21:59,520
innovation over the years is, uh, it's compelling. So completely, uh, agree and understand on that.

257
00:22:00,240 --> 00:22:05,200
Well, uh, now we, we've kind of covered some of the past, but that brings us to the present,

258
00:22:05,200 --> 00:22:10,000
right? Uh, this year at SpringOne platform, you're going to be speaking about fully reactive

259
00:22:10,000 --> 00:22:15,760
spring Kotlin and Java effects, uh, playing together. Can you tell us kind of how you came

260
00:22:15,760 --> 00:22:20,080
up with that topic and how it developed and maybe a little bit about where you're going to be heading

261
00:22:20,080 --> 00:22:23,520
with that? Yeah. So a couple of years ago, Josh long asked me to

262
00:22:23,520 --> 00:22:27,760
co-present with him. Um, and that was when I was pregnant with my second child. And so I was like,

263
00:22:27,760 --> 00:22:31,920
oh no, I can't do it right now because there's just too much going on. And then last year when

264
00:22:31,920 --> 00:22:35,520
I was trying to think of topics to present at Java one, which became Oracle code one,

265
00:22:35,520 --> 00:22:39,680
I reached out to Josh and I was like, should we do something together? Let's, let's co-present

266
00:22:39,680 --> 00:22:43,520
something. And because both of us do a lot of live demos, we thought, why don't we do this like

267
00:22:43,520 --> 00:22:50,480
pair programming, pair coding, dual type thing. Um, and so Josh took a look at some of the stuff.

268
00:22:50,480 --> 00:22:53,840
Well, he's, he's, he's aware of what I've been doing before. He's like, why don't we take one of your,

269
00:22:53,840 --> 00:23:00,080
um, things that you've done before, uh, and then spring boot it and, um, and, and we'll split it

270
00:23:00,080 --> 00:23:04,720
into sort of microservices type thing. And then, you know, I'll do the springy stuff and you do the

271
00:23:04,720 --> 00:23:09,760
Java effects stuff, which is similar to what I've been doing in my demos before. So it was kind of a

272
00:23:09,760 --> 00:23:15,760
collaboration between, between me and Josh and, you know, being me and Josh, it's kind of this wild,

273
00:23:15,760 --> 00:23:19,680
like live coding thing, but also let's try and put as many buzzwords as possible. Like

274
00:23:19,680 --> 00:23:24,000
what else could we put in here? It had mongodb in here as well before, but when we actually presented

275
00:23:24,000 --> 00:23:28,240
it at code one, we just didn't have time to do any of the mongodb stuff at all. We were like,

276
00:23:28,240 --> 00:23:32,560
let's just do reactive spring Kotlin Java effects. And that's, that's going to be the end of it.

277
00:23:33,280 --> 00:23:38,960
So, um, so yes, this was like a super intense talk and I spent, well, we spent probably about

278
00:23:38,960 --> 00:23:42,880
two days, like practicing it and coming up, bringing it together and stuff in San Francisco

279
00:23:42,880 --> 00:23:47,280
last year. Sadly, I guess it actually wasn't recorded, but it's good because it gives us

280
00:23:47,280 --> 00:23:52,080
an opportunity to give it again. But at SpringOne, so I said to Josh, do you want to co-present

281
00:23:52,080 --> 00:23:55,520
it with me? He's like, no, no, you can, you take this. You do it on your own. I'm good. Presumably

282
00:23:55,520 --> 00:24:01,600
he's doing like other stuff. And, um, and so, yeah, so I'm going to try and take this super ambitious

283
00:24:01,600 --> 00:24:06,560
live coding thing that we did where I only have to do half of it. And now I have to also do Josh's

284
00:24:06,560 --> 00:24:11,920
half of it as well, which, and Josh was doing the Kotlin stuff. So now I have to learn Kotlin way

285
00:24:11,920 --> 00:24:17,040
better than I know it at the moment. Um, so yeah, that's not challenging at all.

286
00:24:19,200 --> 00:24:24,800
Well, maybe for lesser mortals, but I, I know this is going to be an amazing talk. And, uh, I'm

287
00:24:24,800 --> 00:24:28,800
sure I speak for Josh in, in saying that it'll only be better, uh, because you're, you're kind

288
00:24:28,800 --> 00:24:34,000
of bringing it end to end, uh, which is, is quite awesome. I'm, as you may remember,

289
00:24:34,000 --> 00:24:37,440
I've written a couple or coauthored a couple of books, not written by myself, but coauthored

290
00:24:37,440 --> 00:24:42,560
a couple of books on Java FX. I'm a big fan of Kotlin. I'm a huge fan of spring shock. Uh,

291
00:24:42,560 --> 00:24:47,680
and I'm, I just can't wait to see this talk. So, uh, if any of you out there are not already

292
00:24:47,680 --> 00:24:53,200
booked to go to, um, SpringOne platform, you should probably look at this as the tipping

293
00:24:53,200 --> 00:24:57,760
point and go ahead and get your, your tickets and make plans because this talk by itself,

294
00:24:57,760 --> 00:25:04,160
I think is going to be worth the entire price of admission. So, um, yeah, just, uh, yeah,

295
00:25:04,160 --> 00:25:08,960
no pressure, but, but I, I wouldn't even say that if I didn't fully believe it, I look at the title

296
00:25:08,960 --> 00:25:15,280
and I'm already in. So, okay. So I guess kind of bringing this to a close as much as I love this

297
00:25:15,280 --> 00:25:19,360
conversation, if we could just kind of wrap up with what are you looking forward to a SpringOne

298
00:25:19,360 --> 00:25:24,400
platform other than your talk? I know you're excited about that. Uh, maybe, you know, looking at it,

299
00:25:24,400 --> 00:25:28,720
going, how am I going to fit all this in, you know, an hour, but what, uh, anything in particular

300
00:25:28,720 --> 00:25:32,720
you're looking forward to there? I'm just looking forward to being there. I can't believe I haven't

301
00:25:32,720 --> 00:25:36,240
been before. I mean, every year I've thought about going to SpringOne and every year, someone from

302
00:25:36,240 --> 00:25:39,920
Pivotal has said, you know, you should come. And I've been like, oh, I'm already, I'm already booked

303
00:25:39,920 --> 00:25:44,560
up. So this year I made the decision very early on, I think before last Christmas, that this is

304
00:25:44,560 --> 00:25:49,120
something I wanted to do this year. I want to be there. I want to, I want to hang out with like the

305
00:25:49,120 --> 00:25:54,000
spring community because it's a community that I don't always necessarily hang out with. I've done

306
00:25:54,000 --> 00:25:58,640
spring casts for spring support and intelligent idea. And I speak to people over Twitter and stuff,

307
00:25:58,640 --> 00:26:02,320
but it's, it's a slightly different community from the one that I usually see at conferences.

308
00:26:02,320 --> 00:26:06,480
So I'm just really looking forward to not only meeting the speakers and the other, like, you know,

309
00:26:06,480 --> 00:26:11,280
key people at the conference, but mostly the attendees and getting to hear like what they're doing,

310
00:26:11,280 --> 00:26:15,280
what they're working on, what their pain points are and you know what they're excited about.

311
00:26:15,280 --> 00:26:20,160
Well, I think you've already actually covered my next question really well, but in case you

312
00:26:20,160 --> 00:26:24,960
have anything else to add, uh, what you might say to someone considering coming to SpringOne

313
00:26:24,960 --> 00:26:30,720
platform, why should they attend? I think for me conferences, it's all about the hallway track.

314
00:26:30,720 --> 00:26:35,760
Um, it's obviously going to talks is really cool and there's some great stuff and the talks will get

315
00:26:35,760 --> 00:26:40,000
you super inspired. This is the thing that got me about first conference I went to. I went to a couple

316
00:26:40,000 --> 00:26:44,000
of talks and was like, my goodness, I really want to be working this way. I want to be using these tools.

317
00:26:44,000 --> 00:26:48,880
I want to be working with a company that does these sorts of things. But the, the more conferences that

318
00:26:48,880 --> 00:26:53,760
go to, that I go to, the more value I get out of meeting people, talking to people, making those

319
00:26:53,760 --> 00:26:59,440
connections, networking, because the videos, you can watch them online often enough. And that's great.

320
00:26:59,440 --> 00:27:03,520
And if you make time to do it, but what you really get out of coming to the conference is actually

321
00:27:03,520 --> 00:27:08,480
meeting people, asking questions of the, of the actual presenters. Um, but also meeting people

322
00:27:08,480 --> 00:27:13,040
like you who are working on similar sorts of things to you. And it really help you, um,

323
00:27:13,840 --> 00:27:17,600
just become inspired and get better at your, at your work.

324
00:27:19,200 --> 00:27:23,920
Well, that I think sums up yet another thing that you really didn't touch on specifically,

325
00:27:23,920 --> 00:27:28,240
but I'll point it out. Uh, if you come to SpringOne platform, you not only get to hear

326
00:27:28,240 --> 00:27:34,080
and see Trisha G speak, you actually will get a chance to chat with and meet Trisha. So if you,

327
00:27:34,080 --> 00:27:38,800
again, if you haven't made plans plan to be there, but in the interim, uh, how can folks,

328
00:27:38,800 --> 00:27:43,760
uh, follow you, get in touch with you? I, this would be a good time to maybe share your Twitter.

329
00:27:43,760 --> 00:27:52,320
Uh, is Trisha underscore G T R I S H A underscore G E E. Um, so that's where I, I've been a bit

330
00:27:52,320 --> 00:27:56,640
quiet cause it's been summertime, but that's where I'm usually posting links to stuff from my personal

331
00:27:56,640 --> 00:28:02,320
blog to the IntelliJ blog. Um, and what else? And I guess sometimes some code on GitHub and stuff,

332
00:28:02,320 --> 00:28:05,280
but yeah, Twitter is probably the best place to find out what I'm up to.

333
00:28:06,000 --> 00:28:11,520
Well, with that, we will wrap up the interview and thanks everyone for listening in. Thank you very

334
00:28:11,520 --> 00:28:15,680
much, Trisha, for, for carving out some time to speak with us and we'll look forward to seeing

335
00:28:15,680 --> 00:28:20,880
you at SpringOne platform. Thanks very much for having me. Well, I hope you enjoyed that interview.

336
00:28:21,200 --> 00:28:26,800
I sure did. Hey, and as a bonus for listening this far, if you want to register for SpringOne platform,

337
00:28:27,280 --> 00:28:32,960
the wonderful conference we have coming up October 7th to 10th in my hometown, Austin, Texas,

338
00:28:32,960 --> 00:28:40,480
when you go to SpringOne platform.io to register, you can use the code S one P 200 underscore M heckler.

339
00:28:40,480 --> 00:28:48,240
That's M H E C K L E R. That's Mark's last name. You can find the discount code. Uh, if you go to

340
00:28:48,240 --> 00:28:55,280
pivotal dot IO slash podcast as well, and that'll get you $200 off the registration, uh, fee price,

341
00:28:56,000 --> 00:29:00,960
winning admission, however you want to think about it. Well, uh, we've got a several of these coming

342
00:29:00,960 --> 00:29:05,360
out. So if you enjoyed this one, you should check out the other ones and, uh, otherwise tune into the

343
00:29:05,360 --> 00:29:09,520
regular Pivotal Conversations each week or so, and we'll see you next time. Bye. Bye.
