Soft Skills Engineering - Episode 181: Blocked by back-end and tired of coding
Episode Date: October 28, 2019In this episode, Dave and Jamison answer these questions: I recently took a job at a start-up as the only front-end developer. The distinction of front-end and back-end is new to me as all of... my previous experience has been full stack development. Most of my work can only be started once a back end developer has done their part. There is only one back end developer who just so happens to be one of the co-founders of the company. Because he can’t exclusively dedicate his time to back-end work due to his other roles with the company, I am left sitting at my desk writing to you guys trying to figure out what to do with all this free time I suddenly have. I’d like to stay busy and not just look busy. I’d appreciate any advice to help get me busy again! Hey Dave and Jamison, love the show. Quit my job twice since I started listening so I’m a super fan. Long story short, I think I’m bored with coding(?). I just see everything as moving JSON around. Putting it in databases or putting it in queues or on a screen. I’ve done mobile, I’ve done backend, I’ve done front end, and it all just starts to look the same after a while. As an industry I feel we’ve solved the hard problems and now its degraded to this. What do I do next? Do I find a software product where the JSON moving around excites me (for example, a social good or cutting edge product) Do I look at something very different like embedded dev or games dev? (No JSON there!) Or do I look to tech leadership or people leadership? These options appeal but I’m just five years into my career and 26 years old and of course no one takes me seriously, naturally. However, I have been very deliberate and been very intense about my career, but now I’m feeling a bit done with coding. Team velocity problems interest me more than JSON APIs. People interests me more than code. I’d love to hear any of your thoughts on this! Thanks :D Keep up the great work.
Transcript
Discussion (0)
it takes more than your proof of concept going to production against all your previous statements
saying not to do that to be a great engineer this is episode 181 of the soft skills engineering
podcast i'm your host jamison dance i'm your host dave smith soft skills engineering is a weekly
advice show about all the non-technical parts of the technical field of software development
shout out to bruce from our slack channel who we crowdsource this intro to yeah i'm pretty sure
i've done this to another team too though like oh cool cool little test demo hackathon service you
you got there that you've deployed to a vm why don't i just bloop oh okay now my production
app depends on it thanks please remember to restart it periodically i'll make sure to page
you at home yeah what's your home phone number again i just want to make sure this stays up
i i can just hook up a little twilio integration
when our calls fail it'll just the error messages will just text you
that's right and thanks for the tier one support appreciate you
don't worry we'll thank you in the source code yeah yeah you'll be credited it'll be great
shout out to to alice thank you so much to her wonderful support yeah
and giving up her home life yeah to restart this service that she built in two days
five years ago
all right all right i think we have some patrons talk about our wonderful patrons
yes i would like to do that i'd like to thank those that are contributing on patreon if you'd
like to support the show on patreon go to softskills.audio click support us on patreon
The people who are doing that now are Matthew Voidovich, The Agile Ventures Charity, Bartek Tatkowski, Ted Nugent, Crash Bandicoot, Zach Granin, Maple Syrup, Louis Santos, Krishka Kanopka, Piska Jopka, Nick Kantar, Vinlok, Taras Harouk, Sean, Sunny Tai, Brittany Ellick, Sonic the Hedgehog, Ivor Robotnik, Florian Tadzl, Murray Rosso, Chris Hogan, Dimitri Janssen, and Stanley Tactical Radio.
Thank you so much.
We have an update from a listener from a previous question.
so in episode 168 we talked about an engineer who was working from home and was worried their
work from home privileges would be revoked because of some other developers so here it is i asked the
work from home jeopardy question wanted to give you all an update i was worried about an engineer
who was less communicative when working remotely the leader informed me that this pattern of
inconsistent work existed before i started and i continued to see it as we worked together
this engineer's tasks would have unknown status for weeks and then either a task would get done
all of a sudden or the engineer would reveal that an important task had not been started
this was immensely frustrating for the rest of the team and the engineer was eventually let go
and i retained my work from home days everything turned out okay yay with several a's yes yeah
great great for you right this was the question where we had two terms that i thought were really
funny we had the leader capital l leader remember this one yeah and it persisted in in the update
that's right leader is still capitalized that's right and then we also had the term ng which
we don't use that enough i think yeah that should that should become part of the standard lexicon i
think yeah for sure all right well congrats to you and sorry things didn't work out for the other
engineer yeah should we dive into our questions let's do it i'll read the first one this comes
from a listener named Max, who says, I recently took a job at a startup as the only front-end
developer. The distinction of front-end and back-end is new to me, as all of my previous
experience has been full-stack development. Most of my work can only be started once a back-end
developer has done their part. There is only one back-end developer who just so happens to be one
of the co-founders of the company. Because he can't exclusively dedicate his time to back-end
work, though, due to his other roles within the company, I am left sitting at my desk writing to
you trying to figure out what to do with all this free time i suddenly have i love it i'd like to
stay busy and not just look busy i'd appreciate any advice to help me get busy again nice
i expect many more questions max you got some free time here let's burn it max is just furiously
typing all the time what is he doing what's up with max and the google forms
his ide theme sure looks a lot like google forms
what a situation oh yeah most of my work can only be started once a backend developer has
done their part which means most of my work can only be started once the co-founder has done their
part yes which is a weird situation to be in yeah so i've been on teams with the strict divide
between back and in front and before and even if there are full-time dedicated dedicated people
you still have this time where people are twiddling their thumbs just kind of
blocked or they have to pick up some other task that is like less important but not blocked and
then there's more context switching and i like teams where people specialize but are also willing
to unblock stuff by kind of jumping into help so this stinks that's that's that's the summary
this stinks and you're in the a worse version of it because it's this person who is probably hard
to bug and also incredibly busy right there's this trope in management or this idea that engineering
managers shouldn't be in the critical path of feature work i think we've talked about this
before and i think this probably applies to depends on the state of your company but it could
apply to your co-founder too that yeah co-founding a company is lots of things and at some point what
it is not is cranking out code critical path back-end code is probably not yeah that that
other people's work depends on right yeah yeah so this is tough so i actually have a legitimate
technical answer to this question but i'm trying to decide if on moral grounds i shouldn't give it
because this is a soft skills show okay give it and and i'll give you a an indulgence
you can pay me to make up for saying technical things on this show
nice i actually i want to save it i'll give some stupid ideas first how about that okay
sure look so i mean okay here's stupid idea number one obviously the problem here is you
have a back end so clearly the answer is serverless ah yes exactly no back end driven
development and then your back end just exists oh oh just set up a giant firebase database and
just shove everything in there it's like globally readable you know and just all the logic business
logic everything's in the front end and just forget about the back end boom unblocked
problem solved and good news it's really easy to build integrations against it because everyone
can just read all the data yeah and write all the data right super easy you'll never get a
permissions error you know yeah think of a world without authentication
think of all the overhead spent with authentication that you can just bypass
so to continue the theme of technical stuff you can do auth in firebase but
i mean why would you yeah more work right it's gonna get in the way of the free flow of information
yep okay i like them okay any any more good ideas well the other one is kind of a hybrid
approach to that where you could build your own back end that's like a middleware call it like a
middle end i don't know call it call it your half stack point yeah basically stand up your own
database your own little back end and just start building your back end apis there you've got the
experience you know just set it up and then you know when you really occasionally you might need
to be blocked on this developer but for everything else you can just build your own and you just
call it a front end yeah that's right that runs that happens to run in a data center
call it like a cache or something but really it's on persistent storage yeah call it your cdn so
when i took this job i joined a team of people who are like standing up hardware and data centers and
working with work like building routing software and stuff so their definition of front end was
very different from mine and they kept calling like the back-end api that i helped build the
front end because yeah it's it's not like running on the network card right right okay yeah you can
call it front end you call it whatever you want yeah perfect okay got it all your good advice
is given what else would they do well i do have one serious soft skills advice should i give that
one now oh yeah why why do i keep asking your permission like i don't know what yeah what would
i say no i don't know i guess i'm just scared of you okay i mean so the question i have is does
your back-end developer accept pull requests i mean could you just make the changes yeah yeah i
mean i i can see the distinction of being hired as a front-end developer and being told kind of
that's your area of expertise but i feel like the company would be happy if you were blocked less
right i mean unless this co-founder just has a gigantic blind spot or huge ego or something and
it's like no one could ever be blocked by me because i'm i'm the champion code writer my code
is it writes while i do these like fundraising rounds it's how good it is i feel like you have
you have a case where it benefits the company you can pitch it as a benefit to them hey like i know
back-end stuff i'm blocked i'll just do this and why would they say no to that ever yeah like you
can review it maybe maybe you'll have time you don't have time to write the code but maybe they
have time to review the code yeah i mean maybe it's a really tricky domain and they're worried
about you messing it up or it's not oftentimes code bases that one person writes don't have a
lot of affordances for other people working on them so there's like a complicated build process
or it there's just a lot of stuff that doesn't matter when only one person works on it because
that one person knows how to do all the things but i can't think of an argument where you sitting
literally doing nothing while the co-founder does co-founder things is better for the company
than you trying to progress yeah for sure i have seen this back-end front-end developer hierarchy
sometimes where back-end developers get all uppity and think like our stuff is hard and important and
your stuff is easy and dumb yeah and so maybe there's some amount of maybe there's some some
lack of trust there of like you couldn't possibly handle the complexity of writing to this sql
database that's so true oh if only i hadn't been guilty of this massive overhead
just the mind-boggling amount of state you have to keep in your brain to click deploy on this
gooey whatever i don't know but i think it's worth bringing up and saying explicitly hey i i can do
this and i'm blocked and it might also be worth if it's a small startup if which i assume it is
because your co-founder is still in the critical path right then there's probably a biased action
type of thing going on where if you just do it that will probably work out better than asking
permission yeah i mean you you should just say hey i'm gonna do this and then do it there's this idea
of if anyone objects you say so in this case you would say hey i'm blocked a lot on back-end
changes i'm planning to make those back-end changes myself if anyone objects please let me
know and then just go ahead and and do it and that gives a chance for people to step in if there's
really something horrible but if not you can just keep going and it could also be that there's all
kinds of issues like oh i have to get all these permissions to even run a local copy of the back
end and this person has to grant those permissions it could be painful that way yeah if you're
blocked anyway though making like if it's hard to run locally or all that stuff i mean that's stuff
you can fix with your time and if you're blocked i mean once you've written us more questions then
That seems like a good place to invest your time.
Great.
Just give us like a daily journal of, you know, what you're thinking about.
I haven't gotten to my actual technical advice, but when I've been in this situation before,
what I've found works pretty well is if you will, as the front end person, create mock
API content and say, here's what the URLs I'm expecting.
Here's the payloads that I'm expecting and actually just create it and then have like
a little mock service that you can run locally that returns this data so you can start developing
against it and this has the side effect or sorry it has the main effect of unblocking you so you
can start building the ui but it has the side effect of creating a concrete thing that you can
review with the back-end folks and come to an agreement on what the api contract should be
and it's much more concrete than just a whiteboard session or even a document because it's actually a
working prototype that you can say look this is what i'm expecting it to do and then when the
backend doesn't do that, you can say, look, this is what we agreed to. You got to, you got to fix
it. So little mock API service that you can run locally goes a long way to help you unblock and
just fill it with fake data and get going. Look at you, Mr. Fancy pants with your service.
I just like type JSON into my browser. My mock API services is literally like JSON embedded in
that's right page. Yeah. I mean, there's, there's a range of fanciness you could do here. That's
the fancier end but you could also literally just like make one record in yeah in your code just
copy paste some json into a javascript file or something right yeah yeah that's kind of i mean
that'll unblock you but there will be some integration point at some time yeah like
eventually you can't ship the product until it's done but you can at least get started
look it works for this one record right yeah it might just be kicking the can down the road though
where at some point the back end work has to get done that's right i mean that's exactly what it's
doing but kicking the can down the road is beneficial because the distance that you kick
the can it closes the total uh time or reduces the total time to delivery so the further you
can kick that can down the road the better just nfl punt that thing 70 yards down the road
yep yeah that makes sense and i could see this um i mean maybe the the co-founder really is a
code champion code sorcerer code sorceress and and a small amount of their dedicated time will
help and it's just the calendar time of getting their dedicated time in that case that makes
sense as as doing a lot to reduce the total time it'd be hard for interactivity i mean you'd have
to do some thing that takes in data but yep i believe in you you can do that yeah why not you
you're a full stack developer yeah you can write to your json array in the browser yeah exactly
as well as read from it yep there you go have we solved the problem have we answered the question
i think so good luck this it sucks to be bored that's why we expect more questions
all right i'll read our next question this is from an anonymous listener hey dave and jameson
love the show i've quit my job twice since i started listening so i'm a super fan long story
short i think i'm bored with coding i just see everything as moving json around putting it in
a database or putting it in queues or on a screen i've done mobile i've done back end i've done
front end and it all just starts to look the same after a while. As an industry, I feel we've solved
the hard problems and now it's degraded to this. What do I do next? Do I find a software product
where the JSON moving around excites me? For example, a social good or cutting edge product.
Do I look at something very different like embedded dev or game dev? No JSON there. Or do I
look at tech leadership or people leadership? These options appeal, but I'm just five years
into my career and 26 years old and of course no one takes me seriously. However, I have been very
deliberate and have been very intense about my career but now i'm feeling a bit done with coding
team velocity problems interest me more than json apis people interest me more than code
i'd love to hear your thoughts on this thanks and keep up the great work all right huh this is this
is a great question yeah i gotta pull up my linkedin for some research one second i'll i'll
let you do the wisdom for a little bit okay what are you researching it'll it'll all come together
okay i'm just gonna update it really quick are you just gonna wait while i do my research yes
all right so the question asker is 26 i was 27 when i felt the exact same way i was like my work
is all the same it's all boring i'm just moving bytes around it's it's there's no exciting
technical problems it's just kind of pulling tickets off a queue to smush some data around
and i wasn't interested in tech anymore and i wasn't gonna quit tech because i have no other
marketable skills but i was just like just bored whereas before i had been very engaged right and
what i actually was was burnt out so i think this could be an explanation for why you're feeling
what you're feeling that especially you've been very intense about your career maybe you've been
working a lot of hours, focusing very intensely on learning and getting better. And it sounds like
there could be some burnout here, which isn't like a permanent change in you, but kind of a temporary
state which might resolve itself in time. So that doesn't help in the short term, but it might
remove this kind of existential fear of what if I just don't like this kind of programming anymore
at all, or programming in general anymore. For me at least, I felt those feelings and then they
went away once i kind of took some time to recover and had a change of scenery and what did that
change of scenery look like oh i quit my job was this when you quit my job and didn't have a new
job lined up yeah and then i got a different job and that helped for a while but there was still
some kind of underlying stuff and then i quit my job again and then went into consulting for a
while i do remember this feeling very explicitly of i've been focusing really hard on learning and
growing and working really really diligently and i just don't care anymore and i used to care a lot
and caring is one of my superpowers like caring a lot is how i make up for not being smart
so if i don't care what do i got and i think if i were more mature i would have recognized that
and figured out how to deal with it without needing to quit my job i i think it i mean it
worked out okay but that's not always the best solution but that's that was my answer there was
to pull the ripcord all right hit the eject button so you went to the extreme immediately
yeah i mean even more extreme would have been to just leave the industry and become a lumberjack
i have soft weak hands from years of typing at a keyboard
they would have mocked me mercilessly oh i have repetitive stress industry from swinging this
chainsaw all day like these big bearded guys with giant bellies laughing at me pulling their
suspenders yep everyone is paul bunyan that's my imagine that's my mental model of the lumberjack
industry nice plaid flannel shirts suspenders yeah big boots big jack boots they're like 40
feet tall isn't that how tall he was blue ox they give up on their chainsaws and just chop stuff
down with axes for fun yep chainsaws are too easy yeah okay have like jovial content
all right back to software hit me i had a similar experience to the question asker but it wasn't due
to burnout um at the time i had been working in the industry for a couple of years but i also had
a few websites that i maintained on the side and in my day job i was not doing web stuff and after
a couple of websites i realized like these are really boring it was like oh show a list of things
show a list of things uh have a form for creating a new thing an edit button for each existing thing
and a delete button on each thing and it was at this time that i accidentally coined the acronym
crud having not heard that acronym before you know create read update delete well i'm curious what
is that what your acronym was yeah no it was like i came up with this on accident and then later i
found out that has that's been in use for years before and i was like oh man these websites are
just crud they're just boring yeah and you know you start to notice these patterns right like
after the second or third time you've done it you're like wait a minute i'm spending a lot of
time to just do this crud thing like what a waste it was about this time that ruby on rails came out
so which basically like made all those all those sit-ups go away yeah but yeah like i had i had a
similar experience and it was because i was repeating myself like basically doing the same
thing as what this question asker is doing of course we didn't have json at the time this was
like 2002 but we had you know just basic crud and for me i don't think i was burned out but for me
what i found was that at work i got super engaged it was super exciting because i was working on
like signal processing equipment and dealing with weird network protocols and all kinds of like
threading race conditions and very challenging like high throughput systems and it was really
really fun and engaging and i just basically never got tired of it at work but it was always new like
there was always something new coming out it was never just shuffling json around and i never built
a crud app really well i did build one i take that back but only one at this job okay so long
story short i think burnout is one possible explanation but it could also just be you're
tired of repeating yourself and you do need to switch industries or go into a totally new field
within software so i think the question asker mentions a product that's exciting that's
definitely one avenue where you can find a lot of meaning in doing the same kind of work if the
payoff is like and i and this thing exists in the world that i really want to exist there's maybe
i mean maybe it's time to to do the rite of passage and build your own framework that makes
it easy to pass json around and now you have framework problems instead of json problems
there's also so these things are all pretty straightforward when you don't have scaling
problems but everything gets hard at scale and i think that stuff is pretty fun so you could go
you could move json around at scale exactly yeah and then and then you get to do a lot of fun stuff
to make it fast and reliable and cheap and perfect and all the things that we get regularly as
developers all all the hallmarks of a project i've worked on perfect fast cheap clean code
well documented clean code yeah aligned curly braces yep consistently passing unit tests
yeah yeah but just just like products without a ton of traction or with a small user base that
just kind of move along i i've i've also felt that boredom a little bit and it either has to
be connected with a purpose that i feel happy with that oh this json here is going to do this
thing that i care about a lot or it has to get harder and those are both exciting too yeah i
feel the same way in fact my last company we were working on a product that i really liked i felt
like it did a lot of good it was very useful and our customers loved it and the fact that we were
just moving json around and you know putting json in a database taking it out putting it in a browser
didn't bother me one bit because i was way more focused on the results on the outcome of what the
product was doing more so than the specific technology of moving the json around that
helped a lot now it wasn't a social good it wasn't like i was you know serving humanity necessarily
but i believe in the product i mean it was socially good in that it paid you money and with
that money you would be happy and a happier dave makes the world better place a happier dave is a
social good yeah exactly so i think now that we have that caveat okay should we talk about the
last thing that that the question asker asked here should should they move into people management
some kind of leadership role so you're 26 how do you do this can you do this you can if you work
at a company where 26 is the wise elder experience developer five years five years of experience holy
cow tell us what to do please a wise one yep i mean that happened to you more or less right it
it did yep everyone was the same age except for one old curmudgeonly 31 year old okay i'm 32 now
which is it's so bizarre to think that this person was like the wise elder developer and and they
wanted nothing to do with leadership so yeah it was like by default you could i i think it's fine
to look to tech leadership or people leadership i think people could take you seriously if you
start exploring that option i think it's not too early if that's something you're really interested
in you mentioned you're interested in team velocity um i i think you can still poke at that
stuff you might not be able to get hired as a manager but you might i don't know so are you
saying like tech lead might be a stepping stone or might be something to get you on board that's
what i should have said oh yes okay sorry maybe it it depends on the industry and products and
team that you're working on probably i could see places where it would be hard to do that
effectively with with your age and experience level but i could see places where it'd work
out okay too and maybe if there's other people on the team to help out that could work but also
being a people manager doesn't necessarily have to you don't have to be the oldest and smartest
and best at everything to do it it's just a thing that you focus on instead of other things that's
right. And sometimes you can be a people manager just because you're the only one willing to set
aside the code and do the things that no one else wants to do. And I've seen a lot of companies like
that. So I would not let your age be a barrier. However, I would also not expect that you can
just quit your job and then go get a engineering management job as your next job. Probably it
would be safer and a more reliable course to try to work your way into leadership in your current
company yeah i think it's probably worth explaining with your manager just saying hey i'm interested
in this is there anything i can do to kind of poke at it or try it out yeah not not like a big role
change or anything but just help out with some stuff right yeah i would do that but i i would
probably say i mean you kind of have a fork in the road here you can go jump into management and
which by the way is not a one-way door you can go in and come back out not a problem or you can just
explore new technologies new like domains within the software industry and there are a lot of them
i mean one of the greatest things about being a software engineer is that you can go into so many
different domains i mean virtually every domain has some kind of software need nowadays whether
it's medical or research or like i did signal you know i've done signal processing i've done hr
software and now i'm working on a voice assistant for crying out loud so it's like these things have
nothing to do with each other and i get to go and just learn about these domains and so it could
very well be that you want to go explore that before you jump into the management role i don't
know i feel like there's a lot of good options for you but i don't think being bored with moving
json around is i don't think that's a bad sign necessarily long careers in software usually
involve doing a lot of way different things like you said dave so and if you really want to engage
your mental faculties you could just switch from json to xml i was waiting for an xml joke to pop
up the problem is you're moving json around what if you were moving protocol buffers around yes
perfect whole new world i mean you could just move json around in hard mode and say like we need
statically typed functional purity for our services that move json around and write it in haskell
yeah that's kind of like the framework problem and that you're not moving json around you're like
solving meta problems to help you move json around that's right so that other people can
move json around with a few fewer keystrokes yeah well not in this case no one will be able to unless
they all learn haskell that's right oh man haskell is like my frenemy language oh really yeah i talk
about it a lot and it has some cool ideas and i'll learn more about it and i've learned some stuff
about it but also i like to make fun of it yeah who doesn't it's fun well have we answered the
question yeah i think so i i think first of all don't get i would say don't get discouraged um
this is a very natural course, especially after four or five years, you kind of have to figure
out, I don't know, you kind of have to figure this out, I think, and work through it. But I
think it's a pretty common issue that developers face after four or five years. The other thing
that I might suggest, just one last thing, is I have found that it helps to have kind of ups and
downs, where you'll have times where you're aggressively coding and just moving JSON around
like crazy, maybe for a few months at a time. Just moving the JSON so fast. Yeah. It's flying
all around and then and then maybe have a couple of months where you're focusing more on like
architecture or operational issues or infrastructure or something else kind of varying your workload so
that it's you're kind of reaching at a different part of your menu and that was a weird metaphor
but you know it's like you don't want to eat the same food every day and and i think you don't want
to work with the same technology every day and at least for me i like to vary it up and so maybe
that could be like the lowest barrier way to get out of this funk where you can just explore
different parts of your already existing software system at your current job yeah yeah maybe you
want to make your builds go fast that's always a thing you can do there's there's always like
developer uh workflow improvements to be done of course then you'll find out that your builds are
actually just moving json manifest files yeah but it's what makes the world go round it is so true
it is so true as my heart beats it is pumping json around my veins
sending little messages throughout my body saying hey keep existing yep little json payloads
yep lots all these it's kind of a hybrid mic microservices monolith architecture
little messages that say keep alive yep
okay have we answered the question i think so good luck we've done our duty
have fun yeah and if people want their own questions answered they can go to soft skills
dot audio click ask a question if you enjoy the show please share on twitter probably other ways
too but i don't know i don't look at them as much i guess they don't have their hooks as deeply in
yeah and we will catch you next week
I'll see you next time.
