12

When I graduated I got a slightly above average job working on Java Servlet technology. But then I acted on some poor advice from people who were close to me. Although it was a mistake, I listened to them due to trust and since I was new in the field, I didn't know any better - and it turns out that the people I trusted had some rivalry related issues with me for whatever nerdy reasons.

Personal issues aside (only mentioning them because people would comment "why did you listen to them"), I landed a job in a startup and worked there for 3 months as a MEAN stack developer. It didn't work out - removing the details. I switched into another small company. I worked there for another 6 months. They were good 6 months - I was working on a nice project. Salary was below average but timings were good and there was growth and learning.

But then I had an extreme type of reputation problem (also one of the factors for switching my previous job) - there were again people really close to me who expected me to get into a big company, and a time came where it felt like everything is falling apart. At that time I got an opportunity at a highly reputed firm in my city - the technology was not upto what I wanted - nor the career path. Salary was good and it was one of the firms that these people close to me really admired - so it was a desperate move for me to accept this job. Things are good here except that there is zero growth/learning for me as the work that I do is merely anything other than handling politics and taking blames for things I didn't do. The technology I work on is rarely used in only 1 or 2 known firms "throughout the world". I had been just sucking it up because of reputation that if I get a bad label here, this news is going to so and so. A point came where I would return home, sit on my couch for at least 15 minutes staring blankly at the wall, thinking of literally nothing - the politics is that much mentally exhausting. The dead-end: I spent almost 2 years of my career at this place - learned almost nothing (these guys don't believe in training, or at least that's my experience here) or giving time to employees to constructively perform tasks. Now I want to somehow, anyhow, restart my career as a Software Engineer. My problems (I know it's unreasonable):

1) I can't switch to a less reputable firm

2) I can't switch to a lower salary

3) I will be just bitterly honest here - I am not eligible (skills wise) to get a job with a position expected of a 3 years experience guy.

What should I do? I even got a call for a test but I'm scared of blowing up my one shot and rightly so as I have no serious skills (test is postponeable) - I may even be half the developer I was since I joined this company. Now I do have a career path but it's almost useless if I stay in this political nerdhouse. Thanks in advance for your advice.

closed as off-topic by Dukeling, Malisbad, Jay, Philipp, Nelson Jul 10 at 3:15

This question appears to be off-topic. The users who voted to close gave this specific reason:

If this question can be reworded to fit the rules in the help center, please edit the question.

  • 10
    Why can't you switch to a less reputable firm or a lower salary or learn the skills you'd be expected to have at this point in your free time (or even just apply to a more junior position)? – Dukeling Jul 6 at 23:42
  • 17
    "I even got a call for a test but I'm scared of blowing up my one shot" - the only possible way to pass the test would be to take the test. There are always more opportunities out there, and you could also reapply to the same company in the future. You shouldn't look at any given job application as your "one shot". Although you should be spending a sufficient amount of time preparing for the test (and interviews in general) in your free time. – Dukeling Jul 6 at 23:52
  • 13
    A country tag might help. Although the basics make sense, a lot of the details sound culturally-dependent and hard for me to identify with. – Ernest Friedman-Hill Jul 7 at 0:42
  • 4
    For the first two years of my career, I wrote software in a proprietary language which was at the time only used at that one company, and even today it's specific to that industry. But I had no difficulty getting out, because I practiced the skills I wanted to be using at work during my off hours, and every skill that helped me excel at my job was transferable, even if the one skill that the job officially entailed was not. Working with a team, doing presentations, using version control software, doing software design, basic computer troubleshooting - these all apply in any software job. – Ed Grimm Jul 7 at 5:32
  • 2
    What do you mean "including rivalries of some sort" do you mean that family or social pressure to compare your self to a relative – Neuromancer Jul 7 at 17:49
39

Basically, you've gotten yourself stuck where you don't want to be because you've been worrying about what other people expect of you.

It's time to stop doing what other people tell you too, and to start the career path that you want to follow and be happy.

Now, you have three years experience as a developer - it might not be the tech stack you want, and it might not be a super popular one (although I doubt it's so unpopular "only one or two firms" use it). You should have transferable skills.

So, you're not going to start back at square one, but you will probably have to take some small step back.

Your other choice is to stay where you are, become more unhappy, and lose any chance to get a better career.

  • 2
    A thought provoking web page related to your answer is norvig.com/21-days.html – Basile Starynkevitch Jul 7 at 0:57
  • 5
    It would also be sensible to consider getting rid of some of the people and influences that you feel are pressuring you. On balance you might want to keep the people and the relationships but it is worth considering how important/beneficial they are. – P. Hopkinson Jul 7 at 17:30
22

I have wasted 3 starting years of my career. Is there any way to start over?

You have not lost any years, you learned many things. Teach Yourself Programming in Ten Years provides a mind-provoking insight. You should also read Bullshit jobs, it is mind provoking and covers quite well software development jobs, since most software projects (more than half of them) are somehow failing.

You have learned how to behave in the workplace, which is valuable on a resume. If you dream (IMHO wrongly) of climbing the management ladder, be aware today of the Peter's principle and the related Dilbert principle.

At last, please realize that software technology is by essence very brittle and doesn't last long. What was a buzzword in 2016 will become old-fashion (or legacy code) in 2022.

What matters much more are programming concepts and software development skills (see Software Heritage for an important insight), and the ability to learn new things, including even new problem domains. All of this lasts for an entire career and all of them are appreciated and valuable in the job market.

As instances of programming concepts, consider non-exhaustively for example: algorithms that you have used in your code, independently of the programming language; computer science concepts - including operating systems and their API such as POSIX or WinAPI or Sockets, protocols such as HTTP or SMTP, DBMS such as PostgreSQL or MongoDB, distributed computing techniques such as MapReduce, asynchronous message passing or remote procedure calls etc. Mention a short list of high-level programming concepts in your resume.

As software development skills, consider the various programming languages you know (C++, Java, SQL, your shell), other more or less computer languages you are familiar with (such as CSS, HTML, PDF, LaTeX, OOXML, DocBook, XML, JSON, DOM etc.), and your familiarity with several software engineering tools (version control tools like Git, build automation tools like make or ant, source code editors or IDEs like emacs or Eclipse) that you practice daily. Write about all of them (in a single paragraph!) in your resume. But emphasize your ability to quickly learn how to use new software engineering tools and learn new computer languages.

For example, I first programmed in 1974 on punched cards, but the programming language used at that time (PL/1), and the OS I did use (MVS with JCL) at that time have been forgotten, and I forgot many details about them. Later, I professionally programmed in C programming language (actually I was mostly metaprogramming in C around 1990), but today C is out of fashion (so I'm also using C++14), and I might learn Rust and I did code, a few years ago, some software in Go.

The dead-end: I spent almost 2 years of my career at this place - learned almost nothing

Wrong perception of yours. You did learn a lot (including stuff I mentioned above), because you have improved some skills, you just are not yet capable of writing all the stuff you did learn on your resume. In simpler words, you just don't know all the things you did learn. And learning is unrelated to any training your company is paying for you. With access to Wikipedia and many other resources on the Internet, (including Stack Overflow), you can (and probably did) learn a lot from your workplace.

There is a Russian saying Век живи - век учись (my late parents repeated that weekly to me when I was a kid): If you live for a century, you have to learn during a century. It applies to both you and me.

3) I will be just bitterly honest here - I am not eligible (skills wise) to get a job with a position expected of a 3 years experience guy.

Read about Impostor syndrome, even at the age of 60, I still tend to feel it. Be however aware that most job offers (written by HR) require an unreasonable amount of skills. Understand that the job market (and corporate life in general) is a theater.


I'll be 60 years old during August 2019, and I have spent all of my career (except one sabbatical year at INRIA) as some Computer Science Research Engineer at CEA since 1985, working in the same organization (of ~16000 people). I essentially had two roles: one at its DEN division, and another at its DRT division. I switched teams only a few times, perhaps 3, in my entire career (e.g. the colleagues I have today are nearly the same as I did have in 1999, and the unit I am working with, called a lab of about 25 permanent staff, keeps the same name).

I have written more than a million lines of code during my career so far. If I consider amongst them what code has actually been used by other people in real life (not just cited in some paper), then honestly I could only name the GCC plugin feature and the less than 10K lines of code I contributed to GCC. During the last 20 years, it honestly is the only piece of code, written by me, that I feel has been useful to others.

And I am not alone. If you start reading papers and books on software project management (start with The Mythical Man-Month, it is a classic of its kind), you'll understand that most software projects generally fail. The typical failure rate of software projects is still around 50% even in 2019.

But I did have a lot of fun writing all the code that I did write during my career, so what else can I expect?

I have been naive enough to understand only very recently that my actual role (not the one mentioned on contracts, of course) is to be the support of corporate tax optimization, (by research tax credit done by corporations).

In other words, you just need to grow up. You learned lot of things in 3 years, and these can go in a valuable resume.

And the most precious thing a software developer learns is not about any particular kind of software technology (such as Java Servlets). It is related to practice, and the relation between your day-to-day job and Computer Science. Just ask yourself honestly: have you understood all the details of Introduction to Algorithms* (or any equivalent book or university course)? Between you and me, I did not. And that is more than thirty years that I am reading such books. My hairs are white, I am grand-father 7 times...

What should I do?

If you want to learn even more things, I can give a very simple recipe: contribute, during your free time (e.g. a few hours every weekend, and perhaps 30 minutes every other working day, during the evening, at home), on any existing free software project (you'll find thousands of them on GitHub & GitLab), but don't choose a huge project (but the one with only a few hundred thousand lines of code, and several dozen of fellow programmers). Use your personal computer for that (not the one belonging to your employer). Mention that in your resume.

Perhaps, even take time to learn a new programming language while doing that, e.g. contribute to some free software project in a language you are not using at work. You'll become more competitive than your fellow programmers who did not that. Of course, install some Linux distribution on your home personal computer (since Linux is mostly made of free software, and since it provides an excellent development environment for coders). And since you contribute to an existing free software project, you'll learn even more how to work in a team, and the team working on that particular project will teach a lot of things to you.

For example, you are now a Java expert. Then contribute, in your free time, to some existing Guile extension project. You'll learn both a new programming language (Scheme, the language used in SICP, a freely downloadable book, which, still today, is the best introduction to programming that I know, that every programmer should have read), and a new approach to programming (embedding an interpreter in some existing program). And that is very valuable on the job market place (much more than any particular technology), because you then demonstrate to the potential employers that your mind is flexible, i.e., you can learn another programming language and another way of programming.

Of course, don't become tied to one particular programming technology. But you now know that already!


NB: For me, IDE is a buzzword for source code editors. My favorite IDE is Emacs. Also, hyperlinks are above to give bibliographical references (since I am old enough to have written technical reports before the existence of the Web).

PS: If you want to contribute to some weird free software project (to which a very active contributor is an Indian software developer, Abhishek, working on that project on his spare time while being employed full-time), read this draft technical report (skipping the few mandatory pages for European bureaucracy). Then, if the ideas there are interesting you, contact me by email to basile@starynkevitch.net. But the free software project I have in mind is more a research project than a development one, and it does share most of (but not all) the ideas explained in that report while having different goals. And that, Abhishek is learning a lot of new things* while working on that free software project.

  • 2
    Peter Norvig is my perpetual virtual mentor - just look at all his videos on youtube. Thanks for the references you gave on the article written by him. And sir, I salute you for your advice given too. – Peter Teoh Jul 9 at 6:42
  • I must be lucky. Not a single tech that I've mastered has become obsolete, and I started 18 years ago. – dan-klasson Oct 23 at 13:01
3

Don't seek the comfort zone

You totally underestimate how incredibly many totally inept people with a 3 year work experience record there is. There are loads of them. Ineptitude is a choice (or, lack of making one) that comes from staying in that oh-so-alluring comfort zone. Don't be there, don't even desire it. Being uncomfortable means opportunity for learning something new. Strive for excellence, but don't ever assume you are there. Learning company politics is an extremely useful skill. So is the mental fortitude of getting shit done even if it is a hurricane going on. Stay and learn.

1

Wasted your time? Everyone of us is always learning something - consciously or unconsciously. By "wasted" I suspect it could mean something like "I just discovered that I don't like to work in XXXX environment". Correct?

I just read that Richard Feynman in his "Surely You are Joking" book that he complained to his professor that he has not been productive. His professor laughed it off. A few years later, he won the Nobel Prize.

Not the answer you're looking for? Browse other questions tagged or ask your own question.