Skip to content
Search

Programmer

lastmod 2025-12-08created 2024-12-052 edits

INFORMATION

Let's mainly cover topics like how to grow as a "developer".

In computing, a programmer is a person who does computer programming. Programmers design the logic or algorithms of computer programs, write the programs, and test them. Some of them can be regarded as software engineers, computer scientists, or hackers.

Ada Lovelace is regarded as the first programmer in history. In October 1842, she was the first person to describe an implementation on Charles Babbage's Analytical Engine computer as an algorithm.

People skilled in computer programming sometimes become famous, but this attention is usually limited to the software engineering community. Many prominent programmers are often called "hackers". Programmers take many forms. Professional programmers usually work at large IT companies or small service companies. There are various certifications for this.

IT programmers usually work at or found companies in the IT field. They build programs and can give the first trial version to beta testers to check for errors. Then, if no errors occur, they can sell it in limited form as an alpha version. If users also run into no problems, they can sell it as the official version. Some people think it is enough to consider only lightweight programs and learn simple coding, but to become a capable programmer you must study and deeply understand various programming languages, mathematics, computer science theory, and so on.

Technical debt

See Technical debt.

How can I grow as an engineer without good seniors to learn from?

  • A junior data engineer at a small company in the oil and drilling industry
    • Hired as a freelance data engineer 6 months ago; recognized for the quality of their work, they now act as tech lead, responsible for the project's design, implementation, and hiring
    • Since the company is not a tech company, there are only a few tech-oriented coworkers, and they rarely interact with them
    • Reports directly to the company's director, a great person with over 40 years of experience at a large global oil and drilling company
  • But feels strong FOMO because they are not learning many technical things from coworkers or seniors
    • Doing their best to learn by studying design principles on their own and getting code reviews from chatGPT, but fears that without rigorous peer review they won't produce software that meets the industry's best standards
  • Asks for advice from anyone who has been in a similar position

Summary of the top-voted answers

humanfromearth9:

  • I'm talking about software development, but other domains are probably the same
    • "Read a huge amount about the technologies you use"
  • When I started working, I made a habit of reading tech articles every day
    • Reading DZone articles on Java, software design, architecture, and OOP for 20-30 minutes a day
    • Repetition and habit matter
  • Focus
    • Try to fully understand everything
      • Don't skip parts you don't understand; dig deep into the content
    • Critically analyze the article's topic
      • Figure out what the author is trying to convey
      • Think "What would I have done if I were the author?"
      • Apply what seems useful yourself, and think about how to overcome its limits
  • Occasionally, study in depth by reading IT books, not just articles
    • Gives deeper insight into specific technologies or topics
  • And go further by comparing and exploring technologies
    • Explore how OOP patterns can be replaced by FP patterns
      • Understand the similarities and differences between OOP classes and FP closures
    • Compare the differences between paradigms and broaden your technical perspective
  • Also, strengthening basic practical skills matters
    • Become an expert in core practical skills such as transaction management
    • Master the essential concepts and skills used often in practice
  • "Applying the theory you learned in practice" is the key

iepathos:

  • I was in a similar situation early in my career
  • Actively contribute to well-known open-source projects
    • Picking a project you already use lets you take advantage of your familiarity with it
    • Try to submit high-quality PRs (Pull Requests)
      • This gets you free code reviews from some of the best engineers in the world
      • The review process gives you huge learning opportunities, and your code gets used by thousands to millions of companies
    • Open-source work is a great way to gain hands-on experience
  • Find areas where you feel weak and study them intensively
    • e.g., networking, DSA (Data Structures & Algorithms)
    • Study the topic and practice hands-on until it no longer feels like a weakness
    • If you have a team, your team lead or manager can assign work that naturally makes up for your weaknesses
    • If you have to learn independently, you must identify your weaknesses and overcome them yourself
  • Always do your best at work
    • Do your best on the tasks you are given
      • This is a basic attitude anyone can have, but practiced consistently it becomes a habit that leads to success
    • If you make an active effort, you can build a foundation that leads to success in any environment

vinay_ys:

  • Important lessons for sustainable growth
  • Learn how to learn effectively
    • Developing the ability to learn continuously and efficiently is important
      • Technology changes fast, and you often have to explore different domains following the market and your interests
      • This cuts both ways
        • Blessing: even if you start late, effort and intelligence can get you into the top percentiles
        • Curse: even as your career grows, you have to keep learning new technologies
    • Build a sustainable learning strategy to adapt flexibly to market changes
  • Hone non-technical skills
    • Non-technical skills compound over time (true of both good and bad habits)
      • Self-discipline, clear thinking and expression, professionalism, reliability, taking care of physical/mental health, being someone others can depend on, a growth mindset, adapting successfully amid ambiguity and uncertainty, etc.
      • Communication skills: effective collaboration, giving and receiving feedback, mentoring and coaching, working with people at different levels (superiors, subordinates, peers, etc.)
      • Read a lot to develop mental models and hone problem-solving, strategic trade-off, and decision-making skills
  • Learn about the above on your own, and draw lessons from observing how people behave
    • Build insight by reading books and talking with strangers on forums (like this one)

Hacker News comments

  • Warning signs for a junior data engineer
    • The company may see a junior as cheap labor
    • Being hired as a freelancer may mean working without benefits
    • A junior may not be qualified enough to serve as tech lead
    • Taking responsibility for a project's design, implementation, and hiring carries the risks of a one-person team
    • At a company with few tech-focused coworkers, the budget may be limited
  • You can learn from everyone, and learning independently is important
    • You can learn from everyone around you, and you can learn independently through the web
    • Don't rest easy thinking someone will prevent your mistakes or solve your problems; taking responsibility and learning is what matters
  • Shares a positive experience of their own position
    • Enjoys a high salary and a good work environment, and is supported by the company
    • Is not being exploited, and wants to make this clear
  • Should consider opportunities to grow in the current position
    • Pursuing high-profile projects at a FAANG company is good, but doing better work in your current industry can also be interesting
    • Learning from senior coworkers can vary depending on the situation
  • You can learn independently even without a mentor
    • It is important to learn algorithms and neural network theory, write small programs, and pursue simplicity
    • You should take part in open-source projects and put side projects on GitHub to develop your design skills
  • Online communities and blogs can speed up learning
    • You can learn by using online communities such as Reddit, Discord, and Stackoverflow
    • You can start a blog to record what you learn, and attend conferences to broaden your knowledge
  • The experience of making technical decisions and evaluating their results matters
    • Making many technical decisions and evaluating their results was a valuable experience
    • Evaluating their own decisions gave them insight and earned them respect at a new job
  • Moving on in search of a better environment can be important
    • If you are the smartest person in the room, it is important to move elsewhere and gain experience
    • Even at a company with good senior engineers it can be hard to find a direct mentor, but you can grow through experience

See also

Favorite site

author Zer0 sitemap