Starting a new job monday as a senior software engineer. Looking for some advice.
Posted by Friendly-Nobody8023@reddit | ExperiencedDevs | View on Reddit | 23 comments
I have about 7.5 years as a software engineer. Bachelors and Masters in CS as well. Masters was from a well known US university.
Some of the mistakes I feel I made in my career so far, in my opinion are:
1. Focusing too much on tech. Focusing too much on Computer Science. Even when the situation calls for a simple solution, I felt I make things overly complicated.
2. Getting straight to programming instead of trying to see if similar code has been written for the similar problem else where. I always felt that I need to write brand new code every time. This slows me down immensely. And also a lot of times I end up producing code that doesn't incorporate best practices. I am talking about situations like I was told to create a new service, I should probably check how other teams are building services. And use their directory structure or whatever. Copy their cookie cutter template. Use their code generator etc.
3. Not gaining enough understanding of the underlying problem domain. Since I come from a CS background, I always found CS related problems interesting. I never had the habit of making an effort to understand the problems the customers face.
4. Staying silent in meetings. Other than cracking weird jokes, I tend to remain silent in most of the architectural review meetings. Or I bring in information from one of the several newsletters or Ycombinator posts that I read. I remember sitting in a meeting and saying "BBC uses server side rendering for their website, so we should consider it too". And we were building an internal website that gets maybe 200 clicks in a day at most. And it is used by 20 analysts.
5. Complete lack of social skills. Extreme social anxiety. I have Eric Andre type of humor. I just feel I am a weird person. I don't know what the hell to do about it.
I have never been promoted in any of my roles so far. I don't struggle in Tech interviews. Landing this Senior software engineer position was almost like a walk in the park for me. But up until now I was a mid-level developer. For the first time in my life I will be working as a senior software engineer.
Once I start working, that is when I start facing problems I feel. Working with fellow developers. Getting the information I need from them. Troubleshooting production issues in Software Systems that I have barely worked on.
The two areas I feel I struggle with the most in my opinion are:
1. Understanding the problem domain. Understanding what my team owns. What the systems in my team are supposed to do. Which other teams my team interacts with. Most of the time this information is not readily available to me. I have to talk to people to get this information.
2. People skills. Getting information from people that I need to do my job. Most of the places where I worked for so far had a stack ranking culture, so most of my co-workers are very less inclined to help me. I felt unsupported and alone for almost all of the 7.5 years I have worked so far.
What can I do to get better in these two areas.
casualPlayerThink@reddit
You should, but you can always ask the PM, Support, or whoever wrote the ticket to explain to you.
You can help with that with a very simple trick. One, read the Atomic Habits book. Then start making a very simple to-do list or a checklist, analytical for yourself, where you write down very basic stuff. Just for a very little time, to shape your own reflexes and condition yourself to be more analytics before you write a single line of code. Also, use a rubber duck, and explain the problem as well as the solution that you figured out for it. If you can't explain all of it, then sit back, relax, and think a little more. (similar to hallway reviews or like speaking to small kids. If you can't explain, then you ain't understand it or ain't done with planning)
The first part can be learned; there are books, specialists, and practices for that. In general: just don't be weirdo, creep, or a##hat. As for the anxiety, consider seeking some professional help. Your mental health is important, worth taking care of yourself (not just going to the gym, but taking care in your head too).
Sometimes, you have to spend years before realizing what eats your life, and why you have anxiety. Sometimes, you waste a decade growing up, sometimes years go by while you carve out some toxic place/behavior/person from your life. Sometimes, you just have to meet someone who resonates with you and eases your problems. Sometimes, you just need like one million USD.
Rather, your organization should have some guidelines or requirements that should be followed, not necessarily another group. Also, by having the opportunity to do whatever you want, then use the time and resources properly and not be afraid of learning something new. It is a golden opportunity that is super rare.
UncleSkippy@reddit
Look at what has been done in the past. Seeing how the product and/or team has evolved - what they've tried in the past - helps build context around where they are now. Comb through any documentation (IF it exists lol), completed tickets, release notes, etc. to see not just how they work but also the results of past decisions.
You're a senior. Offer to help but don't be over-bearing. Read up on how to do supportive code reviews. Guide but don't dictate. That is how you build a reputation as a good senior and a good co-worker.
Relative skill assessments are garbage. Just wanted to say that.
Bricktop72@reddit
We have relative performance assessments. Then we started a transformation initiative, put all the high performance people on that program and ranked them against each other. The rule is 15% in a ranking group must get PIPed. People that got excellent with stock bonuses every year for a decade suddenly got Needs significant Improvement and put on PIPs. Moral cratered.
Apparently our personal manager went in a room and cried when she heard they announced the same ranking process and groups again this year.
UncleSkippy@reddit
Too many managers think they can force/threaten excellence out of people. That's not leadership in any meaning of the word. Ugh.
Bricktop72@reddit
The crazy thing is we are all high performing people. Anyone on the team that I feel is a scrub is always an outside contractor with an MSP. With the ranked performance, you can't just hire someone as skilled as the guy who got pipped you have to get someone even better. Which is incredibly difficult to do.
UncleSkippy@reddit
That's exactly why relative skill/performance assessments are terrible. Sorry you have to deal with that. :-(
That's what happens when someone gets the not-so-bright idea to try to apply non-engineering assessments to an engineering team. It doesn't translate however much they want it to. Trying to measure metrics which can't be measured will always end in failure.
skidmark_zuckerberg@reddit
People skills is about being liked. If you can be relatable and nice to people, they generally will listen and respect you. Some of my best work relationships weren’t even with developers, they were with product owners, QA, managers, and sales people.
What’s helped me is genuinely being nice and listening to people, getting to know them outside of what they do for work, making time to help when asked about something, being empathetic, and importantly not forcing my own ideals and opinions down people’s throats. If someone disagrees with me, or I with someone else, I try to understand why and seriously consider what’s being said. If I feel that I’m still right, I do my best to try and make the other person understand the why. I’m not abrasive in the slightest. I’m not afraid to say “you know what, I’m completely wrong here” and especially not afraid to admit to someone I don’t know something. Basically be the complete opposite of the stereotypical developer and you’ll find the social side of the job to be a lot easier for you. The job is 75% politics.
rayfrankenstein@reddit
I think that once you have the job, workplace politics skills actually end up being more important than engineering ability.
Friendly-Nobody8023@reddit (OP)
I don't know if it's ADHD or Bi-Polar or some crap but I always found it difficult to socialize with people. Even in School and college.
I have trouble falling asleep at night. I cannot sit still for extended periods of time. Even in office, I find a corridor and keep walking back and forth. These days I just set a timer for 50 minutes and tell myself, I won't get up from my chair or open any social media apps for 50 minutes. And that seems to work for me. I get so much work done in those 50 minutes. But the problem is, that I don't start the next 50 minute window immediately after. I usually tell myself I will take a 10 min break. But I end up taking like half an hour to 1 hour long break.
Because of this, everyone goes home at 5:00 or 6:00. I end up staying till 10 or 11. Everyone thinks I am working very hard. But I am in the corridor walking till my knee caps wear out. I can't do more than 3 sit ups these days. I get a burning sensation in my knees.
Clyde_Frag@reddit
This sounds like pretty classic ADHD. You have short periods of hyper focus surrounded by long periods of time where you struggle to motivate yourself to do work.
activematrix99@reddit
I started as a senior in a new industry (regulated) and it took them three months to get my commit permissions sorted out. It was the biggest advantage - I had three months to learn the industry, read code, and participate in meeting and learn the culture without contributing a line of code. So, my advice is take your time.
Clyde_Frag@reddit
Some of this resonated with me and is something I’ve worked to improve over the last few years.
In terms of over engineering and focusing too much on the tech vs product, your goal from day 1 should be to understand the problem space you’re working on as much as possible. You probably have a great grasp of technology at this point, so you need to learn to choose the right tool that gets the job done simply and without tech debt. Recommended reading: the pragmatic programmer.
For interpersonal relationships, it really just comes down to smiling more often and asking people questions about themselves. Recommended reading: how to win friends and influence people.
writeahelloworld@reddit
Bring a box of donuts and be friendly on day 1
rayfrankenstein@reddit
Laced with MDMA and at least one or two hallucinogens.
cmpthepirate@reddit
Wow that's the best suggestion i have ever seen in any dev forum about starting a new job.
dandecode@reddit
Maybe consider something like sertraline. I struggled with those same issues for a long time, tried many things, but in the end there was a chemical imbalance that was only truly fixed by medication. I feel free now and am progressing faster than ever in my career.
QuitTypical3210@reddit
Push llm code and job hop again before it breaks. Ur gonna make more money job hopping anyways
CodelinesNL@reddit
It's a phase we all went through. I mean, to be frank, 7 years of experience isn't even all that senior. That you went through that phase is great. A lot of people get stuck there.
Same. Very junior behaviour. You saw the pattern and learned from it. Over time with experience you realize that writing code actually isn't our job at all. We solve problems. That involves a lot of communication. Sometimes we decide to buy something. Sometimes we decide to remove code. Writing more code is, while common, often a 'last resort' since it also comes with a cost. Being able to make this tradeoff without our ego getting in your way, is part of being a senior dev.
Generally; it's good to ask questions. Avoid "we must use X because Google does it that way"-type arguments. They're useless at best, frustrating to deal with for senior devs at worst. I personally can't stand developers who constantly have to pipe up about stuff their read somewhere on LinkedIn because they want to appear knowledgable.
Want to do a proof of concept with some new tech? Awesome. Lets see if it works for our usecase. But then also take ownership.
That is something you need to handle yourself. If you see patterns; learn from them. What you describing sounds like you lack social awareness at a pretty severe level. You should consider getting coaching/professional help on that if you can't seem to get out of it. Building relationships with people in the office matters, stack-ranking or not. We don't have to be friends, but we do need to be on friendly terms.
This really just takes time and effort. Your job is solving business problems and for that you need to understand the business.
avbrodie@reddit
For number 1; take your time to read code, documentation, and don’t be afraid to ask questions. I know there is a tendency to “prove yourself” in a new company, but remember that no one expects you to know everything or understand everything from day one, or even day 30.
Embrace your ignorance and take small steps towards understanding.
For number 2, it’s a bit more difficult. The positive thing is that you seem pretty self aware, which is helpful. What has worked for me is getting to know people on a personal level, casually. It takes a bit of time, but relationships with others takes effort, and you need to build trust. Try and avoid humour, and focus on things that u have in common with other people.
It can be as simple as a shared love of videogames, or some other type of media, or a similar interest in sports or music.
If you show interest in the work people are doing, and the type of people they are, it should help you solve both of these issues
Friendly-Nobody8023@reddit (OP)
Would you say asking questions over Slack is better than talking to them at their desk?
When I ask questions on Slack I feel people think they won't get the credit for answering the question. If I ask a question in the team-wide slack channel then I feel I am interrupting everyone. Everyone of my team members gets a ping.
Whenever I walk over to someone's desk I almost always get hostile response from people. I had this experience with multiple people across multiple teams. They feel I am interrupting their work. But plenty of times, people come over to my desk and chat with me. I almost never get irritated by it.
maqnius10@reddit
Team wide slack channel is fine I'd say. Follow ups possibly directly to the person who answered your initial question.
Async and in specific group chats is the best way to ask for help in general.
Don't worry about notifications, they can turn them off if they want to focus.
„the missing readme“ by Chris Riccomini and Dmitriy Ryaboy might be a good read for you. Even if you're already experienced, it offers some valuable perspectives.
greysteppenwolf@reddit
It depends on the processes in your org. Try to see where/how other people ask their questions and mirror them. If they use the team-wide slack channel, don’t hesitate to use it too.
If you don’t have any references on where to ask a question, I’d say the default option is either ask your direct manager (while you’re onboarding), or use the team channel, depending on how niche the question is.
yerfdog1935@reddit
People not knowing who owns what is absolutely an organizational problem. There should be resources listing that, updated as things change, and it needs to be communicated in a way that you can ask just about anyone where that documentation is.
As far as the people skills go, get to know people personally, try not to crack too many jokes, and at the end of the day, you're going to have to ask questions. That's how you learn and grow. Absolutely try to figure some stuff out on your own, but we've all got to ask questions sometimes, when we can't figure it out on our own.