Category Archives: Advices

5 Habits of Highly Successful Software Engineers

5 Habits of Highly Successful Software Engineers

There are multiple ways how software engineers can achieve a successful career. Some can be early employees at Google while others can be a life-long employees of IBM. Some can build side projects while other can get equity. But there are only five common habits and traits:

  1. LEARN: Find balance between learning and doing. Have a solid knowledge of fundamentals either from college degrees or from educating yourself with books and online courses. Constantly apply your knowledge to practice.
  2. WORK: Find balance between productivity and rest. Consistency in productivity is better than burnout.
  3. CONTRIBUTE: Learn the business side of things. Produce highly valuable products which are useful for customers and beneficial for the business.
  4. INNOVATE: Invest in a forward-thinking technology that a reasonable person would expect to become more in demand and desirable over tie.
  5. THINK LONG-TERM: Treat others with respect, honestly and fairly. Think and act long-term. Contribute to open source or teach because it helps you and others.

Programmer vs. Software Engineer vs. Software Developer vs. Coder

Programmer vs. Software Engineer vs. Developer vs. Coder

Hello everyone! In this post, I want to contrast the terms with which other people and we ourselves call us. There are a lot of confusion around the names for our trade. People use terms such as software engineer, software developer. Some people even use programmer or coder, etc., etc. And some event go as far as ninja, guru, or rock star. So let’s take a look at the differences. Of course, it’s all just my opinion but I’ve been in this industry for 15 years. I know a bit or two. So let’s go ahead.

Continue reading

5 Reasons Programming is Awesome

5 Reasons Programming is Awesome

Let’s start from the smallest to the biggest five reasons why programming and software development is awesome.

The reason number 5 (smallest) is programming can pay really well. The average income in the USA is somewhere along $50K per year per household. Programmers typically starts their careers with $80K/year salaries. In major metro areas the salaries are way higher than that. They can easily be in the $120–150K/year range.

The reason number 4 is that you are never bored. There’s always something new. Sometimes new technologies come out before you even release your product. Thus, you are never out of things to learn and update. A lot of people are bored out of their minds at their jobs. Most of them perform the same mundane tasks for 5, 10, 15 years… Not you. Lucky you! Programmers can always grow, learn and master the skills by learning and seeking more challenging problems and solving them.

The reason number 3 is that it’s a real career. Some jobs are not careers. Avoid them. For example, a taxi or an Uber/Lyft driver will always be a driver. A Denny’s waitress will always be a waitress even after 40 years at her job. It’s a dead end. Avoid it. A lot of programmers start as junior developers/engineers, then they progress to associate developers. This could happen in as short as two (2) years. After that, some of them are promoted to senior developers in as short as 3–4 years. That’s not all. The path continues to principal, staff engineer, architect, manager, director, vice president of engineering and to CTO. A lot of tech companies have engineers as their senior leaders, e.g., Microsoft, Google, etc.

Continue reading

My New Book Concept and Top Qualities of a Good Software Engineers

My New Book Concept and Top Qualities of a Good Software Engineers

Packt Publishing reached out to me and offered to do a book.

They pretty much want me to do any book and pre-agreed already. They gave me carte blanche on the topic.

(More or less, I doubt I can convince them to publish a vampire thriller set in a Silicon Valley startup.)

Funny thing is that I know the editor. He worked at Apress Media when I published my first book Practical Node.js with them.

I submitted to them my idea about a software engineering career book for junior developers. They liked it. It can become a book!

While thinking about the career in software engineering, I thought about top skills.

As in any profession, software engineers requires a combination of certain skills and techniques.
I’ve done software engineering for over 15 years.
I taught total beginners (in Hack Reactor) and professionals (in Fortune 500 companies).

The most important skill in a good software engineer is not smarts. No. It’s not how good he can write code.
It’s not soft skills either

Continue reading

Born vs Made Programmers

Born vs Made Programmers

Are programmers born or made? It depends. In 2010s, programming is so much easier than it used to be in 2000s. More and more gurus and dev bootcamp founders proclaim that programmers can be made.

I won’t say programmers are made. My answer: it depends. Instead of thinking programmers are made, utilize whatever belief is more useful to you.

If you are starting on the programming path later in your life as a second (or third, or fourth) career choice, then thinking programmers are born is detrimental! Why would you do such a thing?

Think and truly believe that programmers are made, if you want to succeed as a programmer. That’s because every time you encounter an issue, you’ll be inclined to work through it when you think that NOW you are a programmer.

On the contrary, you will be more successful thinking programmers are born, if you has been programming from your teens and programming is the only career you ever had. The reason is when you encounter a problem, you’ll be forced to find a solution because that’s what you do. You are a programmer and alway was. You have to come up with the answer because you are a programmer. You’ll value your job and think it’s your missing to write great software, because you won a lucky lottery.

If we dig deeper, programmer are not born. No one in the hospital looks at a child and says “congratulations, that’s a programmer”, “you are luckliy, that’s a QA engineer”, “sorry, that’s a designer”. No. Most likely it’s a dumb luck. The kid got a computer as an early age and tried programming and liked it. Then he got more experience and made himself into a programmer. So born is actually made just at an earlier age.

In any case, think and believe whatever is more useful to you in your career and life. Not what someone else tells you.

Why Blockchain is the Future, What is Bitcoin and How to Invest and Short It and Why Ethereum Is Better than Bitcoin in 1000 Words or Less

Bitcoin shorting on Kraken

Bitcoin price was rising like a crazy and that’s why more and more people are interested in it. I did my informal survey every time I was at a restaurant or taxi by asking waiters and taxi drivers if they invested in Bitcoin. Most of them said no or “what is bitcoin?”, so this article is for them.

Continue reading

7 Tech Job Which Don’t Require Coding

7 Tech Job Which Don't Require Coding

Technology is the fastest growing sector in the job market. Software, cloud and automation replace traditional jobs of factory workers, secretaries and service workers. Software and technology companies are the most valued by the stock market and investors. Founders of these companies are one of the richest people in the world. Startup founders and nerds are new role models for kids.

But what if you are not coding prodigy like Mark Zuckerberg or Bill Gates who started coding in their teens. What if you don’t really enjoy coding that much or maybe you are more of a peoples or a liberal arts type of a person? Do you prohibited from a tech industry? Most people don’t know that they are plenty of jobs in the tech industry which do not require coding.

Of course, you cannot be a clueless pumpkin and know nothing about tech. You still have to be technically literate and know what is a database or an API is, but you’ll mainly be leveraging your existing skills from another industry, not starting from a scratch learning coding. (Learning coding when you are in 50s are still possible. I saw it happen a Hack Reactor where I taught. But let’s admit, on average the wits become duller with age, not sharper.)

Here are seven (7) such jobs which do not require coding or deep technical expertise but can be interesting, fulfilling, and well-paid.

  1. Program Manager
  2. Product Manager/Owner
  3. Scrum Master
  4. Designer
  5. User Researcher
  6. Recruiter
  7. Tech Writer

Let’s me give you some brief insight into each of them.

Continue reading

Ideal Technical Interview for Software Engineers

Ideal Tech Interview for Software Engineers

Here’s an ideal I strive to achieve when I conduct technical interviews for software engineering positions.

  • I start with introducing myself
  • I provide a take home assignment instead of making people perform coding at the interview and, what’s even worse, on a white board instead of a computer.
  • I ask attitude questions more than skill questions to see if a person has the right mentality to learn and solve problems instead of just knowing certain skills. There’s a good book called Hiring for Attitude.
  • I dig deeper into what exactly the candidate’s role were in his/her prior projects.
  • I ask questions which are closely related or mocking the real work situation for this position. For example, a member of the Capital One Tech Fellows Program is often asked why X is better than Y or what framework should we use in our new project.
  • I leave enough time at the end of the interview to answer candidate’s questions about the role, team and the company or anything else they want to ask
  • I say a few things to create enthusiasm in this role and possibilities

In an ideal tech interview, you would just skim through the candidate’s code on GitHub, chat about recent happenings around the tech you use, and talk about life. That’s it. You don’t even need a resume in most cases. LinkedIn has the job history and GitHub (or HackerRank) is a living (almost fool-proof) evidence of the skills.

 

On Managing: The Main 3 Areas to Focus On

The more I work in tech, the more I see the most successful management being at the core about these three separate and often conflicting areas:

  • Company: Contributing to your companies bottom line by understanding the business value and long-term strategy
  • Customers: Taking care of your costumer by delivering product they want and love
  • Culture: Growing your engineers as well as positively impacting engineering culture in the company as a whole

At the intersection of these areas, there are two often conflicting axis which create a healthy push and pull if used with a right balance:

  • Short-term vs long-term, e.g., delivering projects on time vs. doing what will scale better in the future
  • Us vs. them, e.g., caring about your team vs. company or the entire engineering population

A good manager in the information-based working environment will find a way to combine the aforementioned areas and axis to form a win-win situation. It’s not always possible, but I find that it’s possible more often than not when I just push a little bit more and don’t give up early, when I try to come up with just one more creative solution.

PS: To continue musings, there are two books on the topic worth mentioning. I wrote a short summary on one of them which is called Managing Humans. I really liked that book, but recently I read another book called The First-Time Manager which seems to be the source of inspiration for Managing Humans, to put it mildly. I’m not accusing the author of Managing Humans in plagiarism, but I had a strong feeling of deja vu. It felt like Managing Humans borrowed the outline and a lot of ideas and concepts from The First-Time Manager. Interesting…. So go for “original” (The First-Time Manager). It’s not as specific and tailored to software engineers but a useful perspective. Then follow up with The 48 Laws of Power for a completely different view. :)