DEV Community

Cover image for 9 Software Engineering Career Mistakes To Avoid At All Costs

9 Software Engineering Career Mistakes To Avoid At All Costs

Lorenzo Pasqualis on October 12, 2017

This post was first published on CoderHood as 9 Software Engineering Career Mistakes To Avoid At All Costs. CoderHood is a blog dedicated to the hu...
Collapse
 
eljayadobe profile image
Eljay-Adobe • Edited

All of these points are spot-on.

#3 in particular is a good one. Unless you own the company... you do not own the code. The developers are the stewards of the code. They take care of the code, make the code better, enhance the code. But they do not own the code. They are paid by their employer to do those things, and if they get all prickly about their little corner of the code things won't go well for the developer.

Collapse
 
miniharryc profile image
Harold Combs

Maybe put a different spin on some of these:

Test your stuff

Sure, do. Make a good automated suite and keep it sanitary. TDD if you can.

If your company has no testers because they fired all of them, pad your estimates so you can do real automation of the "sad path" stuff too.

Hiding your mistakes

Okay, this is pure soft skills.

  • Learn when to talk and when to shut up.
  • Learn how much to say.
  • Learn who receives news and how much detail s/he can absorb.
  • Learn who is going to blamestorm you to death the second they hear bad news.

Or, just read the first chapter in Pragmatic Programmer on "Give options, don't make lame excuses."

Fighting the Development Process

Nuance: Understand the way the wind is blowing, so to speak, but don't be a sycophant. Lots of shops use crappy, ill-designed, badly-implemented development processes. Don't accept them out of hand.

Insist on doing better, but in small ways. Enact the "Think globally, act locally." How can your team be better? How can you influence the whole org to be better?

Collapse
 
gregorgonzalez profile image
Gregor Gonzalez • Edited

1 It's really important to test and avoid bugs.
6 It's my biggest problem. I'm not done and my boss wanted to start another project. He doesn't know how to prioritize. Everything is important, everything must be coded right now and Everything has to be on production for yesterday and without test. To finish those projects I work at nights and weekends, but no more, I got tired of this mess

Collapse
 
eljayadobe profile image
Eljay-Adobe

100% of 1 thing actually done-done is better than 20 things each 90% done.

Although I think too many developers are willing to call something 100% done-done and not follow-up the work with refactoring and clean-up. Because to do a good job at the refactoring and clean-up that takes about as long as implementing the feature itself.

I liken that follow-up with a painters analogy. When I had my house painted, inside and out, it took the painters about 3 days to prep everything. They spray-blasted the outside to clean it, caulked the cracks, put a coat of something protective on the wood deck, laid out tarps, got all the materials delivered. Inside the house they taped, took down some doors (temporarily), put down tarps. Then they painted everything, which took about 2 days. Then they cleaned up, which took 3 days (and some touch ups, and had to bring in a machine to respray "popcorn" on the ceiling).

I think programming is about the same. There some prep time (we call that time a "spike"), there's implementation, and then the follow-up to clean up the implementation.

Without that follow-up, it would be like the painters just leaving all their junk behind for the owner to deal with.

Collapse
 
gregorgonzalez profile image
Gregor Gonzalez

Yes, exactly! I learned that in the bad way. I always refactor and clean to keep code improved. Now we are doing everything to real 100% done-done, It's more work but everyone will thank you later, even yourself.

Collapse
 
casen profile image
Casen

I think this is a fairly good list for the 80% of pitfalls that will occur in a Software Developer's career. I think more can be said about the following topics however:

When and how to fight battles over code quality/ architectural design

This one has been very common in all the jobs I've had in my career. A simple mistake in these matters can and will lead to being ostracized by the team, and perhaps even termination from the company.

The main reason this is so hard is because egos are involved. I've joined up in companies where just about everything about the architecture of the systems is wrong. Everything about how the software is organized is wrong, and it's leading the company down a bad path of unpredictable, untestable systems living in production. Merely pointing this out to your new colleagues might be a bad move depending on the personalities of those who have perpetuated the bad system.

The worst case is when the most senior person on the team will not hear feedback, or want to improve the system. Worse yet is when they would like to improve the system, but the person with the purse strings is adamantly against ongoing software house-keeping.

I wish I had good answers for this problem, but I don't even know where to start. Sometimes it seems like resigning is the only correct solution.

Navigating which projects you get put on

This one is another difficult challenge that all of us will face at some point in our career. Being able to tell which project to avoid at all costs, and which will put us in a favorable light with the powers that be. Many projects have hidden pitfalls, and you might find yourself in too deep, trying and failing to fix an unfixable problem. Perhaps the project was barely functioning before you got put on it, and now that you're making any changes at all, it suddenly starts failing all the time. Whether you like it or not, people around the company think you are the reason for these failures.

The opposite can also happen, where you just luck into a project that everyone loves, and are regarded as a hero. Again, I wish I had more advice in this area, because it is quite difficult to navigate without lots and lots of experience.

Collapse
 
dplaton profile image
Daniel Platon

"Not Sharing Knowledge With Others For Fear of Becoming Unimportant or Irrelevant." who does that? Who hides knowledge with the purpose of being the only source of truth?! Not only this holds back the whole team, it holds you back as well because without knowledge sharing how do you expect to grow?

Collapse
 
hydrogen2oxygen profile image
Peter

Point 9 (Not Sharing Knowledge) and point 4 (Documenting The Code) are very similar and I've noticed in my 18 years of software development that the first people who leave a company are exactly these kind who are secretive about their code and too lazy to document their code. They may claim to have found a better job and therefore they leave the company, but they leave a mess and I would never hire them again.

The problem is also that documenting code and writing howtos is not forced by the superiors.

Collapse
 
bgadrian profile image
Adrian B.G.

This sounds like a too perfect world, if you live and code in such an environment good for you, you are in Heaven already πŸ˜€

Usually the non-tech boss just want their πŸ’© done today, maybe tomorrow, you can try to pronounce things like "tests" or "processes", but is like speaking to a wall πŸ™‰

Collapse
 
ryanhaber profile image
Ryan Haber

So good. Just posted to LinkedIn. This post is applicable to anyone in software development very easily. Really, by analogy at least, it applies to anyone with a job.

Collapse
 
ladebug5 profile image
LaDeBug

Definitely a must-read for all of my colleagues! Nice job, Lorenzo!
"Failing quickly and often is a hallmark of success" - I like that most points are rather applicable to life, not only to software engineering.
Okay, if it comes about general programmer's philosophy, let me share my two cent to the topic: here the guys talk about best practices litslink.com/blog/what-are-softwar.... I'm sure, most points go without saying, still it's always good to remind.

Collapse
 
stevezieglerva profile image
Steve Ziegler

Great post. Just added you to my Feedly. Thanks for writing.

Collapse
 
devictoribero profile image
Victor Ribero πŸ§˜πŸΌβ€β™‚οΈ

What a great article! I think you made really good points!

Collapse
 
saviobosco profile image
Saviobosco

Great post. Thank you very much.