13

I am looking for growth opportunities. My passion has become programming and building solutions to solve business issues. My current employer, where I have been employed for 7yrs, is a small business with 15 employees. Our main business is providing B2B training & consulting. This is my only position I have ever held as a programmer.

I consider my self a full stack developer. Over the past 7 years, my programming skills have evolved from knowing what HTML looks like to developing RESTfull API's and consuming with Jquery (as an example).

I am the only programmer in the company. My role, VP Technical Architect, has allowed me to be my own boss to a certain degree. I choose the projects, the technology to use, the relevance of issues etc. Our company has took a stance that we will continue to evolve our technical services, and expand the services offered through the dashboard I have developed.

Now my dilemma; I am satisfied with my position. I love having the freedom to make decisions and call the shots, but I feel like I am missing opportunity that is provided by working for larger companies. Being the only developer, I do not have anyone to learn from. I have been only focusing on web applications / database solutions, and have never worked on mobile apps or desktop apps. When I look at a lot of the programming interview questions, I'm lost. On the other hand, if I am handed a challenge to solve in my business place, I have always been able to provide a solution thus far.

My question today is simply what is the best way to make sure I, as a employable developer, am continuing to learn. when I say learn, I want to learn employable skills and the correct way to go about solving issues.

  • 2
    "I feel like I am missing oppurtunity that is provided at working for larger companies" - what sort of opportunities do you expect to find there that you wouldn't on your company? Usually bigger companies means that "you are yet another programmer", while here you are in a unique position and with several things developers from "bigger companies" would love to have. Learning by yourself is more meaningful and long-lasting than having all the chewed knowledge being passed down to you. – DarkCygnus May 9 '18 at 19:04
  • 4
    @DarkCygnus, I tend to disagree. I don't know if OP means the same thing, but ... When I started programming, I was learning by myself, working really hard and that got me my first job. Then, I kept studying and put a lot of effort on the job, but it was definitely the environment that made me a better dev - code reviews, recommendations, conversations with others, even crazy requirements that put me in situations and challenges, I could never think of myself, or found over the Internet. So I do believe having worked on variety of projects and with different teams is crucial for your growth. – user85437 May 9 '18 at 19:25
  • 1
    @1lifeUp yes, we don't know if it is the same for OP to tell for sure, but in this case it seems that OP is being curious about what he is "missing" from working on bigger companies. I would not sacrifice a good job just to satisfy a curiosity (or at least think it through before doing so) – DarkCygnus May 9 '18 at 19:31
  • 2
    How good are your chances at getting a second programmer hired? – Erik May 10 '18 at 5:53
  • 1
    I don't see how any of the factors being discussed here (opportunity to work on a variety of projects, exposure to more experienced developers, code reviews, opportunity to learn skills, investment into employees) have ANYTHING to do with size of the employer. I've worked in tiny companies that had all those things, and gigantic companies that didn't. I believe these are valid concerns, but I think it's a mistake to link it to company size. – dwizum May 10 '18 at 20:20
7

I am in a very similar situation as you so I believe I can offer some advice and share how I view this problem.

As far as being the only programmer in the company, you are effectively irreplaceable as long as you do a good job (sounds like you are). This means many things such as job security, raises, freedom, etc. This does not come as easy in a big company. But, you are clearly not worried about this... you are worried about the transfer of knowledge, in other words, will my skills be desired if I wanted to move to another company?

From my own experience, working for a small company has great perks and some downsides as well. I have expressed to my current management that I would like another person on staff to learn from or a mentor of such. I also lack code reviews, system audits, conversations, etc.. While this definitely isn't ideal, I feel as if I have to try even harder (and thus learn more) because I don't have that other person to bounce ideas off of and critique me.

My solution: I read a lot, I read answers and questions from people on stack overflow, info security, blogs, and thoroughly read best practices from people much smarter than me. I promise you, if you continue to do this, you will wield a lot more knowledge than your average big company programmer. You will have a lot more experience with every tool or piece of software you write because you had to research it, design it, code it, test it and even try and break it all by yourself.

Not many people get to do that daily...

  • I am very confident with my job security in this company. They have provided me with equity in the company. As long as the company is around, I am sure to have a position. I get concerned when i look at job postings and even though I am creating web applications used by many users, based of job posting requirements, i feel i am not qualified for many of the listing. This is my fear. Thank you for your feedback, I willl continue to read and interact with the communities. – user87623 May 10 '18 at 19:40
  • Think of it this way, every user on stack overflow does not know 99% of the questions asked, even the most experienced people know maybe 2% of the answers. What matters is how fast you can pick something up and learn and adapt. Best of luck. – pm1391 May 10 '18 at 21:14
1

I want to learn employable skills and the correct way to go about solving issues

employable skills can differ from company to company. A way to gain more employable skills is to be aligned with your market. IT change fast and can be localize to a region, following the job posting to know the flow of the market and lookup the key word of the ads that you do not know keep you updated of your market, giving knowledge of which skills are more employable.

correct way can also be different depending of the software infrastructure, the type of users, what needs the software fulfill.

To find the correct way, you have to know multiple ways and learn the pros and the cons of each. Here some activities that leads to that:

  • Attending multiple IT events and bind with a few passionnate fellows, during the event or after, call a diner or a cafe, exchange with those peoples. Those exchanges will give you some insight of other workplaces, how they work, what stack they use and why they pick those;
  • Watching developer that are streaming while programming;
  • Being in a team at some code event where some members have different way to achieve the solution, they can also comment your solution;
  • Completing some katas on different sites and read other programmer solutions;
  • Reading books, blogs, forums and watching videos like other proposed;
  • Submitting your code to a company like Uncle Bob for reviewing it, it is expensive and some NDA may prevent it but it is free to ask to your boss;

Teaching is also a way to learn because some students can:

  • fight back your solution, discovering some flaws and may be they have a better proposition
  • share their experiences, that may lead to discover new things;
  • ask you questions that may make you dig to find the answer;

When I look at a lot of the programming interview questions, I'm lost.

If those questions are technology related, it is normal, like asking webpack specific questions to a guy who had never done any front-end would probably not result any good output.

If those questions are about design pattern, architecture, methodology, like others said, there is a lot of book and videos available and may be it is a good thing that you learn some of them. Because the communication skill when you are the sole programmer can be impacted by the long run. Like may be you are implementing design patterns but you do not know their name, when a guy ask you something related, it may be hard to share your toughs because you do not know the collective language. This can hurt your employability for your next opportunity.

0

Some ideas:

  • read books / blogs / participate in online communities
  • ask your employer to send you to conferences and trainings
  • be active in local user groups / meet ups

... and use these opportunities not just for learning technical skills, but also for networking with your peers. Form friendships and trade favors with other people in your position, and you can largely mitigate the isolation that comes with being the only programmer in a small business.

0

In your comment response to Erik's comment about hiring more staff you said

We recently started hiring freelancers in certain occasions

Be it a team that you manage or one or more freelancers, you can always pick up stuff from them. When you're the team lead, always hire people that are smarter than you are. You don't want office politics, you want to grow.

Whenever you get a new person on the team, even short-term, let them voice their opinions on all things technical, be it the code, the structure and management of projects, the way certain problems are solved or how version control is used. Listen to them. Not all of what they say might be better than what you're doing, but it will broaden your horizon.

Having several freelancers that come and go is a good way to gain many different points of view, and to pick up different styles of programming in the technology that you're using.

-1

I started out in similar roles. I stayed connected to other developers around the world on forums where I could get help when needed (and help others).

However, I did not grow as a programmer. Not one bit.

We would occasionally get a new SDK to work with and I would bust my brains about what was going on in the code as I had not been exposed to various design paradigms.

When you work alone you end up with terrible habits (I did anyway). You consistently go for the easier options and cut corners without even realising you are doing it.

Unless you work in a large organisation with a good peer review system in place you will not grow. You will not step out of your comfort zone (no matter how many articles or books you read).

Nothing wrong with small companies, many people make a great living working for them. But if your aim is to grow and evolve into something else, it probably won't happen in a small company.

  • 3
    Classic example of a classic logic error: en.wikipedia.org/wiki/Faulty_generalization. I have worked almost exclusively for very small companies and have always been the one in charge (like the OP), but that never stopped me from staying will on top of modern methods and best practices. Either way though, the biggest problem with your answer is that it doesn't answer anything: it just tells the OP, very negatively, that he/she is screwed. – Conor Mancone May 10 '18 at 16:38
  • @solarflare: I agree, I am currently in a similar position working as a lone wolf programmer, I am concerned about my next job interview when it happens. I been so lazy for the past couple years since there is no code review, standard practise, weekly meetings and such. All I was told is to get the code to work. Rest no one cares. – yonikawa Feb 24 at 17:34
  • @yonikawa the best way around that I can think of is have a portfolio to show for the next job you go to (ie open source contributions etc). Other than that I can't blame you, I took the easy path for close to 10 years too. – solarflare Feb 24 at 22:06

Not the answer you're looking for? Browse other questions tagged or ask your own question.