Showing posts with label Professional Advice. Show all posts
Showing posts with label Professional Advice. Show all posts

What are some traits/practices of experienced/good programmers that every beginner programmer should know… by Ken Mazaika

What are some traits/practices of experienced/good programmers that every beginner programmer should know… by Ken Mazaika

Experienced programmers do 29 things that every beginner programmer should know.

If you want to level up as a programmer, you should pay particular attention to #15 and #29.

1. Use Google very aggressively. You need to know how to phrase search queries, review other developers’ code, and apply it to the problem that you’re trying to solve.

2. Maintain an obnoxious amount of stick-to-itiveness. Veteran programmers embrace the experience of being a beginner with new technologies and teach themselves on the fly.

3. Acknowledge that micro-decisions matter.For example, things like naming variables, calling functions, naming CSS properties, using a hash vs using an array, and other seemingly small things can have a big impact.

4. Acknowledge that most major decisions don’t matter that much. Experienced developers roll with the punches and avoid the flamewars that other developers often find themselves in. They’re quite zen-like.

5. Always use the right tool for the job. There are so many different open source libraries, tools, and frameworks out there. Experienced programmers know what to use for each problem that they encounter.

6. Understand that code is cheap. You need to be ok with scrapping hundreds of lines of code to do things in a different way.

7. Evaluate technologies based on all their merits. For example, I’ve been bullish on Elixir. It has wonderful syntax, an amazing community, and a bright future. But it’s so new that if you want to actually build complex features, you’ll have a harder time finding open source technology to make your life easy. You need to take all of these factors into account.

8. Say “I don’t know.” There’s no quicker way to waste your time as a developer than to refuse to acknowledge what you don’t know.

9. Always analyze the clues found in error messages. Traditional education has taught us that failure is bad. Error messages are often associated with failure. However, good programmers know that these messages are actually clues that lead you down the path to the right solution.

10. Know the difference between a premature optimization and a show-stopping optimization that NEEDS to happen. They know the right time to write code that’s a bit more confusing, but will be faster.

11. Take responsibility for your mistakes.Mistakes will happen. Especially when working on a team. It’s a waste of time to pass off the blame because typically there are multiple parties at fault.

12. Become a power-user of your development tools. If you spend a good percentage of your time coding in a specific environment, you should know exactly how to control it.

13. Know how to use Vim (at least a little bit).You need to be capable of at least muddling your way forward using this text editor.

14. Never accept freelance work in an unfamiliar technology. A big part of freelancing is estimating how long things will take. Don’t put yourself in an awkward spot by projecting time for something you don’t already know.

15. Don’t count the number of hours.Unstoppable programmers spend their time doing deep work (as opposed to shallow work), and they understand that the number of hours spent working don’t actually matter.

16. Absorb massive criticism with ease. You need to develop the ability to react rationally and logically when your code gets torn apart.

17. Pair program with people with more experience. There’s no faster way to learn to code.

18. Always code review your own work first.Before you issue a pull request on Github, you should review the code and pick it apart as if it was written by someone else.

19. Recognize that the hard part of freelancing isn’t writing the code. It’s everything else.Sales, marketing, customer support, quality assurance, and product management will all take up a lot of time.

20. Identify and resolve bigger issues. The best programmers think beyond the immediate issue at hand and know how to deal with problems in a way that leads to more long-term solutions.

21. Dive into large open source projects to bring your features to life. Impossible is nothing if you know how to monkey patch a solution.

22. Skip a lot of meetings. Your company pays you to write code. Not to talk about writing code. When meetings get out of hand, it’s ok to start skipping them. People will appreciate your time more if you start doing this.

23Know when it’s time to give back. There comes a time when you need to start giving back to junior developers, just like your mentors did with you.

24. Be capable of writing bad code. Sometimes, it’s ok to become a Duct Tape Programmer.Over time, you need to figure out when it’s acceptable to take a shortcut and when it is absolutely needed. This is one of the most difficult skills to learn.

25. Let other people know that you’re working late without being a jerk. If you’re the last one in the office, just send an email to someone with a quick update. People generally notice the timestamp.

26. Act as a leader, not a boss. Bosses are people who have people work for them. Leaders are people who other people follow. Be a leader.

27. Go play foosball. In the long run, building relationships with other developers (and people in other roles) will be more valuable than shipping a feature in a tighter window.

28. Learn under pressure. You need to know how to navigate a situation in which a system has gone down and you’re responsible for getting it back up. Even if you don’t know exactly how to solve the problem.

29. Move fast and break things. Don’t let perfect be the enemy of good. Mistakes are often the best learning opportunities. So don’t treat your mistakes as failures. Instead, treat them as learnable moments and know that fighting through them is critical to your growth as a programmer.

Programming, like many things in life, is often more about the work you put in that your actual know-how. So, if you’re a beginner programmer, just get coding, and try to start implementing these practices into your routine to better your craft.

Dive a lot deeper into each of these 29 traits to learn how they can make you a better programmer by checking out this blog post: 29 Behaviors That Will Make You An Unstoppable Programmer

Is it true that Indian software engineers are considered very bad hires in the USA?

This is a very sensitive topic which I will try and approach with as much tact as possible and still leave you with something actionable. I am guessing the stigma you are referring to is probably being exasperated by the hundreds of resumes which pile into every job ad from candidates still in India, with not much experience, and no work rights in the USA?

The advice below is specific to candidates not currently in the USA or recent arrivals with no local work experience. If you already have local work experience nearly all the tips below do not apply.

Firstly I will put this out there. Some of the very best hires I have ever made were recent immigrants to the country or people relocating for the first time. One thing they all had in common was they put a lot of effort into differentiating themselves from the stream of resumes that came in from their home country.

If you feel you are being silently discriminated against I have a number of tips you can follow below. These are not meant as an attempt to trick the resume screener but will make sure your resume makes it through all the simple screening rules people use. If you make it through this initial screen then they at least have to read about who you are and what you have done before declining your application:

1. Get a local phone number

Many recruiters will bin resumes that have an international prefix without reading anything else. Skype and and many other VoIP services will give you a local number. In countries like Australia, which has a different prefix for mobile/cell vs landline, I recommend not putting your VoIP phone number on the resume. Recruiters are catching onto this trick so are binning resumes which only show a landline.

2. Leave your home address off the resume

It is highly unlikely that anyone is going to mail anything to your home address. Also don't put a fake address in the USA if that is not actually where you do live. Best to just leave this blank.

3. Get a native English speaker to read over your resume

Without seeing the name, address, or anything else I can nearly always tell that English is not your first language based on how you write. A native English speaker can help you fix any grammatical errors in your resume so it flows better.

4. Skip the cover letter

There is plenty on Quora about if anyone even reads these but for candidates who do not have the strongest written English it is difficult to write a custom one for each application. Best to leave it out and get them to focus on your resume.

5. If you have a work visa put that at the top of your resume

If you already have a H1B or other work rights make that as obvious as you can. If you do not have any work rights in the USA and have to get a H1B these are very hard to get so only a tiny portion of companies will want to go through that process.

6. Apply direct to the hiring manager

If you know who the hiring manager is, or have a good idea who it might be, find their email and make a direct pitch. If they like what they see then they will forward it down to the recruiter to do the first interview.

7. Spend as much time as you can speaking English

I always cry when I get an amazing candidate who has done extremely impressive stuff but their written and spoken English is clunky. Most clients I recruited for would be OK with average English but below average almost never makes it. On the other hand I am constantly surprised by how well some Indian candidates speak English. They would be easier to understand than many Australian's like me who have a rather broad accent (think Steve Irwin). If you don't speak English at home I recommend switching over to it so you can keep working on your accent and comprehension.

8. Get on a plane

Fly to the USA and make yourself available for 4 weeks of interviews. This way companies wont feel like they are taking too much of a gamble on you if you are able to turn up with 24 hours notice for interview vs having to fly you in.

9. Come to Australia

Australia has a much more open immigration policy. Our employer sponsored 457 visa and permanent resident visas are very easy to get if you have the right qualifications. If you are a software developer it is not a problem at all getting sponsorship. Spend 5 years here and you can get your citizenship then if you want to go to the USA you can use the E3 visa which is similar to the TN visa Canadians use.

Final Thought:

I am a huge believer in increasing diversity in the workplace. It is the easiest hack you can make to massively increase your candidate pool. As a candidate, if you jump through lots of hoops and the company still rejects you because of your ethnicity then why would you want to work there anyway? There are plenty of amazing companies out there who celebrate diversity and actively seek it out. These proactive companies are the ones that have a strong future and are where you can really thrive.

by Adam Seabrook https://www.quora.com/Is-it-true-that-Indian-software-engineers-are-considered-very-bad-hires-in-the-USA/answer/Adam-Seabrook?srid=ndBp&share=8c5dbb26