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
- 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
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"
- Reading DZone articles on Java, software design, architecture, and OOP for 20-30 minutes a day
- Repetition and habit matter
- 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
- Gives deeper insight into specific technologies or topics
- 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
- Become an expert in core practical skills such as transaction management
- Master the essential concepts and skills used often in practice
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
- 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
- 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
- Developing the ability to learn continuously and efficiently is important
- 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
- 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 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
- 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
- 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
- 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
- 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
- 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
- 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
- Programming
- List of programming languages
- Software development process
- Korean: 소프트웨어 공학
- Prompt engineering
Favorite site
- Programmer - Wikipedia
- Programmer - Namuwiki - just for fun... <- also has a nicely organized breakdown of types (fields).