From Curiosity to Career: A self-taught journey of a programmer
Ever felt like taking a road less traveled? Well, I did just that. Unlike the typical approach of learning through classroom lectures that most people envision, my journey followed a different path. Such challenges are all about diving headfirst into the world of unknown, armed with nothing but a heap of curiosity and a stubborn approach to figure things out on your own.
This article is not about selling myself in any form. This is my real, down-to-earth story about learning the hard way, celebrating small victories, and sometimes, just winging it. I’m here to share the ups, the downs, and everything in between, in the hope that my experience might provide some insight or guidance to anyone pursuing their own path. This writing will retain the flavor of a programmer’s perspective and may be oriented for those who are considering software development as part of their life.
So while this article is not for everyone and I do understand that your current path, position and circumstances may be way different from mine, I really hope you find inspiration and courage to pursue the changes you may have been desiring about, whatever they may be.
Where do we start?
It’s been nearly 4 years since I discovered what I am about to become. Well.. at least believing in it. Gaining experience in every possibility that has been approaching me in the path of growth is what I have become now — a confident mobile applications developer with a bachelor’s degree in Information Systems. I have experienced working in different projects with various clients and teams, learning alone and with others, and teaching my future colleagues while also being able to maintain a balance between work and life. Every interaction with professionals of their field has given motivation to become one at some point in my life.
It can be very accidental to encounter what could suddenly shape your life in a different way. Just before I stumbled upon the world of software development, I found myself trying technical support or IT administrator roles, and doing related tasks. It wasn’t a random choice — Information Systems program at my university had a hand in it, not to mention that my dad being an IT admin as well. It seemed like the most straightforward path into the Information Technology field, given the circumstances.
To set up new workstations, tackling printers problems, guiding people on through software and hardware issues, remotely configuring Windows ADs, touching network setups, and so on. Well, it should have been pretty easy and pleasant job to do. (Un)fortunately, I have been in Apple’s ecosystem since 2010. Taking a 10 months internship in IT B2B tech support company and me still wanting to bring a Mac ecosystem into a place where everyone administer and work with Windows systems. The internship was not a mistake — rather, an experience that contributed significantly to better understanding myself.
A careerist approach
“Over time, I realized that most of my goals are imposed by society, family, friends, colleagues. Hence, I wouldn’t be any happier after reaching them.”
You’re not alone if I mention that my parents, too, hoped I’d choose a career that promised a high income. As my professional career has progressed, I have come to realize that society often equates success with financial wealth. Yes, you cannot deny the fact that it is important to choose a progressive and rewarding career path. Yes, you cannot deny that a good salary is a reward that helps build home, buy a newer car, plane tickets or Airbnbs. However, when it came to navigating my own journey, I often found myself feeling isolated from mainstream ideas of wealth and strive for the wealth which is really worth fighting for — being recognized as a skilled professional.
A “skilled professional” does not scream satisfaction. Or does it? Where’s “I am passionate about my job”? Exactly. This finds its way when you genuinely derive pleasure from what you do. It is that moment when your daily tasks become more than just responsibilities, they become a source of excitement and purpose. When your job aligns with your values and interests, passion naturally follows suit. It happens not to be about showing up at your desk and waiting for work to end anymore, but about eagerly embracing each day’s opportunities.
Passion in your work can fuel creativity, drive, and a deep sense of accomplishment. The feeling that keeps you motivated even when faced with hurdles and setbacks. A similar feeling I felt just two months after discovering my path towards becoming a software developer.
I wrote the following note for myself back then:
I’m truly delighted to have discovered the field I’m passionate about. Looking back, it’s clear that IT administration didn’t ignite the same enthusiasm I now feel. It was a path marked by various setbacks, lacking inner motivation, and driven more by a desire for a job title than genuine interest.
I feel how it develops originality, analytical, observation skills, creativity in me. Now, this really encourages you to create and change, which is quite different from how I used to approach my earlier desires for learning and career pursuits before.
2020 January 21
It is expected to be THAT way
Everything comes to taking consistent and tactical steps.
Yes, consistency is the key. Consistency builds habits and determination. Habits of willingness to learn. But without the feel of motivation, there won’t be any. You just have to genuinely feel interest in the field and be driven by motivation of becoming better within each task towards the goal. They provide direction and purpose.
But remember — goals have to be realistic as you are not going to make a fully functioning software application overnight having only three months of programming experience, especially if you are learning at the university at daytime or doing some part-time job. Too ambitious may lead to frustration and lack of motivation. Be sure to consider and evaluate your knowledge, capabilities, available resources, and time constraints.
So it is crucial to have a clear understanding of your long-term vision. Begin by identifying the challenging areas where you want to introduce more consistency. What do you want to achieve in the next few years? In my case — becoming a recognizable and skilled (more about soft and hard skills later) developer.
Notice, how I don’t mention “failure” anywhere. Failure is not what to focus here exactly, as it is a part of “trial-and-error” — a fundamental method of problem-solving characterized by repeated, varied attempts. When learning, you must give yourself a chance to fix the “errors” because you are expected to make mistakes. Even in junior software developer jobs they always give an opportunity to provide a better result next time. The journey towards consistency and improvement begins also with acknowledging that setbacks and mistakes are a natural part of the learning process. It’s like navigating a complex maze — every wrong turn teaches you something new about the path to the exit. In software development, such an attitude is invaluable.
Your learning path often involves a blend of formal education, e-courses, personal projects, and real-world experience. Each of these elements plays an important role in shaping your skills and understanding. E-courses, for example, offer a structured approach to learning new programming language, technologies and frameworks. I personally started developing my software projects as soon as I had completed 40% of the e-course (2–3 months). In reality, your own input to testing your boundaries (e.g. personal projects) is where your creativity and problem-solving skills shine. It allows you to apply what you’ve learned in a practical setting, experiment with new ideas, and learn from your mistakes in a low-risk environment. Whether it’s developing a simple app or contributing to an open-source project, each project finds its place in your portfolio and showcases your technical skills to potential employers.
Starting to learn software development is a significant step, and it’s essential to be realistic about how long it takes to become job-ready. If you’re just beginning, aim to give yourself at least a year to learn and practice. Typically, it’s after a year of focused learning that entry-level or junior roles become more achievable. Trying to get into a professional position too soon can be tough, as you might not yet have the depth of knowledge needed to handle real-world challenges effectively. Patience and consistent effort in this first year are crucial. They help you build a strong foundation of skills, which will make you more confident and better prepared when you start applying for jobs.
Where to find motivation
Being a 3rd year student at my university and not having any career-oriented job that I would love to work at got me really worried. But let me tell you that a number of skilled professionals started their careers without a clear direction but found their way through exploration and self-discovery. Finding yourself means trying various activities, talking to people on different ideas, searching for topics and areas to delve into. It is up to you how much effort you put for yourself to succeed.
It’s essential to understand that starting to learn anything new in an unknown field is just a beginning and you may even find yourself not wanting to do that anymore later on. Resist becoming disheartened if things don’t work out immediately. If you are not patient, programming can become really frustrating these times. It’s common to spend hours debugging code, only to discover that the issue was a simple typo all along. Making sure that you have chosen the right career for you is part of the whole process.
Just in case.. you find yourself not interested or motivated in the field, there are also numerous similar roles, such as UX design, data analysis, or even project management, that may better suit your needs. Always reflect on what aspects of your studies or any side projects you have enjoyed the most and find what aligns with your interests and strengths.
Some find motivation in structured environments, like internships or part-time jobs, while others do well in more flexible, project-based learning (remember the “trial-and-error” approach?). Embracing that individuality means that what works for one may not work for another. And I will not hide the fact that I was feeling left alone and in need of some helping hand during the development of first projects. While this is optional, I suggest you to consider exploring mentorship opportunities. A mentor, who can be a senior student, a professor, or a professional in a software development field, can provide guidance, insights, and even connections that can be useful for the future prospects. They can definitely offer advice on some decisions and provide valuable support and feedback when you face challenges.
We indeed wished it was that easy, right? Maybe.
Isolating yourself from mainstream definition of success will make you a great careerist who focuses more on inner self, understands psychology-of-self values, and is motivated by personal achievements, rather than societal expectations. This can lead to a more satisfying and authentic career.
Be realistic though — the job market might feel saturated, and yes, there are many others in the same boat. But instead of treating them as competitors, take a look at yourself and find out what you could bring to the table. How you can become a beneficial member of any team, any product or project? To stand out in such a crowded field, it’s essential to finding what would help you differentiate yourself and add a unique value. Whether it’s mastering a niche technology, developing exceptional communication skills, or cultivating a creative approach to problem-solving, identifying and nurturing these qualities can make you a standout candidate and a valuable asset in any professional setting.
Bridging the Gap Between Present and Future
Regardless of whether you’re a student or a salesman, your current work position is of little significance. Achieving your goals is less about your present professional field circumstances and more about interest in shaping your future.
Consider, for instance, if you’re engaged in a part-time job, you might allocate your week as follows: three days for work, three days dedicated to learning, and one day reserved for rest. Alternatively, if you’re in a full-time job, you could set aside two to four hours every evening for e-courses and personal side projects. And while the initial phase may be challenging, you’ll find that over time you become more efficient, gradually needing less time for basic tasks as your skills and proficiency grow. At this phase, it is important to be able to focus and find all the things that motivate. Unfortunately, if you don’t have a good work ethic, then software development might not be the right career for you.
The tech industry, in particular, is ever-evolving, and what may seem like a relevant skill or project today might become obsolete tomorrow. Learning involves more than just watching e-courses and rewriting code snippets from lessons. It also requires staying informed about industry trends and being willing to adapt your learning strategy as necessary. Just make sure not to forget your other activities, interests and people. It’s essential to balance ambition with self-care. Working tirelessly towards your future is commendable, but neglecting your well-being can lead to burnout, which is counterproductive. Establishing a routine that includes regular breaks, exercise, and time for social interactions is crucial. These activities not only restore your mind and body but also often provide fresh perspectives that can enhance your out-of-the-box problem-solving skills and creativity.
Work as an ideal activity to engage in
If you were to imagine an ideal place you’d love to work in, what would it be? What are the conditions you imagine would serve as the ultimate reward, reflecting the pleasure and dedication you’ve invested in your career? Is it feeling free and independent from your environment? Or a constant connection with your team, enriched by numerous off-site activities and collaborations? Is it clocking-in at 8.30 and clocking out at 17.00 (instead of viewing it as an obligation, consider it a healthy routine schedule)? Or maybe individual working time regime would suit your needs better?
Think of what qualities of a job and work environment would make you genuinely enthusiastic about your work, rather than dreading the thought of “oh, no, not again” every Sunday. Friendly colleagues? An understanding manager? Pizza Fridays? Personal work-provided hardware? Ability to work in a café? There’s so much to think about, indeed. And these are realistic expectations, not some dreamy requirements. How much you are getting depends on your flexibility, ability to achieve milestones and how long you are prepared to work towards pre-determined goals.
Consider the culture and atmosphere of the workplace. Do you thrive in a dynamic, fast-paced environment, or do you prefer a more steady, predictable setting? How about the company’s values and mission? Imagine a workplace where you are encouraged to take on new challenges, learn cutting-edge skills, and have access to mentorship and professional development programs. Envision an environment that respects personal time and mental health, offers flexible policies, and perhaps even supports remote work. Such conditions can significantly improve your overall well-being, job satisfaction and increase motivation.
Bigger teams and companies might sometimes weaken the visibility of your individual contributions. It is easier to grow more in small to medium, or even startup-level companies. Consider the impact of your work and the conditions under which you would feel recognized and valued as an important team member. Remember, your relationship with a company is essentially about how you contribute to its value. However, don’t let such thoughts discourage you. Recognition and rewards in such environments often come at a cost, requiring not just skill and effort but also strategic visibility and networking. It’s about finding ways to stand out, whether through exceptional performance, innovative ideas, or effective collaboration. Balancing your contributions with an understanding of how to navigate larger organizational dynamics is necessary for personal and professional satisfaction.
Don’t overlook the importance of evaluating both financial and non-financial benefits. Competitive salaries, performance bonuses, health benefits, and other perks can also contribute to your sense of achievement and recognition.
Explore the market to accurately determine your position and grasp the expected skills and responsibilities associated with your engineering role. Reflect on the stability and security the job offers. In today’s rapidly changing job market, finding a role that provides a degree of security can be just as important as the immediate benefits. This includes considering the company’s financial health and its position in the industry. In other words, consider if potential job challenge you in a way that is rewarding and stimulating? Does it provide opportunities for you to make a meaningful impact in your field? Making a well-informed decision requires considering all these factors to find a role that truly fits your needs and wants. If the market is tough for an entry or junior level jobs, try not to be picky and accept what’s being given as it is way easier to grow when you already have a job in software development field.
In essence, the ideal workplace is where your professional aspirations, personal values, and lifestyle needs harmoniously blend, creating an environment where you’re not just working for a living, but living for your work!
Work which arises from desire (want) rather than obligation (need), ceases to be just a “job” and becomes a positive, fulfilling part of your life.
Showcasing yourself
This part is a little bit more technical and provides insights in practice.
Acknowledging the time you put into your development and the outcomes it brings is significant. If possible, make an effort to discuss your progress or goals with your social circle, including friends and family. Celebrate your milestones with them, seek their advice and tips, especially from those who have already solidified their careers. Remember, it’s not only permissible to share your joys with others, but it can be even more rewarding to celebrate your accomplishments with people who recognize and believe in your potential.
Expanding beyond your personal network, having a LinkedIn profile is a must for displaying your professional achievements. As a platform geared towards professional connections, LinkedIn can play an important role in your job search. It’s a space where you can organize and highlight your skills and accomplishments, increasing your visibility to potential employers. Don’t even dive into the market without having a proper LinkedIn profile.
Using LinkedIn effectively goes beyond just having a profile — it’s about presenting your experience in a way that stands out. Be sure to detail the key aspects of your projects or past work experiences, focusing on those that would be an asset in your potential new role. For example, if you’ve worked as a salesman, this experience can be a key asset in demonstrating your soft skills in a new role. Make sure to highlight this point. Relate it to aspects such as responsibilities, communication, and management skills. If you have achieved notable successes, such as reaching a number of sales or effectively managing a team of colleagues, emphasize these numbers. The emphasis should be on what you’ve learned and the ways you’ve gained knowledge from your previous experiences.
I will give you few examples from my LinkedIn:
• Documenting interactions, handling and resolving incidents, troubleshooting technical issues and educating customers for a product having more than 10 millions users.
• Achieving a customer satisfaction rating of over 96% based on the assistance I provided.
I hope you are seen as a friendly colleague and have a positive relationship with your manager. If that’s the case, don’t hesitate to ask for feedback, preferably written, through LinkedIn.
Put yourself in the shoes of an employer — they want to be confident they’re hiring a valuable and competent candidate, someone whose abilities and work ethic are vouched for by others. Receiving recommendations can significantly boost your profile, increasing both your confidence and your chances of standing out among numerous applicants. These endorsements act as a solid affirmation of your reliability and your ability to effectively demonstrate your soft skills, making you a more appealing candidate to potential employers.
Furthermore, rather than using platforms where you submit your CV to numerous jobs simultaneously, consider customizing each cover letter and meticulously filling out job application forms on companies personal career pages. A personalized and individualized approach greatly increases your chances of standing out from the crowd of applicants too.
Taking the time to tailor your application shows potential employers that you have a genuine interest in their company and the specific role. Research the company’s values, culture, and recent projects to inform your application and make it relevant. Mention specific aspects of the company or role that align with your skills and experience, demonstrating how you can contribute uniquely to their team.
A well-crafted application is an opportunity to showcase your communication skills and attention to detail — qualities highly valued in any professional setting. It’s not just about meeting the job requirements — it’s about presenting yourself as a thoughtful, well-prepared candidate who is fully invested in the opportunity. This approach requires more effort, but it can significantly enhance your prospects of getting noticed and ultimately securing the job you desire.
I began my career in software development with an IT admin internship, followed by a role in customer support, and eventually landed the job I really wanted.
Keep in mind that you’re starting a long-term career, not just rushing into the first job in software development you find (which you may not even get within the first job application).
It’s important to have a clear plan for reaching your goals at a steady and consistent pace — the one that works for you.
Killing the interviews
As you progress, you will definitely be evaluated. Evaluations come in different forms — it can be part of job application process, it can be 1:1 meetings with your team-lead, or it can be a recognition from the public. But we’ll mostly cover job application process. I may not mention all the qualities you need to have prepared and all the aspects, the following should provide a brief grasp of it.
Having conducted interviews with both junior and senior software developers, and having been on the other side as an applicant myself, I’ve reached a conclusion that beyond technical skills, it’s largely about finding a vibe match, and aligning in approach and perspective to various challenges. If you resonate with their level of openness, honesty, and warmth, you’re likely a good fit. Really. I usually follow the rule of selling yourself as a skilled professional but never lie and praise the ability to be genuine.
On the technical front, aim to provide concise, direct answers. Demonstrate professionalism through open communication, while staying focused on the topic. Interviewers often ask candidates to “think out loud”. This means you’ll be presented with challenges, and as you work through problem-solving, you should articulate your thought process. This helps interviewers determine whether you keep cycling on certain ideas or if you possess the ability to think outside the box. Nevertheless, they better know where to guide you if you find yourself stuck.
The concept of thinking out-of-the-box is vital and shouldn’t be overlooked. A highly valued ability in applicants, especially in the field of software development where innovation, orientation to details, and problem solving are crucial. It can be expressed through the perspectives of creativity, adaptability, careful consideration of the consequences, or effective risk management.
Being creative in problem-solving allows developers to uncover not-so-obvious solutions, often leading to more efficient, effective, and elegant outcomes. While speed isn’t always necessary, the challenge lies in finding new methods and technologies to tackle complex issues. In team-oriented environments, it’s important to communicate these approaches effectively, be open to critique, and collaborate on exploring ideas. With new challenges come new approaches, and the ability to assess and manage risks without compromising the end-user experience is truly important.
It’s understandable that as an entry-level or junior developer, you might not yet possess the ability to foresee all consequences or provide effective risk management solutions. Typically, at this stage, you’re expected to have a clear understanding of your capability and motivation to develop these qualities over time. Employers typically look for your willingness and motivation to grow into these competencies and gain knowledge in the field. As you progress in your career, you start to learn the importance of not just solving problems, but anticipating them, understanding the broader implications of your work, and making decisions that balance innovation with practicality and risk.
In the realm of software development, while technical skills are undeniably significant, the importance of soft skills cannot be overlooked. At the forefront of these skills is communication, which is necessary for clearly and effectively conveying ideas, listening to feedback, and translating complex technical concepts into understandable terms. The skill is essential not only for team interactions but also for effective collaboration with clients, stakeholders, and non-technical team members, seamlessly blending into the equally crucial aspects of teamwork and collaboration. Projects in this field often involve diverse groups, requiring the ability to work effectively within a team.
Moreover, the value of critical thinking and problem-solving skills do more than address immediate issues — they involve a deeper understanding of root causes and the consideration of long-term implications. This approach is necessary in making well-thought-out decisions and crafting robust, sustainable solutions. In fast-paced and often deadline-driven environments of software development, knowing how to prioritize tasks, manage deadlines, and maintain project trajectory is displays your adaptability skills, as the tech field is in a state of constant evolution.
Developing these soft skills, being open to different perspectives, demonstrating empathy, and constructively resolving conflicts, complements your technical abilities, making you not just a competent developer but a well-rounded professional capable of advancing to higher roles and taking on greater challenges.
Negotiations
Your knowledge and skills will be reflected in feedback, responsibilities, and your salary.
When asked about your salary expectations during an interview, it’s a good strategy to first inquire about the salary ranges for the position. This approach allows you to give a more appropriate answer that meets with company’s budget and expectations. Take your time to assess where you fit within that range. Think of it as a spectrum: at the lower end are developers with limited experience, and at the higher end are confident experts. Position yourself accordingly based on your current level of expertise and experience.
Understanding where you fall within the salary range is not just about evaluating your current skill level. It’s also about recognizing your potential for growth and the value you can bring to the company. When considering your position in the range, factor in not only your technical abilities but also your soft skills, such as communication, teamwork, and problem-solving. These competencies are often just as critical to your role and can significantly influence your worth to the employer. Additionally, consider any unique skills or experiences that set you apart from other candidates — these can be leverage points in salary negotiations.
Negotiating your salary is an essential step in the job interview process, as it offers a chance to ensure your compensation accurately reflects your value and the market rate for your skills and experience. Keep in mind that companies often already have a budget range predetermined for each position, with the higher end allocated for candidates who demonstrate outstanding skills or unique qualifications. Effective negotiation helps in securing a salary that not only matches your worth to the company but also adheres to industry standards. Engaging in these discussions communicates to your potential employer that you value your work and have a good understanding of the industry, contributing to their perception of you as a confident and professional candidate.
The finale
As your experience grows, so does your responsibility to mentor and guide others who are just starting out. This is where your journey comes full circle — from learning to leading, from following best practices to setting them. Your growth as a developer is marked not just by the projects you complete but also by the impact you have on your team and the contribution you make to the field.
Remember, every expert was once a beginner. The qualities of foresight and risk management are not innate but cultivated through experiences, successes, and failures. Embrace each challenge as an opportunity to learn and grow, and over time, you’ll find yourself evolving into the developer you aspire to be.
If you’ve made it to the end, I’m pleased that it captured your interest. There’s so much to write about these phases of growth, possibilities, and prospects, that it’s challenging to include every each of them. It is important to acknowledge that not every point will resonate with or apply to everyone.
Thank you for reading and good luck with your career! :)
More about me and my experience here.