← Back to context

Comment by gcheong

2 years ago

20 years ago when I started there wasn’t anything I experienced that could be called coaching, mentoring, or leveling up. Sure, I could get some time from a more experienced developer to get another set of eyes on a particularly hard problem if I wasn’t able to come up with a solution but for the most part I was just expected to work with minimal explanation or direction. Very little in the way of code reviews as well. I certainly hope this has changed and to whatever extent I’ve been able to I’ve always tried to make myself available to others because sink or swim really sucks.

Around that same time, my first job was at GE medical systems. The team I was part of was responsible for developing systems for digital X-ray machines. We were developing a new mobile x-ray product and it needed some new capabilities. As a fresher out of college I worked on some of the most critical systems capabilities and features and I got brilliant support from my seniors in software engineering and domain experts (radiology + image processing researchers). They literally taught me 3 different things (coding to professional standards, image processing, systems engineering) at the same time and we were super productive as a team. That set the bar for my expectations on how a team should function for a long time.

Luckily 2 years later I went a startup and similar great experience of team work and supporting each other continued. I worked at 2 more startups which grew a lot and were super successful and the culture continued.

Only in recent times, (post 2019) I have noticed that people are obsessed with performance rating systems and gaming them. I notice junior engineers are not as curious to learn or challenge-seeking as engineers a decade. And I notice recently promoted senior engineers are not as talented either. I used to think this had to correlate with dominant programming language – c/c++/go vs ruby/java etc. but I don't know if that fully explains it.

  • > Only in recent times, (post 2019) I have noticed that people are obsessed with performance rating systems and gaming them. I notice junior engineers are not as curious to learn or challenge-seeking as engineers a decade. And I notice recently promoted senior engineers are not as talented either. I used to think this had to correlate with dominant programming language – c/c++/go vs ruby/java etc. but I don't know if that fully explains it.

    The problem is financials on both employee and employer side.

    If you actually want to have a chance at a decent lifestyle without being born into existing wealth, there aren't that many options in the first place, and of these IT is the only sector that doesn't take care much about formal qualifications/education - although you're almost guaranteed to make money if you have a CS degree, you still have a very high chance of doing so if all you have is a coding bootcamp and willingness to learn.

    However, unless you land in a well funded startup that has money to burn and not much oversight / managers have actual freedom, the organizations capable of paying that kind of money tend to be very large, very bureaucratic, and pay rises are closely tied to some sort of "performance metric" - hence if you want to rise in level and pay, you gotta game the system because HR won't just give you a pay rise based on your manager's good word, they want something as evidence, even if only to insulate themselves against claims of discrimination or nepotism.

    And to make it worse, even if you're in the first case of a well funded startup, if it succeeds and grows eventually "professionalism" will creep in sooner or later - either because the company hires enough experienced people (particularly in HR and finance) that bring it with them, because the company gets pressured to do so by investors/boards/unemployment insurance/legal requirements, or because inevitably complaints of discrimination crop up.

  • >I used to think this had to correlate with dominant programming language – c/c++/go vs ruby/java etc. but I don't know if that fully explains it.

    There most definitely is a correlation here. Language shapes Thought and the more complex/expressive a language is the more does that Programmer have opportunities to explore new paradigms/ideas that expand his mind. Your knowledge footprint increases and you do get better than somebody else who learns a "simpler" language and/or just stays at the surface level without any exploration (i.e. i will just use this API and not learn about anything else).

Unfortunately, it hasn't changed much in small business. I try to do the same with my time, but often junior developers want to tackle the newest things, rather than the old that needs maintenance. The ones that listen to you often jump ship for bigger and better things, and I don't take credit for it, but I like to think I helped them along at least a little in their pursuit of more knowledge.