Encouragement and Advice for New Software Engineers

May 31, 2020    Development Encouragement

Pro tips for New Software Engineers

Every year we have the pleasure of having interns start in the summer. Many of these have been hired full-time. I was thinking about things I have shared in the past or would like to share with them now, which prompted this article.

Checkout my resources page. I have lot of podcasts, books and websites listed. Use my referral links to get the Brave browser, Arcadia power for clean energy and Coinbase to buy some crypto ;-) (hint, hint).

I’ve been sharing this article/presentation with interns for the last few years: A lot of software development is about learning .

Personal traits and Confidence

Congratulations, you’ve graduated and have been hired! You’ve already proven that you can learn a lot of new things and that the company (that’s a generic statement, I’d also say “us at Omnitech” if that applies to you) has faith in your abilities. We know you’re driven to learn, are very smart and have good communication skills.

Be humble, not haughty, kind, willing to learn. Remember there is seldom one right way in software engineering.

Think about what your foundations are. My personal example is My Developer Manifesto .

You will mess up. You will take longer to do things then you or others have estimated. Your estimates will be terrible at times. For my first couple months, I thought I was going to be hired because several things took too long and we had issues. Software is hard. Keep working and learning. Don’t give up. Ask for help! We’re all in this together as a team and ready to help.

Make sure you understand what needs to be done. Don't assume. Ask questions, even if they seem like they should be obvious.

Make things work, make them right, then make them fast. @Ardalis has a lot of great hints, including these . Remember: if you have time to fix something later, you have time to do it correctly now. It’s tricky to find the right balance of getting things working and getting things to a maintainable state. We’ll be reading the code for a lot longer then we’ll be writing it. Think about the next person (or yourself) who will need to add to your code.

Have fun, smile, keep a positive attitude.

Ask for help

We all need help. Try for a few hours to figure it out. Take a short break. Then ask someone you are working with or post a question in a Teams channel. We want to help and it may only take a few minutes.

Help others and share what you are learning

We all need help (again) and things we don’t know. If you can help someone by researching or talking through the issue, do it. Don’t be intimidated by how old that person might be or the many years of experience.

I’m very happy to learn from others. I’m especially happy when a younger engineer puts a lot of time and thought into a new topic and presents it at a Lunch & Learn. I have many things I’d like to learn, but don’t have the time and energy to dig in myself or watch videos on line. Their effort helps me a lot.

Make it a goal to present at a Lunch and Learn in your first 6 months and follow through.

Start a personal blog! I usually create an article after struggling through a challenge and having to pull together multiple sources to find the solution. I write for myself as much as anyone else, because I quickly forget. Scott Hanselman says we only have so many keystrokes in our life-time .

Write an article for the company blog.

Use Your Resources Wisely

Time and Energy

You have more time and energy available now then you will have in the future (take if from me, getting closer to 40 and soon to have 4 kids!).

Read a lot!

Get started on the Microsoft Certification tests as soon as possible.

Don’t let up too much after finishing college (take a break, but not for too long).

Your onboarding period will be a whirlwind. Enjoy your time learning lots of new things! Don’t forget to share with the team. This will probably be the most paid time you’ll get to learn.

You will get overwhelmed, be patient and remember that learning a little over time will add up to a huge amount. You will reap what you sow .

Get involved with as many Lunch and Learns as you can handle. Free food and learning opportunities are a great combination.

You’ll need to spend sometime outside of work to learn new things. Don’t overdue it (you need to have a social life).

Health

Take breaks. I enjoy/sometime need a 15 minute walk break. Especially in the summer, with others. It helps you clear your head, feel refreshed and take a different approach when you come back. I’ve used Work Rave for many years to remind me to take breaks. This is especially important for my (and your) eyes. The eye doctor tells me to “look at something 20 feet away, for 20 seconds, every 20 minutes”.

Enjoy the summer weather and get outside as much as you can, it goes by too fast. Now that you don’t have a school schedule, fall will come quickly, but feel almost exactly the same.

I don’t go to the gym. I have found that the 7 minute exercise app helps me get some in the morning. I also ride my bike to work and have saved many miles of driving over the years.

Eat to Live instead of living to eat. Enjoy food, but make sure you get good nutrition. I can tell you why that matters so much to me at another point, if you’re interested.

Relationships

Relationships are important. Don't neglect them.
  • Visit and talk to your family as much as possible.
  • Try to keep in contact with your college friends.
  • Get to know co-workers. It takes time and effort, but hopefully you’ll be working with many of them for 10+ years. Setup up lunches or breakfast before work. Go on walk breaks together. Participate in lunch and learns.

Money

Congratulations, you now have a steady paycheck. Here are some suggestions about managing your money.

  • Be generous, give to your church and other no-profits (same with your time too)
  • Enroll in the company 401k program as soon as possible and put in the maximum. The company match is free money and time + interest/investments matters.
  • Avoid debt! Pay off your student loans as soon as you can
  • Save!
    • Build up an emergency fund to $1,000 then save for a house, car, repairs and fun. [See Dave Ramsey’s advice][https://www.daveramsey.com/dave-ramsey-7-baby-steps]
  • Consider signing up for Acorns or Coinbits for crypto (I haven’t personally use either).
  • If married or getting married soon, consider pretending your wife (or yourself) doesn’t make money. Save that money. This will enable your spouse to stay at home with children when they come, if you choose.

Productivity

Productivity doesn’t always mean typing code. Sometimes the best code is code that isn’t written. Take time to think. Write unit tests to prove your code. Use small Git commits and don’t be afraid to throw away bad ideas. Take a walk and think. Automate anything you can.

Ponder this: "Improving daily work is more important than daily work" ~ Gene Kim in the Phoenix Project.

Stay focused. Avoid the temptation as much as possible and avoid social media and the news, etc. Some is ok, but there’s a limit. Balance conversation time with co-workers. It’s an important part of culture to be sociable and get to know each other and build trust, but too much is using up valuable time.

Stay in the [flow](https://collegeinfogeek.com/flow/) as long as you can. The Pomodoro technique can be very helpful.

Document “tribal knowledge”. This helps people find information without having to interrupt others flow. I’ve found OneNote to be a great tool. Think about other new-comers coming after you and yourself in a week when you’ll forget. This builds into an important resource over time as more people add to it. The hardest part is keeping things up to date.

Meetings aren’t always a waste of time, even if they seem to be at times :-).

Always try to keep the business goals and values in mind. 

You are creating software systems to help the business (or non-profit goals). This helps you remember that it isn’t always about writing code. Thinking about the bigger picture will help everyone.

Persistence and Working on things that aren’t “fun”

I’ve worked with Anup for a few years. He’s a great example digging through countless bugs. I wouldn’t thing of this as being “fun”, but he keeps a positive outlook and a smile on his face. He said “Being patience, sometimes a lot of us gets frustrated and we keep on doing the same thing without reading it thoroughly or not understanding properly, like for example there could be one line of code that is messing up the whole thing. Also, feeling of asking for too much help or thinking about taking other peoples time can be intimidating. Being patience by deep breathing and looking into deeper picture can be really helpful”.

Focus on the basics

In sports, you first learn to throw and hit. Form and technique is extremely important for musicians and sports players to become experts.

Focus in on CSS, JavaScript (learn JS, don’t start with Angular/Vue/React), C#, DevOps and Data. These foundations will serve you well for your full career.

The process of creating software is another important topic. Agile, DevOps (continuous integration and delivery, automated testing, teams working together, etc)

Start a "journal" of what you're working, challenges you overcome. It will make your 1 year review much more easier in May 20201. 

It’s also really nice to look back after years of work and see all you’ve learned, struggled with, overcome and what projects you’ve worked on. I keep mine in a personal OneNote document. I then copy/paste and summarize into an email for my review. This year I created an article 2019 that is an example of things to record.

Here’s my workshop on getting started with unit testing to help you get started.

Top Podcast and Book Recommendations

Again, please checkout my resources page. Here’s a more focused list (that is probably still too long). I’m known to recommend books. Remember don’t get overwhelmed!

  • WeeklyDevTips from @ardalis - 5 to 10 minute segments start at 0 and work your way through them.
  • The Unicorn Project - Gene Kim
  • The Art of Unit Testing - Roy Osherove
  • The Phoenix Project - Gene Kim
  • The Pragmatic Programmer
  • Clean Code - Uncle Bob Martin
  • Clean Architecture - Uncle Bob Martin


Watch the Story for Good News
I gladly accept BTC Lightning Network tips at [email protected]

Please consider using Brave and adding me to your BAT payment ledger. Then you won't have to see ads! (when I get to $100 in Google Ads for a payout, I pledge to turn off ads)

Use Brave

Also check out my Resources Page for referrals that would help me.


Swan logo
Use Swan Bitcoin to onramp with low fees and automatic daily cost averaging and get $10 in BTC when you sign up.