What is your advice for a senior engineer with 10 years of experience?

Ayush Sharma on March 03, 2019

Hi, I've been seeing a lot of thought-provoking posts on dev.to for senior developers, and I was wondering what you think on how senior engineer... [Read Full]
markdown guide
 

I made this mistake myself: I didn't specialize enough, and I didn't do it early enough in my career.

I ended up getting a bunch of experience in a several programming languages over several different tech stacks.

Luckily in web development, there's a lot of overlap and I was able to combine a lot of my generalized knowledge, but the key to specializing is to commit to something and to stick to it.

The real challenge is saying no to all the other things you could be doing instead, all of which could be really rewarding as well, in their own way. It's a question of opportunity costs.

 

I agree about opportunity costs. What did you end up specializing in?

 

Level 1: Codemonkey.

Level 2: Programmer.

Level 3: Senior ---> DEVOPS or SPECIALIST (they are different routes).

  • Specialist means to learn a single technology and master it. It is highly risky because if the technology is discontinued, so your knowledge and experience are wasted.

  • (Generalist) Devops means to learn a lot of technologies. It is a jack of all trades, Master of None, you are not so good at everything.

Level 4: Management or some leading role.

btw, years means nothing, you are not automatically promoted because of your years-experience but because of your real experience. I have seen codemonkeys with a decade of experience. Also, I know some seasoned developers with only 5 years of experience.

 

Do you think that the goal of a programmer is to become a manager? πŸ€”
For me it does not make sense that some one who is extremely good in his/her job is looking to be moved away from technology.

 

And into a role that they might not have any understanding of how to do correctly. The progression between these two roles is mind blowing.

 

Yep, it's natural: It's a better salary, more responsibilities and it requires more expertize and people that know the business logic of the project.

Interesting... I don't agree, if someone is good at his/her role, I will keep him/her on that role and give a better payroll or whatever he/she needs. I won't force a programmer to manager promotion just because someone has a lot of expertise.

 

Short answer: yes. A broad base of skills is an asset, but at some point you need to have a shortlist and start digging deep into it. Management consultants with really expensive watches call this "T-shaped skills".

I put most of my chips on data pretty early on and not quite fifteen years later I think it was a good call.

 

Data is definitely a big deal now. What did your journey look like? Did you focus on the different database engines and technologies, or more on concepts? Could use a few book recommendations.

 

I started as a student intern at a commercial lending startup and dropped out to work there full time (if I'd have graduated it'd have been right into the teeth of the 07-08 crash). I did a lot of database design, data access framework implementation, web service layers, and CI infrastructure. Most of my ensuing career has been more of the same.

Concepts are the important part. Relational databases all more or less conform to one standard, and once you understand what's going on internally it's easy to go from SQL Server's SELECT TOP 100... to everybody else's SELECT ... LIMIT 100. A b-tree index does the same thing no matter who wrote it, and so on. Chasing specific implementations without a solid grasp of the fundamentals of data storage and access is how you get caught up in fads like the "document stores will kill relational stores" thing of the early 10s; document stores are an important niche class, but they're not an RDBMS replacement. It's more important to know what problems they solve than the exact details of their usage.

Books: Lex de Haan & Toon Koppelaars' Applied Mathematics for Database Developers and Charity Majors & Laine Campbell's Database Reliability Engineering are both excellent.

Thanks for the recommendations. I'll check them out.

 

I've noticed that many senior developers go down the DevOps path. I know at least a dozen of frontend/backend seniors with 10+ years of experience which decided to specialize in AWS/docker/k8/azure stuff and with good results. Their salaries are much bigger than frontend or backend dev can expect, and the scope of the job is, while complicated, less demanding in general.

They are kinda like Zen masters among developers πŸ˜„

 

1) Expand your mind with People skills in general. No matter how good you are, you cannot code as fast as 10-20-100 devs. You will have two paths in this case

  • As team lead, manager, etc in a company (more 'secure')
  • Entrepreneur - if you have the technical skills currently, stop digging in every New technology and create something meaningful with your current knowledge for as much people as possible. People skills are needed for sales and in some point for employees.

2) If you are happy digging technical stuff, grab something and specialize.

 

I like to think that deep deep specialism is over rated.

It's the breadth of knowledge that is important and the willingness to learn, knowing on less tool for this or that is not a huge blocker, the principals are the important things, have you used a CI tool, do you know the best practices, do you know the difference between a join and a union for relational databases.

I don't believe that technology is like DandD, we don't have to have a Rouge for picking locks, a Barbarian for tanking, an Enchanter for crowd control, and a priest for healing.

We need well rounded teams that together solve problems and create value.

That being said have a set of tools that you really know creates value, but they are things in each skill set that you might not need (I'm looking at you Python meta classes)

 

Don't be afraid to re-invent yourself. Always be learning. I know of developers now that are experts in javascript that years ago were SQL Server admins, or Windows Phone devs that turned into Docker specialists.

Getting stuck is not an option.

 

"I always seem to know one less database, or one less CI/CD tool, or one less ..."
This is totally normal, whether you've been doing this for 5, 10, 15, 20 years, junior or senior. And that's OK.

"Does spending time to specialize in front-end, back-end, databases, CI/CD, operations, monitoring, analytics, etc. make sense?"
Yes, I think it does. You already have a lot of experience being in the field for 10 years - if you specialize in one or two areas and bring your existing experience you'll make yourself much more valuable.

 

I see seniors as having three career paths:

1) Continue being a developer. You're a senior, and you can pick up new tech no problem. Depending on your personal life you may want the best culture fit from a job or simply the most money (contracting). The implementation is what matters to you.

2) Architecture. Less time developing, more time researching what solutions are the best fit in what situation. You prefer to work at a higher level of abstraction.

3) Management. No more developing. There's only so much a developer can do, and organizing people and processes is the biggest factor in getting software shipped.

 

I suggest you dive into serverless. It is the next phase of the web.

code of conduct - report abuse